Questions tagged «code-golf»

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

7
一维有限平铺
该挑战的目的是确定是否可以平铺一维块的集合以形成有限的连续块。 阿片是零和一的一个非空的,有限序列的开始和结束与一个。一些可能的作品是1,101,1111,1100101。 平铺是指将小块排列成一个连续的块。一件中的一个可以占据零的位置,但另一件中的一个不能占据零的位置。 同样地,如果我们将一个视为“实心材料”,将零视为“孔”,则这些零件应适合于形成单一拉伸,而不会留下任何孔。 要形成平铺,只能沿着其一维空间移动碎片。(它们不能拆分或反映)。每件仅使用一次。 例子 三块101,11,101可以平铺如示于下,其中每个片与所需的移位表示: 101 11 101 所以获得的拼贴是 111111 作为第二个示例,片段11011和1001101不能平铺。特别是转变 11011 1001101 无效,因为有两个会发生冲突;和 11011 1001101 无效,因为结果将包含零。 附加规则 该输入是一个或多个片段的集合。允许使用任何合理的格式;例如: 字符串列表,其中每个字符串可以包含两个不同的一致字符; 几个数组,其中每个数组包含一块的位置; 一列(奇数)整数,例如每个数字的二进制表示形式定义了一个片段。 的输出应该是一个truthy值,如果平铺是可能的,和一个falsy值否则。输出值不必保持一致;也就是说,对于不同的输入,它们可以不同。 允许使用任何编程语言编写程序或功能。禁止出现标准漏洞。 以字节为单位的最短代码获胜。 测试用例 每个输入在不同的行上 特鲁西 1 111 1, 1 11, 111, 1111 101, 11, 1 101, 11, 101 10001, 11001, 10001 100001, 1001, 1011 10010001, …

30
车道上的数字
输入: 整数列表 输出: 将每个数字(和减号)按顺序放在自己的通道中-0123456789,忽略任何重复的数字。 例: 输入: [1,729,4728510,-3832,748129321,89842,-938744,0,11111] 输出: -0123456789 <- Added as clarification only, it's not part of the output 1 2 7 9 012 45 78 - 23 8 1234 789 2 4 89 - 34 789 0 1 挑战规则: 数字中的任何重复数字都将被忽略。 I / O可以采用任何合理的格式。输入可以是字符串或字符数组的列表/数组。输出可以是字符串,字符,字符矩阵等的列表。 尾随空格是可选的。 任意数量的前导或尾随新行都是可选的(但在行之间不可以)。 输入将始终包含至少一个整数 你必须至少支持一个整数的范围-2,147,483,648,虽然2,147,483,647(32位)。 输入列表将永远不会包含-0,00(或两个以上的零)或带有前导零的整数(即012)。 …

