Questions tagged «code-golf»

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

9
这条线是否穿过那个正方形?
将第一个象限(包括正x轴,正y轴和原点)划分为1x1网格,每个网格均由其左下角的坐标标记,如下所示: 请注意,每个网格都包含其边界和顶点。使用数学符号,标为(m,n)的网格将代表正方形{(x,y) | m ≤ x ≤ m+1, n ≤ y ≤ n+1}。 鉴于形式的直线ax+by+c=0与整数a,b以及c,和由下式表示的网格(m,n)线是否通过网格,即,在给定网格中的任何点是否是上线,输出。 a b c m n output 1 1 0 0 0 true 1 1 0 1 1 false 1 1 0 0 2 false 1 1 -3 0 1 true 1 1 -3 0 0 false …

30
删除常见的前导空格
使用Python进行编码时,有时您希望在函数中使用多行字符串,例如 def f(): s = """\ Line 1 Line 2 Line 3""" (反斜杠是删除前导的换行符) s但是,如果您尝试实际打印出来,则会得到 Line 1 Line 2 Line 3 那根本不是我们想要的!领先的空白太多了! 挑战 给定一个仅由字母数字字符,空格和换行符组成的多行字符串,请从每行的开头删除所有公共空格。保证每行至少有一个非空格字符,并且没有尾随空格。输出可能没有多余的空格,无论是在整个输出之前还是之后,还是在单独的行之后(单个可选的尾随换行符除外)。 输入可以通过STDIN或函数自变量,输出可以通过STDOUT或函数返回值。您不能使用任何旨在使多行字符串变短或执行此确切任务的内置程序,例如Python的textwrap.dedent。 这是代码高尔夫球,因此以最少字节为单位的解决方案将获胜。有标准漏洞。 测试用例 "a" -> "a" " abc" -> "abc" " abc\n def\n ghi" -> " abc\ndef\n ghi" " a\n b\n c" -> "a\nb\nc" " a\n b\n …

4
最小的象棋程序
受到最近这篇文章的启发,这篇文章讲述了一位法国程序员在Assembly中编写了一个487字节的2人(人类与人类)国际象棋程序的故事,我想知道其他语言下的小型国际象棋程序有多么小。 细节 该程序只能接受合法的象棋动作。 尽管第一条规则适用于支票,但不必声明支票/将军人。 根据文章,castling不是必需的实现。 此外,您不必实现pass。 但是,您确实必须在达到第八级时允许典当晋升(您可以选择简单地强制转换为女王)。 由您决定板的显示方式-终端ASCII,GUI等 您必须显示轮到谁了。 可以在这里找到国际象棋的规则-忽略指定的比赛规则(例如,计时,碰触),并记住掷骰和传球不是必需的实现。
19 code-golf  chess 

9
计算超集
您的任务很简单: 给定整数集列表,找到集合并集。换句话说,找到包含原始集列表中的所有元素(但没有其他元素)的整数集的最短列表。例如: [1,5] and [3,9] becomes [1,9] as it contains all of the elements in both [1,5] and [3,9] [1,3] and [5,9] stays as [1,3] and [5,9], because you don't want to include 4 集使用范围表示法表示:[1,4]表示整数1,2,3,4。集也可以是无界的:[3,]表示所有整数>= 3,并且[,-1]表示所有整数<= -1。确保范围的第一个元素不大于第二个。 您可以选择采用字符串符号表示的集合,也可以使用2元素元组,并使用常量非整数作为“无限”值。您可以使用两个不同的常量来表示无限的上限和无限的下限。例如,在Javascript中,只要您在所有测试用例中都使用一致,就可以使用它[3,{}]来标记所有整数。>= 3{} 测试用例: [1,3] => [1,3] [1,] => [1,] [,9] => [,9] [,] …

