Questions tagged «code-golf»

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

9
凯撒(Caesar-Cypher)-Mania
的凯撒Cypher支架是一个非常简单的置换密码其中每个字母是由固定的偏移(围绕Z的循环至A)移动。同样,我们也可以为一组可打印ASCII字符设置一个Caesar密码。这是从代码点0x20到0x7E的95个字符。对于给定的偏移量d,我们将代码点映射C到 (C - 32 + d) % 95 + 32 会将所有字符移动a d并从~到循环。超出此范围的字符(控制字符,如换行符,制表符和ASCII范围以外的字符)不受影响。 您要编写两个程序或函数(可能使用不同的语言),它们需要一个偏移量d和一个字符串。第一个程序应返回或打印输入的凯撒密码。第二个程序应返回或打印逆凯撒密码(即使用offset -d)。您可以通过STDIN,命令行参数或函数参数进行输入。 为了使事情变得更有趣,第二个程序必须是第一个程序的凯撒密码。也就是说,如果将第一个程序的源代码传递给自身,则对于某些非零偏移量d,输出必须是第二个程序。 这两个程序以及输入字符串都必须仅包含可打印的ASCII字符,换行符和制表符。程序都不能包含任何注释,也不能直接或间接读取其自己的源代码,文件名或进程ID。 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。由于两个程序必须具有相同的大小,因此您只需要计算一次即可。

6
相互负的奎因
这是受“ 打印代码否定”和“打高尔夫球”的共同启发的。 考虑一个满足以下限制的矩形字符: 仅由可打印的ASCII字符组成 尺寸均大于1 每一行每一列至少包含一个空格。 每一行和每一列至少包含一个非空格字符。 例如,以下是有效的6x4矩形: %n 2e 1 g 3 &* __ 3 此矩形的负数定义为等长的矩形,所有空格均由非空格字符替换,所有非空格字符均由空格替换。上面矩形的负数可以是: f ^ 33 > 9 $ ^ }|Q' 任何不可空格打印的ASCII字符都可以用来替换空格。 任务 您的任务是编写一个带有矩形源代码的程序,该程序向自身输出有效的否定值。输出的负数也必须是与原始语言相同的有效程序,并且必须输出原始的源。 除了在任一输出末尾的单个尾随换行符(可选)外,不得添加或删除尾随空格。 任何程序都不允许读取其中任何一个的源代码;也不能假设为REPL环境。 计分 您的分数是代码尺寸的乘积(即,如果源代码在12 x 25的矩形中,则分数为12 * 15 = 180)。此外,对于注释中使用的每个字符,您的得分将增加2(如果您/* .. */在代码中使用一次,并且您的代码位于10 x 10的矩形中,则得分将为10 * 10 + 8 * 2 = 116)。 …

19
产生幸运数字
故事: 露西问乔治他的幸运数字是多少。经过深思熟虑,乔治回答说他有几个幸运数字。在短暂的困惑之后,露西问乔治他的第一个n幸运数字是什么。乔治然后要求您,他的伙伴,为他编写一个程序来为他完成工作。 挑战: 您将编写一个程序/函数,该程序/函数将从标准输入/函数参数接收一个字符串或整数n。然后,程序/函数将返回/输出第一个n 幸运数字。幸运数字通过一个筛子如下定义。 以正整数开头: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, ... 现在删除第二个数字: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, ... 剩下的第二个数字是3,因此请删除第三个数字: 1, …

