Questions tagged «code-golf»

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

13
可视化位编织
神秘的编程语言Evil对字节值进行了有趣的操作,称之为“编织”。本质上是字节的八位的排列(因为模式是对称的,所以我们从哪一端开始计数并不重要): 位0移至位2 位1移至位0 位2移到位4 位3移至位1 位4移至位6 位5移至位3 位6移至位7 位7移至位5 为方便起见,这是置换的其他两种表示形式。作为一个周期: (02467531) 并作为映射对的列表: [[0,2], [1,0], [2,4], [3,1], [4,6], [5,3], [6,7], [7,5]] 你的任务是可视化这个排列,使用盒绘图字符─,│,┌,┐,└,┘,┼(Unicode代码点:U + 2500,U + 2502,U + 250C,U + 2510,U + 2514,U + 2518,U + 253C)。该可视化应满足以下约束: 第一行和最后一行完全是: 0 1 2 3 4 5 6 7 在这两者之间,您可以根据需要使用任意多行,每个行最多可以包含15个字符以适合您的方框图字符(您至少需要4行)。这些行应在第一行中的一个数字下方垂直开始,并在最后一行中的相应数字的垂直上方结束。八线必须连接,并且只能交叉通过┼(始终是交叉,绝不能有两条接触的转向线)。线条的确切路径取决于您(而寻找特别适合高尔夫球运动的布局是此挑战的核心)。一个有效的输出将是: 0 1 2 3 4 …