8
写一个脑力激荡的经典口译员!
Brain-Flak(Brainf ** k和Flak-Overstow之间的交叉)是一种基于堆栈的深奥语言。自发布此挑战以来,该语言已得到发展和更新,但是该语言的第一个修订版被称为“经典大脑”。 您必须编写一个程序或函数,该程序或函数需要一串Brain-Flak经典代码并对其进行评估。它还将使用(可能为空)整数列表。有Brain-Flak经典程序的输入。 语言 Brain-Flak具有两个堆栈,分别称为“左”和“右”。活动堆栈从左侧开始。如果弹出或查看一个空堆栈,它将返回0。没有变量。程序启动时,每个输入将按顺序推入活动堆栈(以便最后一个输入位于堆栈顶部)。 Brain-Flak程序中唯一有效的字符是()[]{}<>,并且必须始终保持平衡。如果有无效字符,或者括号不匹配,则会出现不确定的行为。任何有效的东西。 函数有两种类型:Nilads和Monads。一个nilad是一个函数,0参数。这是所有的尼拉德人: () +1。 [] -1。 {} 弹出活动堆栈。 <> 切换活动堆栈。 在评估它们时将它们串联在一起。因此,如果我们在活动堆栈的顶部有一个“ 3”,则此代码段: ()(){} 将评估到1 + 1 + active.pop()将评估为5。将<>评估为0。 单子组采用一个参数,即一大堆Brain-Flak代码。这是所有单子: (n) 在活动堆栈上按“ n”。 [n] 将'n'打印为int和换行符。 {foo}当active.peek()!= 0时,执行foo。评估为0¹。 <foo> 执行foo,但将其评估为0。 这些函数还将返回它们内部的值,因此 (()()()) 将推3和 [()()()] 将打印3但 [(()()())] 将打印并推送3。 当程序执行完毕后,活动堆栈上剩余的每个值都将打印为整数,并在其之间使用换行符。其他堆栈上的值将被忽略。 规则: 您的程序必须支持(-128,127)范围内的数字,并且堆栈大小至少为255。如果支持更大,则更好。 下溢/上溢未定义。 样本IO: 空程序: 输入:无 输出:无 加成。资源: …

5
采访:前九
采访:前九 这是受编程面试问题启发的一系列挑战中的第一个。 您走进潜在的未来老板所在的办公室。他说:“进来坐下。” 您紧张地坐下,确保您的活泼而专业的服装没有皱纹。他向您询问有关您的学历,以前的工作经验等许多问题。您通常会诚实地回答它们,并在此处和此处添加一些修饰以使自己听起来更好。他俯身,开始再次讲话。 “您听说过打高尔夫球吗?” 为什么,是的,您喜欢打高尔夫球,并且经常在业余时间打高尔夫球。“太好了。面试的最后一部分是技术考试。您将被要求编写代码来解决一系列问题……”他递给您一张纸。您可以快速浏览一下。十分简单。现在,他为什么要问打高尔夫球的代码? “将根据您对这些问题的解决方案的总大小来给您打分。如果您的得分比所有其他候选人都低,那么这是您的工作。” 哦。“像高尔夫一样,有18个问题,分为两个问题,每组9个。请随意使用您喜欢的任何语言来解决它们;我们为您所听到的每种语言提供了编译器和解释器,当然您还可以使用其中的几种语言“ t。祝你好运!” 任务 任务1:乘法表 给定一个数字n作为输入,输出范围为的正整数的乘法表[1, n]。n将在范围内[1, 12]。所有数字应在表格中左对齐。使用该字符x的左上角。 例子: n=4 x 1 2 3 4 1 1 2 3 4 2 2 4 6 8 3 3 6 9 12 4 4 8 12 16 n=10 x 1 2 3 4 5 6 7 …

2
输入vim中的绿鸡蛋和火腿
苏斯博士撰写的《绿鸡蛋和火腿》一书以整个故事中只有50个不同的单词而闻名。 您的任务是创建一个击键序列,当在vim文本编辑器中将其应用于空文件时,将以所有默认设置从常规模式开始,生成“绿色鸡蛋和火腿”的整个文本。击键操作过程中不得加载任何其他文件-所有文本都必须在编辑器内部生成。 您的最终缓冲区必须与该文件完全一样,尽管它可以保留在最终处于的任何模式下(您不必具有最终结构<Esc>即可将其返回到正常模式)。 像<C-o>或使用Shift键来键入大写字母的和弦键击作为单个键击。 达到此目标的最少击键顺序将获胜。