7
用矩形覆盖区域
输入项 您在此挑战中输入的是整数对列表。它们表示平面上单位正方形的西南角,列表表示它们作为平面的子集的并集。例如清单 [(0,0),(1,0),(0,1),(1,1),(2,1),(1,2),(2,2)] 代表此图片中的红色集: 输出量 您的输出是一个整数四倍列表,代表平面的矩形子集。更明确地说,四元组(x,y,w,h)代表一个矩形,该矩形的宽度w > 0和高度为h > 0西南角在(x,y)。在每个单位正方形是某个矩形的子集,每个矩形是该区域的子集的意义上,矩形必须形成输入区域的精确覆盖,并且两个矩形只能在其边界处重叠。为了避免琐碎的解决方案,封面不得包含两个可以合并成更大矩形的矩形。 例如清单 [(0,0,2,1),(0,1,3,1),(1,2,2,1)] 代表法律保障 以上区域,而由 [(0,0,2,2),(2,1,1,1),(1,2,1,1),(2,2,1,1)] 是非法的,因为相邻的1乘1正方形可以合并: 规则 您可以提供完整的程序或功能。在合理范围内,输入和输出的精确格式并不重要。最短的字节数获胜,并且不允许出现标准漏洞。我们鼓励您对算法进行解释,并提供一些示例输出。 测试用例 U形区域: [(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(2,0),(2,1),(3,0),(3,1),(4,0),(4,1),(4,2),(4,3),(4,4),(4,5),(5,0),(5,1),(5,2),(5,3),(5,4),(5,5)] 大三角形: [(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),(0,8),(0,9),(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8),(2,0),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),(2,7),(3,0),(3,1),(3,2),(3,3),(3,4),(3,5),(3,6),(4,0),(4,1),(4,2),(4,3),(4,4),(4,5),(5,0),(5,1),(5,2),(5,3),(5,4),(6,0),(6,1),(6,2),(6,3),(7,0),(7,1),(7,2),(8,0),(8,1),(9,0)] 带孔的正方形: [(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),(0,8),(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8),(1,9),(2,0),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),(2,7),(2,8),(2,9),(3,0),(3,1),(3,2),(3,4),(3,5),(3,6),(3,7),(3,8),(3,9),(4,0),(4,1),(4,2),(4,3),(4,4),(4,5),(4,6),(4,7),(4,8),(4,9),(5,0),(5,1),(5,2),(5,3),(5,4),(5,5),(5,7),(5,8),(5,9),(6,1),(6,2),(6,3),(6,5),(6,6),(6,7),(6,8),(6,9),(7,0),(7,1),(7,2),(7,3),(7,4),(7,5),(7,6),(7,7),(7,8),(7,9),(8,0),(8,1),(8,2),(8,3),(8,4),(8,5),(8,6),(8,7),(8,8),(8,9),(9,0),(9,1),(9,2),(9,3),(9,4),(9,5),(9,6),(9,7),(9,8),(9,9)] 断开区域: [(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),(0,8),(1,0),(1,1),(1,2),(1,3),(1,4),(1,6),(1,7),(1,8),(1,9),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),(2,7),(2,8),(2,9),(4,0),(4,1),(4,2),(4,4),(4,5),(4,6),(4,7),(4,8),(4,9),(5,0),(5,1),(5,2),(5,3),(5,4),(5,5),(5,6),(5,7),(5,8),(5,9),(6,0),(6,1),(6,2),(6,4),(6,5),(6,6),(6,7),(6,8),(6,9),(8,0),(8,1),(8,2),(8,3),(8,4),(8,5),(8,6),(8,7),(8,8),(8,9),(9,0),(9,1),(9,2),(9,3),(9,7),(9,8),(9,9),(10,0),(10,1),(10,2),(10,3),(10,4),(10,5),(10,6),(10,7),(10,8),(10,9)] 验证者 使用此 Python 2程序来验证您的解决方案。它从STDIN中获取元组列表(输入)和四元组列表(您的输出),并用逗号分隔。 我还编写了此 Python 2程序来生成图片,您也可以使用它。它从STDIN中获取元组或四元组的列表,并生成一个名为的文件out.png。它需要PIL库。如果需要,您也可以更改网格单元的大小和网格线的宽度。

9
确定给定方程为真的基数
给定3个整数,请确定前两个整数乘以第三个整数的最低可能基数。如果您想到了关于生命,宇宙和一切终极问题的答案,则6 * 9 == 42在Base 13中是正确的。 输入可以包括任何数字,其数字使用字符0-9,az和AZ,其中以a10为基数等于10,以10为基数等于Z61。 输入应该以您喜欢的任何方式输入(硬编码除外),并且您可以编写单个函数或整个程序。 必须考虑的最大基数是62,最小基数是2。 您可以假定前两个值小于第三个值。您还可以得出结论,最小基数比输入中的最高数字/字符大一个(例如,如果输入为3 1a 55,则最小基数将为Base 11,因为a它是最高数字)。 如果没有这样的基准,则返回您选择的垃圾值。 这是代码高尔夫,所以最短的代码获胜。 测试用例 6 9 42 --> 13 a a 64 --> 16 aA bB 36jk --> 41 2 3 20 --> <junk value> 10 10 100 --> 2