30
产生一副扑克牌
这是代表标准纸牌的数组,其中包括两个小丑。 [ "AS", "2S", "3S", "4S", "5S", "6S", "7S", "8S", "9S", "10S", "JS", "QS", "KS", "AD", "2D", "3D", "4D", "5D", "6D", "7D", "8D", "9D", "10D", "JD", "QD", "KD", "AH", "2H", "3H", "4H", "5H", "6H", "7H", "8H", "9H", "10H", "JH", "QH", "KH", "AC", "2C", "3C", "4C", "5C", "6C", "7C", "8C", "9C", …

16
定义素数的不同方法
我最喜欢的质数定义之一如下: 2是最小的素数。 如果大于2的数字不能被较小的质数整除,则为质数。 但是这个定义似乎是任意的,为什么2?为什么没有其他号码?好吧,让我们尝试其他一些数字来定义n-素数,这样 n是最小的n-素数。 如果大于n的数字不能被较小的n-素数整除,则为n-素数。 任务 这里的任务是编写一个接受两个输入的程序,一个正整数n和一个正整数a。然后它将确定a是否为n-素数。您的程序应输出两个不同的值,一个表示“是,它是n-素数”,另一个表示“否,它不是n-素数”。 这是一个代码问题,因此答案将以字节计分,而字节数越少越好。 测验 以下是n = 2至n = 12的前31个素数的列表(1是唯一的1个素数) n=2: [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127] n=3: [3,4,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127] n=4: [4,5,6,7,9,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113] n=5: [5,6,7,8,9,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113] n=6: [6,7,8,9,10,11,13,15,17,19,23,25,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107] n=7: [7,8,9,10,11,12,13,15,17,19,23,25,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107] n=8: [8,9,10,11,12,13,14,15,17,19,21,23,25,29,31,35,37,41,43,47,49,53,59,61,67,71,73,79,83,89,97] n=9: [9,10,11,12,13,14,15,16,17,19,21,23,25,29,31,35,37,41,43,47,49,53,59,61,67,71,73,79,83,89,97] n=10: [10,11,12,13,14,15,16,17,18,19,21,23,25,27,29,31,35,37,41,43,47,49,53,59,61,67,71,73,79,83,89] n=11: [11,12,13,14,15,16,17,18,19,20,21,23,25,27,29,31,35,37,41,43,47,49,53,59,61,67,71,73,79,83,89] n=12: [12,13,14,15,16,17,18,19,20,21,22,23,25,27,29,31,33,35,37,41,43,47,49,53,55,59,61,67,71,73,77]

14
圆形胶带令人兴奋吗?
Brainfuck衍生物 让我们定义一种类似于Brainfuck的简单编程语言。它有一个双向的单元格带,每个单元格容纳一位。所有位的起始位置均为0。磁带上的移动头起始位置为0。程序是一个在字符上的字符串<>01!,从左到右执行,具有以下语义: < 将头部向左移动一步。 > 将头部向右移动一步。 0 在当前单元格中放入0。 1 在当前单元格中放入1。 ! 翻转当前单元格。 没有循环,因此n个字符的程序将在n个步骤之后终止。如果在执行结束时所有单元格都包含0,则程序很无聊,如果至少有1,则令人兴奋。请注意,未指定磁带的大小,因此,根据实现的不同,它可能是双向无限的或圆。 一个示例程序 考虑该程序1>>>!<<<<0>!>>>!。在无限磁带上,执行如下: v 00000000000000 Put 1 v 00000100000000 Move by >>> v 00000100000000 Flip v 00000100100000 Move by <<<< v 00000100100000 Put 0 v 00000100100000 Move by > v 00000100100000 Flip v 00000000100000 Move by >>> v …

9
我需要几个硬纸板数字?
我需要准备用纸板制成的数字以显示一些数字(示例)。我事先不知道应该显示哪个数字-我唯一知道的是它不大于n。 我应该准备多少个硬纸板数字? 例: n = 50 要显示0 ... 50范围内的任何数字,我需要以下数字: 零,用于显示数字0或任何其他整数 数字1、2、3和4的两个副本,用于显示相应的数字 数字5、6、7和8的一个副本,如果它们在数字中显示为最低有效数字 永远不需要数字9,因为我可以改用反数字6 总计:13位数字 测试用例(每一行都是“输入;输出”格式的测试用例) 0 1 1 2 9 9 11 10 50 13 99 17 100 18 135 19 531 22 1000 27 8192 34 32767 38
32 code-golf  number 

6
在矩阵中查找蛇
挑战 给定一个二进制矩阵和一个二进制字符串,确定是否可以从矩阵的任何点开始找到该二进制字符串,然后在任何后续点向任意方向移动以形成二进制字符串。就是说,是否可以在矩阵内部找到折起的字符串? 字符串只能以90度或180度折叠(边缘连接;曼哈顿距离1),并且不能在任何一点重叠。 例 让我们来看下面的例子: Matrix: 010101 111011 011010 011011 Snake: 0111111100101 这是一个真实的测试案例。我们可以看到蛇在以下位置折叠起来: 0-1 0 1 0 1 | 1 1 1-0 1 1 | | | | 0 1 1 0-1-0 | | 0 1-1 0 1 1 规则 适用标准漏洞 如果愿意,您可以将字符串的长度以及矩阵的宽度和高度作为输入 您可以将二进制矩阵和二进制字符串作为多行字符串/字符串数组/换行连接的字符串/其他任何连接的字符串和字符串 您可以将维度作为平面数组而不是几个参数 您的程序必须在一分钟之内完成任何长度不超过10的字符串的任何5 x 5矩阵 局限性 矩阵不一定是正方形 字符串将为非空 …

30
等于,等于或等于!
编写尽可能短的代码,如果两个给定的整数值相等或它们的总和或绝对差为5,则返回true。 测试用例示例: 4 1 => True 10 10 => True 1 3 => False 6 2 => False 1 6 => True -256 -251 => True 6 1 => True -5 5 => False 我在python2中能想到的最短长度是56个字符: x=input();y=input();print all([x-y,x+y-5,abs(x-y)-5])<1 -9,谢谢@ElPedro。它采用x,y格式的输入: x,y=input();print all([x-y,x+y-5,abs(x-y)-5])<1

20
用数字平方
人们不断告诉我,数字的平方就是数字乘以本身。这显然是错误的。对数字求平方的正确方法是将其堆叠成一个正方形,方法是将其堆叠在其顶部等于其位数的次数,然后从所得平方中读取所有数字,水平和垂直(仅从左到右)和垂直(从上到下),然后将它们加在一起。因此,对于数字123,首先创建正方形: 123 123 123 然后,从正方形中取出所有行和列,并将它们加在一起: 123+123+123+111+222+333 这给我们一个结果1035。 对于负数,您通常进行堆叠(请记住,您仅计算位数,因此长度中不包括负号),然后正常读取水平数(带负号),然后忽略负号垂直数字。因此,对于数字,-144我们得到平方: -144 -144 -144 这给了我们-144-144-144+111+444+444,等于567 对于只有一位的数字,平方始终等于加倍的数字(水平读取一次,垂直读取一次)。所以4给我们 4 这给我们4+4,等于8。 对于带有小数部分的数字,请正常堆叠(请记住,在堆叠数字的次数中仅对数字进行计数,因此不计算小数点),并且在读取垂直数字时忽略小数点符号。例如,数字244.2给我们 244.2 244.2 244.2 244.2 这给我们244.2+244.2+244.2+244.2+2222+4444+4444+2222,等于14308.8。 小数或复数不能平方。 你的任务: 我已经厌倦了以手工方式对数字求平方,所以我决定自动化该过程。给我写一个程序或函数,它以浮点数或字符串(无论您愿意使用什么)作为输入,并以我的方式返回对它进行平方的结果。 例子: 123 -> 1035 388 -> 3273 9999 -> 79992 0 -> 0 8 -> 16 -6 -> 0 -25 -> 27 -144 -> 567 123.45 …
32 code-golf  number 

2
Office Escape:计划出路!
这是最后的冲刺……您的团队有一半生病了。您工作到很晚,只是做最后一天的工作,期待...为什么灯会熄灭?我不记得保安人员来了...哦,不!我把钥匙留在家中! 随着局势的恐惧逐渐加深,您决定要逃脱。 任务摘要 要实现逃生,您需要一个计划!但是,您知道任何计划都有失败的可能,并且不同的计划需要不同的努力。 由于感到饥饿,疲倦并且是一名工程师,您决定编写一个简短的程序来确定逃避复杂事件的最佳方法,从而平衡对成功可能性及其所需工作量的担忧。 您绘制建筑物的地图: ####################### # = # ! = ! <-- window # ! = # (freedom!) #################= # # # = # # # = # # # = # # o ! # # ! = # ##| ! ## # ! = # ####################### …

17
映射输入的ASCII字符
确保看到另一个挑战,反向ASCII字符映射! ASCII字符集(美国信息交换标准代码)是使用最广泛的字符编码标准。ASCII码表示计算机,电信设备和其他设备中的文本。 挑战 您面临的挑战是在用户输入ASCII字符集时打印它们的映射。GIF: 用户输入每个ASCII字符后,输出应如下所示: 映射 每个字符在16x6逻辑网格上都有一个分配的位置,从左上角的空格字符开始,然后换行以使数字0出现在其下方。 收到可打印的ASCII输入时,请在其分配的屏幕位置打印该ASCII字符,而不删除当前在屏幕上的任何字符。 规则 您的程序仅需要将可打印的ASCII字符映射0x20到0x7E。 在输入所有可打印的ASCII字符之前,您的程序不得终止并继续将字符映射到屏幕。从这里,您的程序可以终止,也可以运行到Neverland中。 您的程序可以按照您喜欢的任何方式将字符映射到电子表格,表格,控制台窗口或图形窗口。 无论您如何显示映射,都必须实时更新(一旦收到用户输入)。 如果您的程序没有以静默方式读取输入,则必须将光标移开,这样文本就不会成为地图的障碍。 救命 这是我用来生成GIF的伪代码算法: loop forever c = input y_coord = c / 16 x_coord = c - y * 16 if c is printable print c at (x_coord * 2 + 1, y_coord + 1) end if …

30
前n个没有连续相等的二进制数字的数字
该序列包含以下形式的二进制数字的十进制表示形式:10101...,其中第n个项具有n位。 仅显示数字的二进制和十进制表示形式之间的关系,可能最容易解释该序列: 0 -> 0 1 -> 1 10 -> 2 101 -> 5 1010 -> 10 10101 -> 21 101010 -> 42 挑战: 取一个输入integer n,并返回序列中的前n个数字。您可以选择序列0索引或1索引。 测试用例: n = 1 <- 1-indexed 0 n = 18 0, 1, 2, 5, 10, 21, 42, 85, 170, 341, 682, 1365, 2730, 5461, …

30
n到b的下一个幂有多远?
设n和b为大于的正整数1。 输出n到的下一个幂的距离b。 对于n=5和b=3,3from 的下一个幂5是9(3^2 = 9),所以输出是9 - 5 = 4。 对于n=8和b=2,2from 的下一个幂8是16(2^4 = 16),所以输出是16 - 8 = 8。请注意,在此示例n中2,这是的幂。 测试用例: n b output 212 2 44 563 5 62 491 5 134 424 3 305 469 8 43 343 7 2058 592 7 1809 289 5 336 694 3 35 324 …

13
大码…为您服务!
在《黑暗骑士》崛起的开幕式上,中央情报局特工与小人贝恩之间进行了相当尴尬的对话。 中央情报局特工: “如果我把那个[面具]拉下来,你会死吗?” 贝恩: “这将非常痛苦……” 中央情报局特工: “你是个大个子。” 贝恩: “……给你。” 不确定贝恩是否打算说“为您感到痛苦”或“为您大佬”。让我们通过代码高尔夫彻底解决这个问题! 挑战 您的任务是编写一个程序,该程序根据输入的整数重新排列上述对话框的顺序。 CIA特工对话的话是: If I pull that off will you die? You're a big guy. 贝恩的对话词是: It would be extremely painful... for you! 请注意die?,You’re,painful...并且you!被认为是单个单词。 给定整数n作为输入,将其转换为二进制 从左到右读取二进制数字,如果是1,则从CIA代理对话框中输出下一个单词,如果是,则从Bane对话框中输出下一个单词0。单词应以空格分隔。扬声器更改时,添加换行符。另外,在每个对话行前加上演讲者姓名(BANE:或CIA:)。 您可以假设输入始终以二进制形式的1开头,并具有12个1和7个0。 例 522300 转换为二进制: 1111111100000111100 数字以8个开头,因此我们从CIA的座席对话中输出前8个字,并在它们前面加上CIA: CIA: If I pull that off will you …
32 code-golf 

1
生成金字塔方案代码
金字塔计划是@ ConorO'Brien开发的一种语言。在金字塔计划中,您编写的代码如下所示: ^ ^ / \ /3\ / \ --- / + \ ^-------^ /9\ /3\ /123\ --- ----- 现在,该代码具有两个明显的特性:很难解析,也很难编写。Conor解决了第一个问题,但是解决第二个问题将是您的工作。 上面的代码由PyramidScheme解释器处理为嵌套的字符串数组,如下所示: [["+", ["9123", "3"]], "3"] 您的任务是编写一个给定嵌套字符串数组的程序或函数,输出或返回重新创建的PyramidScheme代码。您可以假设输入数组将始终有效。 金字塔是等腰三角形。顶部是^,侧面与/和对角倾斜\,底部是-。两个底角为空或包含其他金字塔的起点,它们是自变量。中间充满了金字塔的名称,忽略了换行符。 解析器将代码转换为可用格式的方式如下。首先,它会扫描顶级金字塔。如果不带参数,则用单个字符串表示它并继续前进。否则,它表示为数组["name",[arg1,arg2]]或["name",[arg1]]。参数是金字塔左下角和右下角的金字塔,它们可以是字符串,也可以是如上所述的更多数组。您可能会注意到它有点像Lisp,在这种情况下,您可能还注意到了语言名称的双关语。金字塔被完全表示后,解析器将移动到下一个金字塔。 这是代码高尔夫,最短的代码获胜! 测试用例:这些不是唯一有效的输出,它们是有效输出的示例。 [["+", ["9123", "3"]], "3"] ^ ^ / \ /3\ / \ --- / + \ ^-------^ /9\ /3\ /123\ --- …

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.