Questions tagged «code-golf»

Code-golf是在最小的源代码字节中解决特定问题的竞赛。

11
汇编语言奎因
写出尽可能短的汇编语言quine。 除非有print-quine说明或等效说明,否则请使用所需的任何ISA 。示例包括x86,MIPS,SPARC,MMIX,IBM BAL,MIX,VAX,JVM,ARM等。 您可以针对_printfI / O 链接到C标准库的功能(或Java等效于JVM字节码的功能)。 长度将根据指令数和数据段的大小进行判断。解决方案必须至少包含两个说明。 奎纳应该打印出汇编代码,而不是印刷的机器代码。

19
基本计算器
您必须编写一个程序来评估将输入到计算器中的字符串。 程序必须接受输入并输出正确答案。对于不具有标准输入/输出功能的语言,您可以使用readLine和print。 要求 不使用任何“评估”功能 可以处理浮点数和负数 至少支持+,-,*和/运算符 可以处理在运算符和数字之间包含一个或多个空格的输入 从左到右评估表达式 最短的程序将获胜。如果出现平局,则首先提交的程序将获胜。 您可以假定输入有效并且遵循正确的格式 测试用例 输入项 -4 + 5 输出量 1 输入项 -7.5 / 2.5 输出量 -3 输入项 -2 + 6 / 2 * 8 - 1 / 2.5 - 18 输出量 -12

30
检测旋转的琴弦
从中读取两个字符串stdin。如果一个字符串是另一字符串的旋转版本,则 输出Yes。 否则输出No 测试用例 输入项 CodeGolf GolfCode 输出量 Yes 输入项 stackexchange changestackex 输出量 Yes 输入项 stackexchange changestack 输出量 No 输入项 Hello World 输出量 No
20 code-golf  string 

30
首先对奇数进行排序
重新排列给定列表,使所有奇数出现在所有偶数之前。除此要求外,输出列表可以按任何顺序排列。 输入将仅包含整数,但它们可以为负数,并且可以重复,并且可以按任何顺序出现。 最短的解决方案获胜。 测试用例 [1,2] → [1,2] [2,1] → [1,2] [1,0,0] → [1,0,0] [0,0,-1] → [-1,0,0] [3,4,3] → [3,3,4] [-4,3,3] → [3,3,-4] [2,2,2,3] → [3,2,2,2] [3,2,2,2,1,2]→ [1,3,2,2,2,2]或[3,1,2,2,2,2] [-2,-2,-2,-1,-2,-3]→ [-1,-3,-2,-2,-2,-2,]或[-3,-1,-2,-2,-2,-2,] [] → []

30
码点总和奎因
该站点上的所有quine挑战都集中在字节数或字符本身上。这是不同的。您面临的挑战是编写一个程序,该程序产生的输出的代码点总和与源代码点总和相同。 产生一个代码点总和: 在程序的字符集中找到字符的值。 例如- FOO以ASCII:F= 70,O= 79,O= 79 将它们全部加在一起。ASCII的 代码点总和FOO:F+ O+ O= 70 + 79 + 79 = 228。 如果源代码为ABC,而输出为,则ASCII和求和的一个例子!!!!!!。这是因为源的ASCII值的总和(A= 65,B= 66,C= 67,总和= 198)与输出中的ASCII值的总和(!= 33、33 * 6 = 198) 。BBB也将是有效的输出cc。 规则 您的程序不得为反向,随机播放,错误或任何其他类型的“真实”字样。详细说明:如果输出包含与源相同的所有字符,则无效。 您的程序不能将编译器/解释器的任何错误/警告用作输出。 程序源必须使用与输出相同的代码页。 您的程序可以使用在挑战之前创建的任何代码页。 除换行和制表符外,程序的输出中不得包含任何不可打印的字符(例如ASCII 0至31,或127以上)。 有标准漏洞。 如果源和/或输出具有尾随换行符,则必须将其包括在代码点总和中。 最终字节计数(分数)中需要包含编译器标志,而不是源代码点总和。 输出/源不能为空。 计分 以字节数(不是代码点总和)中最短的答案为准。请使用以下标头格式答案: # Jelly, 12 bytes, sum 56 (SBCS) …
20 code-golf  quine 