2
DNA:脱氧核糖核酸ASCII
给定碱基序列腺嘌呤,胞嘧啶,鸟嘌呤和胸腺嘧啶(编码为ACGT),您将产生相应DNA双链的ASCII艺术表示。 股线将垂直延伸。左侧的链是您输入的链。右手链将为其补充。对于不熟悉DNA的人,A与T和C配对G。此外,双链的每一侧都具有骨架结构,该骨架结构对于所有碱基都是相同的。因此,如果提供输入TAGCAT,则ASCII艺术的大规模结构将是: BTAB BATB BGCB BCGB BATB BTAB 其中B代表骨干。现在这些字母代表一个完整的分子,您将重现实际的分子结构。 基地 对每个碱基使用以下模板1(每个碱基与其互补碱基和两个主链分子一起显示): 1感谢Peter Taylor提供的ASCII布局帮助。 腺嘌呤 O O \\ / P / \ --O O / | < N NH2 ..... O * | \ // \ / \\ / | +--O // ---- ---- | | \ | // \\ / …

1
将二维列表旋转45度
任务 目标是编写一个将任何二维列表旋转45度的程序,返回二维列表之前,它必须能够做到一次最大7 * 45的旋转。该列表不一定是正方形或矩形。您必须在答案中包括示例的输出。它也必须适用于示例中未涉及的情况...圆,三角形等。您不能使用预先存在的功能来完成全部操作。 所有列表将至少具有一个对称轴(N,S,E,W)。所有子列表均假定为居中对齐。奇偶列表将向左移动以正确对齐。有关子列表中间的空白,请参见示例4。 输入 您的程序将使用一个l包含列表的变量,以及一个n指定列表旋转量的变量(n * 45)(n始终小于7,并且可以为0)。它必须接受l包含任何可打印数据类型(十进制,List,int,String []等的子列表),但是子列表一次仅包含一种数据类型。 您不需要接受控制台输入或使用stdin。指定的测试值的线l和n不包括在所述字符计数,但必须包括在所提交的代码。 输出值 您的程序必须以正确的方向打印列表,如果需要,可以使用NIL填充列表,但是不需要填充(但是如果填充了,您会得到一张笑脸)。子列表不必像示例中那样用换行符缩进或分隔。 例子 1个 IN l= [[0 , 1 , 2], [3 , 4 , 5], [6 , 7 , 8]] n=1 OUT [ [0], [3 , 1], [6 , 4 , 2], [7 , 5], [8] ] 2 …
22 code-golf 

3
绘制Epicyclogons
一个外摆线是曲线上的圆上的点使得滚卷围绕另一个圆。甲cyclogon是形状上的一个点正多边形使得因为它跨过平面滚动。一个外延多边形是一条曲线在一个正多边形上围绕另一个点滚动时所跟踪的曲线。 编写绘制给予epicyclogon程序r,r1,r2,n1,n2: r = number of clockwise revolutions rolling polygon makes around stationary polygon (any real number as limited by float values) r1 = distance from center of stationary polygon to each of its vertices (positive real number) r2 = distance from center of rolling polygon to each of its …

7
家谱求解器
这是加尔文的爱好给社区留下的几个挑战之一。 采取“形式描述的家谱”文件,其格式如下: [ID] [mother ID] [father ID] [gender] [full name] 例如,它描述了http://en.wikipedia.org/wiki/Cousin上的第一棵家谱: 1 ? ? M Adam 2 ? ? F Agatha 3 ? ? M Bill 4 2 1 F Betty 5 2 1 M Charles 6 ? ? F Corinda 7 3 4 M David 8 6 5 F …