12
产生帕斯卡的辫子
这是帕斯卡的辫子: 1 4 15 56 209 780 2911 10864 40545 151316 564719 1 3 11 41 153 571 2131 7953 29681 110771 413403 1542841 1 4 15 56 209 780 2911 10864 40545 151316 564719 我完全弥补了。据我所知,布莱斯·帕斯卡(Blaise Pascal)没有辫子,如果他这样做,那可能是由头发而不是数字制成的。 它的定义如下: 第一列1中间有一个。 第二列1的顶部和底部都有一个。 现在,我们在将数字放在中间或将数字的两个副本放在顶部和底部之间进行交替。 如果数字位于顶部或底部,则为两个相邻数字的总和(例如56 = 15 + 41)。如果您稍微倾斜头部,这就像是Pascal三角形中的一个台阶。 如果数字在中间,则它将是所有三个相邻数字的总和(例如41 = 15 + …

30
西尔维斯特的序列
Sylvester的序列OEIS A000058是一个整数序列,定义如下: 每个成员是所有先前成员加一的乘积。序列的第一个成员是2。 任务 创建可能的最小程序,该程序需要n并计算Sylvester序列的第n个项。标准输入,输出和漏洞适用。由于结果增长很快,因此您不希望接受任何会导致选择语言溢出的术语。 测试用例 您可以使用零个或一个索引。(这里我使用零索引) >>0 2 >>1 3 >>2 7 >>3 43 >>4 1807

4
快乐的恩德问题
该团圆结局的问题(实际上是一个定理)指出, 平面中一般位置上的任何五个点集都有四个点的子集,这些点形成凸四边形的顶点。 保罗·埃德斯(PaulErdős)用这个名字来命名这个问题,当时最先研究该问题的两位数学家,酯类克莱因(Ester Klein)和乔治·塞克斯(George Szekeres)订婚并随后结婚。 说明: 这里的一般位置意味着没有三个点是共线的。 由四个顶点形成的四边形始终被认为是不相交的,而与点的顺序无关。例如,考虑到四点[1 1],[1 2],[2 1],[2 2]预期的四边形是正方形,没有蝴蝶结: 如果内角不超过180度,则不相交的四边形为凸形;如果两个对角线都位于四边形内,则等效。 挑战 给定5个具有正整数坐标的点,则输出形成凸四边形的那些点中的4个。 规则 如果有多个解决方案(即几组四个点),则可以始终选择输出其中一个或全部。 输入和输出格式像往常一样灵活(数组,列表,列表列表,带有合理分隔符的字符串等)。 代码高尔夫,最少的字节数获胜。 测试用例 输入: [6 8] [1 10] [6 6] [5 9] [8 10] 只有一种可能的输出: [6 8] [1 10] [6 6] [5 9] 输入: [3 8] [7 5] [6 9] [7 8] [5 …

30
画一个沙漏
再次受到编程101任务的启发,这是另一个挑战。 输入: 一个正整数n >= 3。(必须是奇怪的) 输出: n星号行,其中第一行有n星号,每条新行都比前一行少两个星号。直到打1星号。从那里开始,每个新行都比之前的行多两个星号,直到回到n星号为止。空格或类似空格之类的东西必须用于对齐星号,以使其看起来真的像沙漏。 一般规则: 尾随换行符是允许的,但不必使用。 缩进是必须的。 这是代码高尔夫球,因此最短答案以字节为单位。 由于该课程是用C ++讲授的,所以我很想看到C ++的解决方案。 测试案例(n = 5): ***** *** * *** *****

5
炸弹的连锁反应
介绍: 在执行任务之前,这是地图上每个元素的作用: 平原(X):此操作无效。 被破坏的土地(-):与平原相同,但被炸弹破坏。 活动炸弹(!):在地图上,这会摧毁3x3正方形中的所有物体: XXXXX XXXXX XXXXX X---X XX!XX > will become > X---X XXXXX X---X XXXXX XXXXX 被动炸弹(@):无作用,直到被另一枚炸弹引爆为止。这也具有3x3正方形爆炸半径: XXXXX XXXXX XXXXX XXXXX XX@XX > will become > XX@XX (nothing happened) XXXXX XXXXX XXXXX XXXXX 但: XXXXX XXXXX XXXXX X---X XX@XX > will become > ----X (both bombs have …

30
它是无和集吗?
如果集合中没有两个(不一定是不同的)元素在一起,则该集合是不求和的。 例如,{1, 5, 7}是无和的,因为所有成员都是奇数,并且两个奇数加在一起时总是偶数。在另一方面,{2, 4, 9, 13}不是免费求和,如任一2 + 2 = 4或4 + 9 = 13一起添加到该组的一个成员。 编写一个将集合作为输入的程序或函数,如果集合不加和,则输出True值,否则输出Falsy。 例子: Sum-free: {} {4} {1, 5, 7} {16, 1, 4, 9} Not sum-free: {0} {1, 4, 5, 7} {3, 0} {16, 1, 4, 8}

30
二进制到十进制转换器
二进制到十进制转换器 据我所知,我们没有一个简单的二进制到十进制转换的挑战。 编写一个程序或函数,该程序或函数采用正的二进制整数并输出其十进制值。 不允许使用任何内置的基本转换函数。整数到小数的函数(例如,101010变成[1, 0, 1, 0, 1, 0]或的函数"101010")不受此规则约束,因此被允许。 规则: 该代码必须支持二进制数,最高为您的语言支持的最大数值(默认情况下) 您可以选择在二进制表示形式中包含前导零 十进制输出可能没有前导零。 输入和输出格式是可选的,但数字之间不能有任何分隔符。(1,0,1,0,1,0,1,0)不是有效的输入格式,但两者10101010和(["10101010"])都是。 您必须沿“正常”方向输入。1110是14不是7。 测试用例: 1 1 10 2 101010 42 1101111111010101100101110111001110001000110100110011100000111 2016120520371234567 该挑战与其他一些挑战相关,例如this,this和this。

6
井字游戏,只有十字架
介绍 每个人都知道游戏井字游戏,但是在这个挑战中,我们将介绍一些小技巧。我们将只使用十字架。第一个连续放置三个十字架的人输了。一个有趣的事实是,有人输掉前的最大十字架数等于6: X X - X - X - X X 这意味着对于3 x 3的面板,最大数量为6。因此对于N = 3,我们需要输出6。 另一个示例,对于N = 4或4 x 4板: X X - X X X - X - - - - X X - X 这是一个最佳解决方案,您可以看到最大的十字架数量等于9。12 x 12板的最佳解决方案是: X - X - X - X X - X …

9
旋转反对角线
背景 在大多数合理的编程语言中,旋转2D数组的行或列非常容易。在此挑战中,您的任务是改为旋转对角线。回想一下,二维数组的反对角线是在东北方向↗上获取的一维切片。 输入值 非空矩形2D数组,以任何合理格式显示。请注意,该数组可能不是正方形。 输出量 相同的阵列,但每个反对角线向右旋转了一步。 例 考虑3x4输入数组 0 1 2 3 4 5 6 7 8 9 0 1 该数组的反对角线是 0 4 1 8 5 2 9 6 3 0 7 1 它们的旋转版本是 0 1 4 2 8 5 3 9 6 7 0 1 因此正确的输出是 0 4 5 …

4
反转扫雷板
扫雷(Minesweeper)是一种流行的计算机游戏,您可能已经浪费了时间在游戏中,尝试根据每个非地雷单元具有多少个相邻地雷的提示来显示矩形网格中的地雷单元。如果您还没有玩过,请在这里进行。 关于扫雷网格(又称木板)的一个漂亮的数学事实是: 一个董事会及其补编具有相同的地雷总数。(证明) 这就是说,如果您拥有一个完全显示的扫雷网格,则该网格上所有数字的总和,即“ 地雷总数”,将等于该网格补码的地雷总数,即每个地雷都已被替换的网格一个非地雷,每个非地雷都被一个地雷取代。 例如,对于扫雷网格 **1.. 34321 *2**1 矿山总数为1 + 3 + 4 + 3 + 2 +1 + 2 +1 = 17。 网格的补充是 24*** ***** 3*44* 总共有我的2 + 4 + 3 + 4 + 4 = 17。 编写一个程序,以文本形式获取任意的扫雷网格,该网格*表示一个地雷,并1通过8表示与非地雷单元相邻的地雷数。您可以选择使用.或0或 (空格)来表示没有地雷邻居的像元。您可以假设输入网格将被正确标记,即每个非地雷单元将准确地表示正交或对角线紧邻其的地雷总数。 你的程序需要打印电网的补相同的格式(使用相同的.,0或 如您在输入拼音)。 以字节为单位的最短代码获胜。 除了编写程序,您还可以编写一个函数,该函数将输入网格作为字符串并打印或返回补码网格。 输入或输出中的尾随换行符很好,但除了构成网格的字符外,不应有其他字符。 您可以假设1×1的网格将是最小的输入。 测试用例 由于补数的补数是原始网格,因此可以交换所有输入和输出。网格也可以旋转以用于进一步的测试案例。 输入: …

4
通过键盘输入您的名字
难题: 考虑一个带有d-pad的控制台/手持游戏,您需要在其中输入各种名称。这种现象出现在许多较旧的游戏中,然后在控制台中普及使用QWERTY(例如,我相信Wii使用QWERTY键盘布局进行输入)。通常,屏幕键盘看起来具有以下效果: 默认: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ + ^ = 切换大小写后: 0 1 2 3 4 5 …
32 code-golf 

3
FizzBu​​zz反向求解器
简介:给定通用FizzBu​​zz程序的输出,返回用于该程序的因子和单词的列表。 挑战说明 想象一下一个通用的FizzBu​​zz程序,该程序将要使用的因素和单词以及起始数字的列表作为输入。例如,如果该程序的输入是 3 2,Ninja 5,Bear 7,Monkey 该计划将从打印出来的数字3来100,免去数整除2用Ninja,数字整除5与Bear和数字整除7用Monkey。对于那些整除则超过这些术语中的一个号码,该程序将串联的话,印刷的东西,如NinjaBear或BearMonkey或NinjaMonkey或NinjaBearMonkey。这是该输入的输出: 3 Ninja Bear Ninja Monkey Ninja 9 NinjaBear 11 Ninja 13 NinjaMonkey Bear Ninja 17 Ninja 19 NinjaBear Monkey Ninja 23 Ninja Bear Ninja 27 NinjaMonkey 29 NinjaBear 31 Ninja 33 Ninja BearMonkey Ninja 37 Ninja 39 NinjaBear 41 NinjaMonkey 43 Ninja …
32 code-golf 

20
你圣诞节收到了多少礼物?
是的,多少,不是多少... 众所周知,大礼物比小礼物好得多。因此,礼物的价值应始终以总体积来衡量,而不是礼物的数量,重量甚至是组合价格。 由于不愿比较一个人得到的礼物数量,因此您不希望长篇幅的脚本在圣诞晚会上容易被他人看到和阅读。因此,您需要使脚本中的字节数最少。 您的任务很简单:创建一个程序,以任何合适的格式将尺寸列表作为输入,并输出礼物的总体积。每个礼物的尺寸可以是三个数字的集合,也可以是一个数字。如果输入为三个数字(L, W, H),则当前为长方体L x W x H。如果是单个数字(R),则表示当前半径为球形R。 规则: 它可以是完整程序或功能 输入可以是任何方便的格式 如果需要,一个球体可以用一个数字后跟两个零表示 长方体将始终具有所有非零尺寸。 输出应为单个十进制数 只要显而易见的答案是什么,就可以接受其他输出 输出必须在小数点后至少有两位数字 如果数字大于1000,则输出可以采用标准格式/科学计数法。 如果您的语言没有Pi常数,则答案应准确到9999.99。 例子: ((1,4,3),(2,2,2),(3),(4,4,4)) 197.0973 // (1*4*3 + 2*2*2 + 4/3*pi*3^3 + 4*4*4) (5) 523.5988 (5,0,0) 523.5988 排行榜 这篇文章底部的Stack Snippet会根据答案a)生成目录,a)作为每种语言最短解决方案的列表,b)作为整体排行榜。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,则可以将旧分数保留在标题中,方法是将它们打掉。例如: ## Ruby, <s>104</s> <s>101</s> 96 …

11
您可以制作多少个三果馅饼?
三果馅饼由三种不同的水果制成。从您拥有的5种水果中最多可以制成三种水果派? 例如, 1 apple 1 banana 4 mangoes 2 nectarines 0 peaches 您可以制作2个馅饼: apple, mango, nectarine banana, mango, nectarine 输入:五个非负整数或它们的列表。 输出:可以从这些数量的水果中制作出最多三个水果馅饼。最少的字节数获胜。 测试用例: 1 1 4 2 0 2 2 2 2 2 2 3 0 6 0 6 0 0 12 5 3 2 1 5 1 14 14 3 …
32 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.