9
汉明数
给定一个正整数,按顺序打印许多汉明数。 规则: 输入将为正整数Ñ ≤ 1 ,000 ,000n≤1,000,000n \le 1,000,000 输出应为https://oeis.org/A051037的前n个术语 执行时间必须小于1分钟 这是代码高尔夫球;最短代码胜出

5
硬币问题
背景 虚构的高尔夫国家的官方货币是foo,并且流通的硬币只有三种:3foos,7foos和8foos。可以看到,使用这些硬币不可能支付一定的金额,例如4 foos。然而,可以形成所有足够大的数量。您的工作是找到硬币无法形成的最大数量(在这种情况下为5个foos),这就是硬币问题。 输入项 您的输入是一个正整数列表,代表正在流通的硬币价值。对此有两点保证:L = [n1, n2, ..., nk] 的元素的GCD L为1。 L 不包含数字1。 它可能未分类和/或包含重复项(请考虑特别版硬币)。 输出量 由于GCD L为1,所以每个足够大的整数m都可以表示为其元素的非负线性组合。换句话说,我们有 m = a1*n1 + a2*n2 + ... + ak*nk 对于一些整数。您的输出是无法以这种形式表示的最大整数。提示一下,已知输出总是小于,如果和是(reference)的最大和最小元素。ai ≥ 0(n1 - 1)*(nk - 1)n1nkL 规则 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。如果您的语言对此具有内置操作,则可能无法使用。对时间或内存效率没有任何要求,只是您应该能够在发布答案之前评估测试用例。 在我发布此挑战后,用户@vihan指出Stack Overflow有一个完全相同的副本。基于此元讨论,此挑战将不会被删除。但是,我要求所有基于SO版本的答案都应引用原文,并赋予其社区Wiki状态,如果原始作者希望在此处发布其答案,则将其删除。 测试用例 [3, 7, 8] -> 5 [25, 10, 16] -> 79 [11, …

7
滚动奎因骰子
创建一个输出自身的程序。 但是,如果源代码重复了n次(意味着将源代码的副本连接到末尾n-1次),则输出原始源代码的概率应该为1 / n,输出源代码的概率为1 / n。源代码重复两次,输出源代码的1 / n概率重复3次,...,输出源代码的1 / n概率重复n次。 例如,如果您的程序是foobar,则它应始终准确输出foobar。但是,如果运行foobarfoobarfoobarfoobar的话,应该是每一个输出的1/4的机会foobar,foobarfoobar,foobarfoobarfoobar和foobarfoobarfoobarfoobar。 每个可能的输出的分布应该相等 除了应用标准I / O方法和禁止标准漏洞外,还应用标准quine规则(无法访问其自己的源等)。 这是代码高尔夫球,所以最短答案以字节为单位

6
使用两个链接的程序,输出最大为n的序数
...序号(或序数)是按顺序表示位置或等级的单词。 来自维基百科。 您的任务是使用2个单独的程序(可以用2种不同的语言制作)来输出从first到的序数序列nth。您将输出完整的单词second,而不是2nd。 序数的挑战以前曾提出过,特别是在本条目中。在这一挑战中,普通物品仅仅是促进下文详述的独特条件的一种手段。 第1部分 您必须编写一个程序,当输入时n必须输出任何东西。 n始终是一个不大于999的正非零整数。 有效输出包括但不限于: 任何输出到stdout/ stderr/等 创建文件/文件夹/等 图形界面或任何类型的图像 什么都可以。 第2部分 您必须创建一个程序,该程序使用第1部分的程序的输出来输出序数序列,从1(第一个)到n第1部分中分析的序数。 大体情况: 第2部分的总字节数不得超过第1部分的总字节数(小于或等于)。 输出条件: 不区分大小写。 输出必须仅包含序数序列(仅包含字符aZ)和空格(允许换行)。 可以输出到任何源,只要在执行期间或执行之后可见即可。 只要程序输出正确,就不需要终止程序。 输出不需要具有任何语法,但可以选择包含它(连字符,逗号,“和”等)。nine hundred ninety ninth和一样可以接受nine hundred and ninety-ninth。 样本输出 n8 在哪里 FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH 计分 获胜条件的层次结构为: 第1部分中的最低字节数 第2部分中的最低字节数 Entry #1 | Part 1 = …
19 code-golf 

12
计算Landau函数
Landau函数 (OEIS A000793)给出对称组元素的最大阶数。在此,置换的顺序是最小的正整数k,因此\ pi ^ k是恒等式-等于置换的循环分解中循环长度的最小公倍数。例如,g(14)= 84,这是通过(1,2,3)(4,5,6,7)(8,9,10,11,12,13,14)实现的。G(n )G(ñ)g(n)小号ñ小号ñS_nππ\piķķkπķπķ\pi^kG(14 )= 84G(14)=84g(14) = 84 因此,G(n )G(ñ)g(n)也等于厘米(一个1个,... ,一ķ)厘米⁡(一种1个,…,一种ķ)\operatorname{lcm}(a_1, \ldots, a_k)的最大值,其中一种1个+ ⋯ + 一个ķ= n一种1个+⋯+一种ķ=ña_1 + \cdots + a_k = n其中一种1个,... ,一ķ一种1个,…,一种ķa_1, \ldots, a_k正整数。 问题 编写一个计算Landau函数的函数或程序。 输入项 正整数ññn。 输出量 G(n )G(ñ)g(n)是对称组小号ñ小号ñS_n元素的最大阶数。 例子 n g(n) 1 1 2 2 3 3 4 4 5 6 …

2
找到最小矩形的面积以包含最大为n的正方形
这是通常类型的序列问题,适用于OEIS序列A038666。也就是说,请执行以下任一操作: 接受否或任何输入,并输出A038666,直到宇宙热死为止。 接受一个正整数作为输入,并输出nnn A038666或其第一的第术语nnn条款。(如果使用000而不是111索引,则当然也必须1在0输入时输出。) 该nnn A038666的任期个矩形是其中最小的区域包含大小的非重叠广场1×1,2×2,…n×n1×1,2×2,…n×n1\times1,2\times2,\dots n\times n如果你使用111 -indexing。 例: 可以包含大小为1×11×11\times1到4×44×44\times4非重叠正方形的最小面积矩形的尺寸为7×57×57\times5: 4 4 4 4 3 3 3 4 4 4 4 3 3 3 4 4 4 4 3 3 3 4 4 4 4 2 2 1 x x x x 2 2 x 因此,a(4)=7×5=35a(4)=7×5=35a(4)=7\times5=35(111索引)。 类似地,包含大小为1×11×11\times1到17×1717×1717\times17 非重叠正方形的最小面积矩形的尺寸为39×4639×4639\times46,因此a(17)=39×46=1794a(17)=39×46=1794a(17)=39\times46=1794(111索引)。

4
计算碗桩高度
碗堆高度 这个难题的目的是计算一堆碗的高度。 碗被定义为没有厚度的径向对称装置。它的轮廓形状是一个偶数多项式。堆栈由半径的列表描述,每个半径与一个偶数多项式关联,作为输入作为系数列表给出(例如,该列表3.1 4.2代表多项式3.1 x2+ 4.2 x43.1X2+4.2X43.1x^2+4.2x^4)。 多项式可以具有任意次数。为了简单起见,将堆的高度定义为最顶部碗的中心的高度(有关示例,请参见示例3的图)。 测试用例采用以下格式radius:coeff1 coeff2 ...:每行以代表碗半径的浮点数开头,后跟冒号和空格分隔的列表,其中包含偶数幂的系数,以幂2开头(隐含零常数部分)。 。例如,该行2.3:3.1 4.2描述了一碗半径2.3和形状多项式3.1 * x^2 + 4.2 * x^4。 例子1 42:3.141 描述一个零高度的堆,因为单个碗没有高度。 例子2 1:1 2 1.2:5 1:3 描述了一堆高度2.0(请参见图)。 例子3 1:1.0 0.6:0.2 0.6:0.4 1.4:0.2 0.4:0 10 描述一堆高度为0.8的桩(请参见图中的绿色箭头)。 这是代码高尔夫,所以最短的代码获胜。 我有参考代码。 编辑: 参考实现依赖于一个库来计算多项式的根。您也可以这样做,但不必这样做。由于参考实现只是一个(非常好的)数值逼近,因此我将接受在普通浮点公差范围内能产生正确结果的任何代码。 &lt; ε&lt;ε<\varepsilon 这个难题的另一个变体是通过重新排序碗来最小化高度。我不确定是否有快速的解决方案(我想这很困难)。如果有人有更好的主意(或可以证明NP完整性),请告诉我!

10
根据重新排序的子集对主列表进行重新排序
我最近在工作时遇到一个问题,我有两个列表:一个主列表和一个较小的列表,其中包含主列表中项目的子集,可能以不同的顺序排列。我需要对主列表进行重新排序,以使子集中的项目以相同的顺序出现,而不更改列表中未找到的项目的顺序,并尽可能将项目保持在同一位置。好吧,这听起来可能令人困惑,所以我将其分解: 主清单定义了项目的默认顺序。 子集列表定义某些项目的相对顺序。 如果主列表中有两个元素按照子集列表的顺序排列不正确,则应将主列表中较早的项目移到最早的索引,该索引相对于子集列表中的其他项目位于正确的位置。(即紧接在后面的项目之后) 您的任务是实现此重新排序算法。 示例测试用例 Master: [1, 2, 3] Subset: [] Result: [1, 2, 3] Master: [9001, 42, 69, 1337, 420] Subset: [69] Result: [9001, 42, 69, 1337, 420] Master: [9001, 42, 69, 1337, 420, 99, 255] Subset: [69, 9001, 1337] Result: [42, 69, 9001, 1337, 420, 99, 255] …

8
双字母隐写术
隐秘术将给定的消息隐藏在给定的载体内,从而产生看上去并不可疑的包装。对于此挑战,您将编写一个程序,该程序将ASCII消息和ASCII载体作为输入,并返回或打印与该载体相同的程序包,但与该消息相对应的字符以与它们相同的顺序被加倍。消息。 规则: 如果载体已经多次包含相同字符的序列,并且不使用它们对消息的字符进行编码,则程序会将它们简化为单个字符。 如果载体未按正确的顺序包含消息字符,则程序可能不返回任何内容,载体本身或错误。 您可以假定消息和运营商是非空的ASCII字符串。 大写很重要:A不等于a。 当一个以上的软件包有效时,您的程序可能会输出其中的任何一个或全部。 空格是与其他任何字符一样的字符。 测试用例: 邮件载体包装 “嗨”“到了吗?” “它来了吗?” 或“它到达了吗?” “先生”“到了吗?” “有来吗?” “ foo”“到达了吗?” “”或“到达了吗?” 或错误。 “汽车”“猫很酷。” “ CCaats arre col。” “汽车”“猫很酷。” “”或“猫很酷。” 或错误。 “沙发”“沙发”“ CCoouucchh” “ oo”“ oooooooooo”“ oooo” “ o o”“ oooo oooa”“ oo ooa” 这是代码高尔夫,所以最少的字节获胜。

15
匹配罗马数字
挑战 给定一些输入字符串,如果它表示介于1(= I)和3999(= MMMCMXCIX)之间的正确罗马数字,则返回真实值,否则返回假值。 细节 输入是一个仅包含字符的非空字符串IVXLCDM。 罗马数字(我们在本次挑战中在此处使用)的定义如下: 我们仅使用以下符号: Symbol I V X L C D M Value 1 5 10 50 100 500 1000 要定义哪些字符串实际上是有效的罗马数字,可能最容易提供对话规则:写一个十进制数字a3 a2 a1 a0(每个ai数字代表一个数字。例如,表示792我们有a3=0, a2=7, a1=9, a0=2。)作为罗马数字,我们将其分解变成数十的力量。十的不同幂可以表示如下: 1-9: I, II, III, IV, V, VI, VII, VIII, IX 10-90: X, XX, XXX, XL, L, LX, LXX, LXXX, …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.