20
破解密码到密码锁
给定一个标准的密码锁,如图所示。解锁的方法是在组合行的代码中对齐4个数字。经过多年的忠诚服务,您已被锁厂解雇,并决定通过在下锁之前先放下锁来进行严格的报复,从而使每把锁都留在组合线上以在组合线上解锁。 您还知道,通过查看其他行中数字的顺序,可以计算出组合线上必须有哪些数字(因此,将其解锁的​​组合就是)。 如果为锁上的每一行提供了一个编号,该编号从组合行(用于解锁锁的行)的第0行开始到第9行。例如,如果第4行上的数字为5336,则要解锁的组合为1992。 不幸的是,这些锁已经打包,并且您对每个锁的查看都变得模糊了,因此您只能在锁的不同行上看到数字。 挑战 给定4对数字,其中整数的第一个数字表示行号,第二个数字表示在该行上出现的数字,请对锁进行组合。例如,如果您输入: 57 23 99 45 然后它应该输出: 2101 要么 25 78 63 15 和 3174 假设输入将始终是4个正整数,格式为`25 64 72 18。 这是code-golf,所以最短的程序以字节数为准。 这也是我的第一个问题,因此感谢您提供任何反馈意见。
22 code-golf 

14
非舍入分数
当您将分数转换为十进制数并想要存储该数时,通常必须舍入该数,因为您只想使用一定数量的内存。假设您只能存储5个十进制数字,则5/3变为1.6667。如果只能存储2个十进制数字,则它将是1.7(现在假设它始终在0到9.99之间...)。 如果您现在尝试使用1.7逆转该过程,并且想要取回小数,那将是困难的,因为您知道1.7只是一个四舍五入的数字。当然,您可以尝试17/10,但与“优雅” 5/3相比,这是一个“丑陋”的分数。 因此,现在的目标是找到分母为b的分数a / b,在正确舍入后得出舍入的十进制数。 细节 输入包含1到5位数字的字符串,介于0(包括)和10(不包括)之间,并带有'。'。在第一个数字之后。假设n表示位数。输出必须是两个整数的列表/数组,[numerator, denominator]或者是一个分子为非负数且分母为正数的有理数据类型(可以创建自己的数据类型或使用内置数据类型)。正确四舍五入为n数字(即n-1小数点后的数字)时,分数分子/分母必须等于输入。 限制:仅允许一个循环语句。这意味着您在整个代码中只能使用一个循环语句(如foror while或gotoetc,以及功能循环如map或fold将代码应用于列表/数组的每个元素),但是您可以随意“滥用”它或使用递归等 您应该编写一个函数。如果您的语言没有功能(即使没有),则可以选择将输入存储在变量中(或通过stdin输入),然后打印结果或将结果写入文件。最低字节数获胜。 四舍五入 四舍五入应遵循“常规”四舍五入规则,即,如果要截断的最后一位数字为5或更大,则将四舍五入,对于其他情况,将四舍五入,例如: 四舍五入为4.5494 1位数:5 2位数字:4.5 3位数:4.55 4位数字:4.549 例子 请包括以下测试用例和其他“有趣”的用例: Input 1.7 Output 5/3 Input 0. Output 0/1 Input 0.001 Output 1/667 Input 3.1416 Output 355/113

4
缩小Brainfuck
根据以下规则,您面临的挑战是缩小Brainfuck代码: 删除不属于的任何内容+-><[].,。 对于任何一组连续的+或-字符,如果量+S和-s是相同的,将其删除。 执行与上述相同的操作,但使用>和<。 +-><如果不执行任何操作,请删除字符序列。例如,您应该删除+>-<->+<。(这可能是最棘手和最难实现的。)确保您没有得到任何误报,例如+>-<+>-<,不应删除。 测试用例: 输入项 ++++++[->++++++<]>. prints a $ [-]< resets tape >,[>,]<[.<] reverses NUL terminated input string ++-->><< does nothing 输出量 ++++++[->++++++<]>.[-],[>,]<[.<] 输入项 Should disappear: ++>>+<+++<->-->-<<->-< Should disappear: +++>-<--->+< Should stay: +++>-<+>---< 输出量 +++>-<+>---< 您可以根据需要接受输入和输出-stdin / stdout,函数等,但是输入可能未进行硬编码。 这是代码高尔夫球,因此字符计数中最短的代码将获胜。

5
2014年世界IPv6日
为纪念世界IPv6日的周年纪念日,互联网协会在2014年6月6日发布了一项“关闭IPv4的活动”,为期一天。 IPv6地址可以长格式表示为八个冒号分隔的16位十六进制值。根据地址的不同,它们也可以按照RFC 3513的2.2节的文本文本表示中的第 2项进行缩短: 为了使写入包含零位的地址更容易,可以使用特殊语法来压缩零。“ ::”的使用表示一组或多组16位零。“ ::”在一个地址中只能出现一次。“ ::”还可以用于压缩地址中的前零或后零。 填入这个挑战将是接受无论是在或长或短格式格式化只有一个IPv6地址的程序,并显示在同一个地址都在长,短格式,按照这个顺序。 输入可能来自命令行参数STDIN或任何其他适合您选择语言的输入源。 禁止专门用于解析IPv6地址的库或实用程序(例如inet_ {ntop,pton}())。 如果输入地址无效,则输出将为空(或给出一些指示该地址无效的适当错误消息) 在::发生缩短的情况下,给定地址只能进行一次缩短操作。如果给定地址有多个潜在的缩短操作,则必须使用给出最短总地址的操作。如果在这方面有平局,将使用第一个操作。在下面的示例中对此进行了说明。 避免标准漏洞 例子: Input Output 1080:0:0:0:8:800:200C:417A 1080:0:0:0:8:800:200C:417A 1080::8:800:200C:417A FF01::101 FF01:0:0:0:0:0:0:101 FF01::101 0:0:0:0:0:0:0:1 0:0:0:0:0:0:0:1 ::1 :: 0:0:0:0:0:0:0:0 :: 1:0:0:2:0:0:0:3 1:0:0:2:0:0:0:3 1:0:0:2::3 1:0:0:8:8:0:0:3 1:0:0:8:8:0:0:3 1::8:8:0:0:3 1:2:3:4:5:6:7:8 1:2:3:4:5:6:7:8 1:2:3:4:5:6:7:8 ABCD:1234 <Invalid address format - no output> ABCDE::1234 <Invalid address format …

4
加密奎因变体
创建一个程序,以以下格式打印其源的MD5和: MD5 sum of my source is: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 没有作弊-您不能只读取源文件并计算其总和。该程序不得读取任何外部信息。 当然,您可以使用适用于您的语言的MD5库。

4
谁想成为Kolmogorov复杂性赢家?
今天的任务是发明文本压缩器。 任务 您将编写两个函数: 该打包机是接受的ASCII字符(U + 0000到U + 007F)的字符串,并输出一个Unicode字符串(U + 0000到U + 10FFFF),包含字符尽可能少的功能。 该解包器是接受编码的Unicode字符串,并输出完全原始ASCII字符串的函数。 输入项 唯一授权的输入是ASCII字符串(对于打包程序)和打包的Unicode字符串(对于解包程序)。没有用户输入,没有互联网连接,没有使用文件系统。 您的职能部门可以访问此英语单词列表。您可以将该列表用作本地txt文件,也可以将其内容作为字符串或字符串数组复制到源代码中。 您无法在函数中对以下代码片段进行硬编码。 输出量 这两个函数的唯一授权输出是字符串。 解压缩程序的输出必须包含与打包程序的输入完全相同的字符。 您的输入和输出可以使用支持所有Unicode的任何字符编码(UTF-8 / 16/32,GB18030等),因为您的分数将仅取决于输出中Unicode字符的数量。不过,请精确说明您使用的是哪种编码。 要计算输出中Unicode字符的数量,可以使用以下工具: http //mothereff.in/byte-counter 计分 您的条目必须能够打包和解压缩以下10个文本片段(我在此论坛上拍摄的片段)。 您的分数将是10个打包字符串的大小(以Unicode字符表示)加上两个函数的大小(以Unicode字符表示)的总和。 如果使用字典,请不要计算字典的大小。 请在您的条目中包括每个代码段的“得分”及其打包版本。 最低分获胜。 数据 以下是要编码以计算分数的代码段: 1:里克·罗尔(Rick Roll)歌词(1870b): 我们高尔夫球并不陌生,您知道规则,我也是 我们不是爱的陌生人 你知道规则,我也知道 我想的是全面承诺 你不会从任何其他人那里得到这个 我只是想告诉你我的感觉 要让你明白 绝不会放弃你 永远不会让你失望 永远不会跑来跑去和抛弃你 永远不会让你哭泣 永远不会说再见 永远不会撒谎和伤害你 我们认识很久了 …

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.