7
Y2K…在2019?
今天是2019年8月10日,但是您的任务仍然涉及Y2K。奇怪吧? 创建一个可打印的程序,并在其后附加两位数字。首次运行时,应在其输出后附加00(其源代码,因为这是quine变体)。运行该输出时,没有两位数字的原始程序应该输出原始程序,但要附加01。运行该输出以获取附加02的OG程序,然后运行以03附加该程序。此链应持续到99。该程序应输出BREAKING NEWS: WORLD ENDS。 如果您的程序是Y2Kparanoia: yes: 它应该输出 Y2Kparanoia: yes00 该输出应打印 Y2Kparanoia: yes01 该输出应打印 Y2K paranoia: yes02 重复执行直到步骤100:此程序输出指定的世界末日新闻 这是代码高尔夫,因此可以遵循这些步骤进行打印的最短程序胜出。
18 code-golf  quine 

19
编写最短的程序来计算二叉树的高度
二叉树的高度是从根节点到最远离根节点的子节点的距离。 下面是一个示例: 2 <-- root: Height 1 / \ 7 5 <-- Height 2 / \ \ 2 6 9 <-- Height 3 / \ / 5 11 4 <-- Height 4 二叉树的高度:4 二叉树的定义 树是一个对象,其中包含一个带符号的整数值以及另外两个树或指向它们的指针。 二叉树结构的结构如下所示: typedef struct tree { struct tree * l; struct tree * r; int v; …

30
数字减少而字母增加
随机受数字启发而字母减少 给定的混合字母和整数(例如,列表['a', 2, 3, 'b'])增加由字母表中的(包装在一个位置的字母z到a)和减少由1的数字对于上面的例子中,输出应该是['b', 1, 2, 'c']。 输入可以是混合类型列表,定界字符串,字符串列表等。 z包装到a,但1转到0,然后0转到-1,等等。 输入将永远是[a-z]和整数。[A-Z]如果更方便,则可以选择大写字母作为输入。 输入保证为非空。 输入内容只能包含数字或字母。 例子: Input Output ['a', 2, 3, 'b'] ['b', 1, 2, 'c'] ['a', 'b', 'z'] ['b', 'c', 'a'] [-1, 0, 257, 'x'] [-2, -1, 256, 'y'] [0, 3, 1, 20382876] [-1, 2, 0, 20382875] 规则和说明 输入和输出可以通过任何方便的方法给出。 您可以将结果打印到STDOUT或将其作为函数结果返回。 输出不必与输入具有相同的格式(例如,您可以将输入作为字符串,将输出作为列表)。 …

1
完成网格填充曲折
网格填充曲折是一条封闭的路径,它至少访问一次N×NN×NN \times N正方形网格的每个像元,从未与相邻像元之间的任何边缘交叉超过一次,也从未与自身相交。例如: 填充后,网格的每个单元格都可以由以下8个图块之一表示: 以这种方式编号,以上蜿蜒的图块可以通过以下矩阵表示: 5 6 5 6 4 8 3 2 5 7 6 2 4 3 4 3 给定一组不完整的图块,您的任务是完成网格填充曲折。例如,不完整的曲折: ...可以使用0s表示缺少的图块: 5 0 0 0 6 0 0 7 0 0 0 0 0 0 3 2 4 0 0 0 0 0 3 0 0 ...可以这样完成: ...即: …

12
组成填空
假设我们在字符串上有一组特定的函数。这些函数有点像填入空格或madlib,不同之处在于它们仅接受一个输入并使用该输入来填入所有空白。例如,我们可能有一个看起来像 I went to the ____ store and bought ____ today. 如果我们将此功能应用于字符串cheese,结果将是: I went to the cheese store and bought cheese today. 我们可以将这些函数表示为字符串的非空列表,其中的空格只是字符串之间的空白。例如,我们上面的函数将是: ["I went to the ", " store and bought ", " today."] 在这种表示形式下,此类每种功能只有一种表示形式,而每种表示形式仅一种功能。 一件真正整洁的事情是,这些功能的集合在组合时是封闭的。也就是说,我们两个功能的组合始终是这些功能中的另一个。例如,如果我用 ["blue ", ""] (添加blue到输入的函数)我们得到函数: ["I went to the blue ", " store and …

7
3x3x3立方体的表面作为图形
您的任务是生成具有54个顶点的图形,每个顶点对应于Rubik立方体上的一个构面。如果相应的小平面共享一个边,则两个顶点之间会有一条边。 规则 您可以选择输出邻接表,邻接矩阵,边列表或任何合理的格式来表示算法中的图形。(在大多数情况下,人类可读的视觉图通常在算法中不是合理的格式。) 您可以使每个顶点彼此相邻,也可以不使它们彼此相邻。 您可以为每个边沿包括两个方向(对于自循环计数为一或两次),也可以为每个边沿精确地输出一次,但不能混合使用。 您可以根据需要对顶点重新编号,跳过一些数字,甚至对顶点使用非数字标签。如果编号不明显,您还应该发布编号,以便其他人可以更轻松地检查您的答案。 这是代码高尔夫球。以字节为单位的最短代码获胜。 输出示例 这是示例中使用的顶点编号: 0 1 2 3 4 5 6 7 8 9 10 11 18 19 20 27 28 29 36 37 38 12 13 14 21 22 23 30 31 32 39 40 41 15 16 17 24 25 26 33 34 …

22
以指数级增长!
挑战 如果有一个基1&lt;b&lt;101&lt;b&lt;101 < b < 10和索引,输出术语,定义如下:t≥1t≥1t \ge 1xtxtx_t x1=1110x1=1110x_1 = 11_{10} xi+1xi+1x_{i+1}是通过将转换为以为底,然后以为底重新解释其数字而获得的xixix_ibbb101010 输出应以为底101010 第5项第5项的基本步骤是: x1=1110x1=1110x_1 = 11_{10}。 1110=2151110=21511_{10} = 21_{5}所以x2=2110x2=2110x_2 = 21_{10}。 2110=4152110=41521_{10} = 41_{5}所以x3=4110x3=4110x_3 = 41_{10}。 4110=13154110=131541_{10} = 131_{5}所以x4=13110x4=13110x_4 = 131_{10}。 13110=1011513110=10115131_{10} = 1011_{5}所以x5=101110x5=101110x_5 = 1011_{10}。 我们输出字符串"1011"或整数1011。 测试用例 注意:这些是被索引的 base 2, term 5 --&gt; 1100100111110011010011100010101000011000101001000100011011011010001111011100010000001000010011100011 base 9, term 70 …
18 code-golf  number 

10
进/出调试器行为不同的程序
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 8个月前关闭。 挑战在于编写确定性程序(任何语言/操作系统),该程序不带参数或其他输入,并且在调试器中的行为与未调试时的行为不同。 例如,程序在调试时可能会输出某些内容,而在调试时可能不会输出任何内容。或在每种情况下输出不同的内容。否则可能在调试时崩溃,但在未调试时不会崩溃。或相反亦然。 注意事项和说明: 时间差异不计算在内。 允许翻译语言。 为了强调确定性:在调试环境内外,行为都必须是完全可复制的。 调试器本身的存在应该是两种情况之间的唯一区别。 告诉调试器添加输入(stdin或argv ENV或其他)是作弊的,调试器应按原样运行程序。 禁止在调试和非调试运行之间更改环境(例如,在虚拟机或其他操作系统中运行,或更改操作系统设置,例如内存限制)。 最短的代码胜出。我可能会颁发赏金,以揭示一些有关调试器如何工作的有趣信息。
18 code-golf 

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.