Questions tagged «code-golf»

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

4
用quine写一个二进制计数器
编写两个代码片段,我们将它们称为s_zero和s_one。 程序(l,n)由s_zero和s_one的l个副本组成,对应于二进制中n的数字,并在左侧填充s_zero。 例如,如果s_zero = foo和s_one =,bar则 程序(4,0 )= foofoofoofoo 程序(4,1)= foofoofoobar 程序(4,2)= foofoobarfoo 等等。 程序(l,n)必须将程序(l,(n + 1)mod(2 ^ l))的源打印为标准输出。在上面的示例中,执行时foobarfoofoo必须打印foobarfoobar。 您的分数是片段s_zero和s_one的长度之和

2
停车场的卡车
停车场中有P个停车位,尽管有些空间被以八面兽#为代表的汽车占据,而自由空间是点.。很快就有T卡车抵达,每辆卡车将恰好占据L个连续的空间。卡车不必彼此相邻停放。 您的任务是创建一个程序,该程序将找到需要停放以停放所有卡车的最少数量的汽车。总是会有足够的空间来容纳所有卡车,这意味着T*L<P 输入值 在第一行中,将有三个整数,P,T和L由空格分隔。在第二行中,将出现一串P字符,它们代表处于初始状态的停车场。 输出量 在第一行也是唯一的一行中,您的程序应打印出需要停放以停放所有卡车的最少数量的汽车。 测试用例 输入: 6 1 3 #.#.## 输出: 1 输入: 9 2 3 .##..#..# 输出: 2 输入: 15 2 5 .#.....#.#####. 输出: 3 最短的代码获胜。(注意:如果可能的话,我对pyth实现特别感兴趣)
10 code-golf 

3
网格上的转子路由器
输入值 您的输入是一个字符串,由换行符分隔成一些整数2n+1的长度行。整数不属于输入;您必须从字符串中进行计算。这些行由“方向字符”组成。如果换行符引起问题,则可以用竖管替换它们。2n+1n ≥ 0n>^<v| 输入形成一个大小为方格的正方形网格(2n+1)x(2n+1),并且网格的每个像元都解释为转子路由器,它指向四个基本方向之一。我们继续将令牌放在网格中心的路由器上,然后路由器将以以下方式移动令牌。当令牌落在路由器上时,路由器将沿逆时针方向旋转90度,并将令牌在其指向的新方向上移动一步。如果它落在另一个路由器上,则重复该过程,但是最终,令牌将脱离网格。 输出量 您的输出是路由器的最终配置,格式与输入相同。 例 作为示例输入,请考虑3x3网格 <^< ^>< >^v 中央路由器已高亮显示以指示令牌(很难看到)。中央路由器旋转以面向北方,并将令牌移动到第一行的中央单元格: <^< ^^< >^v 此路由器向西旋转,并将令牌发送到左上角: <<< ^^< >^v 角落中的路由器将令牌发送到南方,因此它现在位于中间行的最左侧单元格: v<< ^^< >^v 该路由器旋转以面向西,并将令牌发送出网格。 v<< <^< >^v 这是最终的网格配置,因此您的程序应将其输出。请注意,在更复杂的示例中,令牌在脱离网格之前可以多次通过同一路由器。 规则 您可以编写函数或完整程序。这是代码高尔夫球,因此最低的字节数为准。不允许出现标准漏洞。您可以确定输入和/或输出中是否有尾随换行符。 测试用例 Input: v Output: > Input: <^< ^>< >^v Output: v<< <^< >^v Input: >>^>> v<vv< >^>^< ^<>>^ vvv>> …
10 code-golf  grid 

1
坏消息,有人
在《 Futurama》情节中,剧组的Benda囚犯成员相互交换尸体,但要注意的是,没有一对尸体可以交换思想。 挑战 编写一个程序或函数,该程序或函数接受已经发生的有效的身心交换,并输出一组合法的交换,这些交换将使每个头脑返回其原始身体。这些身心集合的标识符必须是不包含换行符的字符串。您最多可以添加两个(没有明显名字的)人,他们之前没有与输入组的交换。(证明您最多只需要2个其他实体),但是,您必须添加解决问题所需的最少人数。 输入和输出可以采用任何清楚的形式,但是,任何其他信息都不能存储在其中。您可能会认为它始终有效。这是代码高尔夫,所以获胜者是字节最少的提交。 例子 [('A','B'),('C','D')] -> [('A','C'),('B','D'),('A','D'),('B','C')] ['A','B'] -> ['C','D','A','C','B','D','A','D','B','C'] [('A','B'),('C','D'),('A','C'),('A','D')] -> [('B', 'E'), ('A', 'E'), ('C', 'B'), ('C', 'E')] "A\nB\nC\nD\n" -> "A\nC\nB\nD\nA\nD\nB\nC\n" 节目中的一个: [("Amy","Hubert"),("Bender","Amy"),("Hubert","Turanga"),("Amy","Wash Bucket"),("Wash Bucket","Nikolai"),("Phillip","John"),("Hermes","Turanga")] 演出的解决方案,如下所示,是无效的: [("Clyde","Phillip"),("Ethan","John"),("Clyde","John"),("Ethan",Phillip"),("Clyde","Hubert"),("Ethan","Wash Bucket"),("Clyde","Leela"),("Ethan","Nikolai"),("Clyde","Hermes"),("Ethan","Bender"),("Clyde","Amy"),("Ethan","Hubert"),("Clyde","Wash Bucket")] 这是无效的,因为Ery和Clyde是不必要的,因为Fry Phillip,Zoidberg John和Hermes Hermes 很少使用该机器。下面提供了针对这种情况的有效解决方案: [("Philip","Hubert"),("John","Wash Bucket"),("Philip","Turanga"),("John","Nikolai"),("Philip","Hermes"),("John","Bender"),("Philip","Amy"),("John","Hubert"),("Philip","Wash Bucket")] 请注意,对于任何有效输入,显然都有许多可能的答案。任何有效。
10 code-golf  math 

9
构建一个rot32加密器
构建高尔夫rot13加密器太容易了,因为字母在ASCII字符空间中的顺序都相同。让我们尝试使用rot32引擎。 您的任务是构建一个函数,该函数将Base64字符串作为输入并返回相同的字符串,但每个字母从其原始字符开始旋转32个符号(本质上,第一位被翻转)。 用于此问题的base64编码字符串0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/的填充字符为=。这是为了防止原本使用或导入内置Base64库的解决方案,该库通常以字符串开头A而不是0。 Example inputs and outputs: > rot32("THE+QUICK+BROWN+FOX+JUMPS+OVER+THE+LAZY+DOG=") nb8ukoc6eu5liqhu9irudogjmuip8lunb8uf4tsu7ia= > rot32("NB8UKOC6EU5LIQHU9IRUDOGJMUIP8LUNB8UF4TSU7IA=") h5Eoei6C8oBfckboFclo7iadgocjEfoh5Eo9AnmoDc4= > rot32("Daisy++daisy++give+me+your+answer+true/I+/+m+half+crazy++all+for+the+love+of+you") 7GOY2uuJGOY2uuMO/KuSKu2U+XuGTY0KXuZX+KvcuvuSuNGRLuIXG32uuGRRuLUXuZNKuRU/KuULu2U+ 以任何语言进行的最短程序都将获胜。
10 code-golf 

12
分摊悖论
鉴于: 自然数Ş。 总和为1 的N个有理权重W的列表。 返回由N个非负整数组成的列表L,例如: (1) sum(L) = S (2) sum((S⋅W_i - L_i)^2) is minimal 换句话说,S⋅W_i用整数尽可能接近s。 例子: 1 [0.4 0.3 0.3] = [1 0 0] 3 [0 1 0] = [0 3 0] 4 [0.3 0.4 0.3] = [1 2 1] 5 [0.3 0.4 0.3] = [2 2 1] or …

1
和臭气-第一部分
设置 考虑一个包含29个编号单元格的奇怪形状的盒子,如下图1所示。 在此2D盒子内有两种正方形动物:粗毛和臭鼬。图1(a)用蓝色显示了一些粗枝,用红色显示了一些臭味。每个生物恰好占据一个网格单元。该盒子可能包含0到26个粗线之间的任何位置,但始终只包含两个臭鼬。 在重力作用下,碎片和臭气坐在盒子的底部,堆积在它们下面的任何物体的顶部。这两个物种都非常懒惰,并且永远静止不动。 该框还包含一个圆点,用黑色正方形表示,恰好占据一个网格单元。该STOT是不受到重力。 如图所示,该盒子具有位于单元28底部的一个开口。 为了以文字形式表示框中的粗线,阴茎和茎的配置,我们使用29个字符的字符串(每个网格单元一个字符),按枚举顺序.表示,表示一个空单元格,o表示一条粗线,x表示一个污点,并@代表矮胖。例如,图1(a)的配置由字符串表示.........@...o....ooo..xox...。 操作方式 盒子可以旋转 90°的任意倍数。当盒子旋转时,叶屑和臭虫在它们的网格内保持静止。旋转完成后,它们会直接向下掉落,直到i)它们被下面的墙壁堵住;ii)它们被下面的小树枝,sm茎或草梗堵住;或者iii)它们掉落到单元格28的孔中并退出框。矮脚不会掉下来;即使生物停留在其当前细胞上,它也保持固定在其当前细胞中。 在生物掉落并达到新的稳定状态之前,不能再次旋转盒子。 从字面上看,框旋转表示+为顺时针旋转90°,旋转|180°和-逆时针旋转90°。 此外,可以在四个罗盘方向上以一个网格单元为增量移动笔杆。举动可能不会:i)引起桩与生物之间的碰撞(即,目标网格单元必须为空),ii)导致桩与壁之间的碰撞,或者iii)导致桩通过以下方式离开箱子单元格28中的孔。 另外,如果小脚上有任何生物(相对于当前重力),小脚也可能不会移动。 以文字,STOT移动被记<左,>右,^对了,v对了。总是相对于图中所示的“标准”(非旋转)框架指定点移动。也就是说,如果该笔杆位于单元格10中,则移动^将始终将其移动到单元格5中,并且该移动>将始终将其移动到单元格11中。框的方向不会影响移动的方向。 使用从左到右的字符串对操作序列进行编码。例如,字符串+<<^-表示盒子顺时针旋转90°,然后针杆左移两次并向上移动一次(相对于标准框架),然后盒子逆时针旋转90°回到其原始方向。 挑战 出于非常好的原因(我无法透露),我们希望从包装盒中拔出所有胡扯,而又不拔出一个sm子。为此,我们可以使用上面具体描述的操作。 在解决此问题之前,我们应该模拟一下各种操作将如何影响包装盒的内容,这是此挑战的重点。 您必须编写一个程序,该程序接受来自stdin(或等效)的两个参数: 描述盒子初始状态的字符串 一系列的操作 您可以假设这两个参数在语法上都是有效的,该框以标准方向开始,并且该框的初始状态是稳定且合法的。 程序必须输出到stdout(或等效的)以下之一: (情况1)如果移动顺序合法(不违反短杆移动规则)并且不导致任何臭味离开盒子,盒子的最终状态,用字符串表示。盒子的最终方向并不重要。 (案例2)单个感叹号!,如果移动顺序不合法或导致任何臭味离开盒子 计分 获胜的程序是按字节数计算的最短程序,它受制于一些非常有利可图的奖金乘数: 如果不是为情况1打印编码的输出,则声明为0.65的乘数,程序将使用包装字符,臭味,臭脚和空单元格的规范字符,以最终状态和方向输出盒子的ASCII图片,而不是输出情况1的编码输出,并放置一个*单元格中位于孔28外部的单元格中。前导和尾随空格将被忽略。 例如,如果将图1(a)旋转90°,则输出为 . . ..... .o... xo.@. *ooo.. x . 如果不是为情况1打印编码的输出,则程序要求输出0.22的乘数,该程序将输出图像文件或显示GUI窗口,并以最终状态和方向显示框的图片。图片应采用图1(a)的样式,并使用彩色框显示网格单元,墙壁和生物/脚架。 如果不是为情况1打印编码输出,则程序声明0.15的乘数,该程序将输出动画的.gif或动画的GUI窗口,以1秒的间隔显示模拟中的所有中间状态。适用与0.22乘数相同的图像规则。动画的第一帧应描绘模拟的初始状态。此外,动画应显示“隐藏”的中间状态,即 旋转后,每动画帧中的小球/ mols进入稳定配置的状态 盒子在180°旋转的中间90°旋转状态 如果程序产生上述样式的动画.gif或动画GUI窗口,但以20 fps的速度运行并显示,则声明乘数为0.12 盒子旋转的平滑连续动画 平滑,连续地动画显示小脚移动,以及滑倒的小草/臭虫处于稳定状态 穿过盒子28孔掉落的碎片应显示为从盒子中出来,并且应该完全消失在外面。您可以为动画选择自己的时间,只要执行不超过1次/秒即可。 总分是floor( base …

10
验证魔术广场
甲幻方是与侧N组成的不同的正整数1,2的编号的正方形阵列,...,ñ ²布置成使得所述的总和Ñ号码以任何水平,垂直,或主对角线行总是相同的数字,称为魔术常数。 您的程序必须通过std-in输入一个数字,该数字指定正方形的边长,然后指定正方形中的数字。没有号码可多次使用,没有数量大于ň可以使用²,和所有的数字必须大于0,程序必须确定数量的该组合是否是幻方。
10 code-golf  math 

5
实现类似t9的功能
今天的挑战是实现类似t9的功能。 您将实现一个只有2个参数的函数。 您将收到一个字符串形式的电话号码,以及一个带有单词列表的文本文件的内容(不要使用特定的换行符样式)。 您可以使用链接https://raw.githubusercontent.com/eneko/data-repository/master/data/words.txt来测试功能,或使用/usr/share/dict/words(检查的文本文件的单词列表[关闭]更多信息)。 您可以假设您将始终收到至少两个数字。 给定数字,您将从单词列表中读取并返回以映射到这些单词的字母开头的单词。这意味着输入只能是2到9之间的数字。 如果收到无效的输入,则可以执行任何操作。 如果没有找到匹配的,你可以返回一个空列表,null/ nil或0。 请记住,手机密钥已映射到它们的等效字符: 0和1无效 2个匹配项[abc] 3个符合的[def] 4场比赛[吉] 5个匹配项[jkl] 6场比赛[mno] 7个匹配项[pqrs] 8个匹配项 和9场比赛[wxyz] 例子: f('52726') //returns ["Japan","japan","Japanee","Japanese","Japanesque"...,"larbowlines"] f('552') //returns ["Kjeldahl","kjeldahlization","kjeldahlize"...,"Lleu","Llew"] f('1234') //makes demons fly out your nose or divide by 0 f('9999') //returns ["Zyzzogeton"] f('999999') //returns [] or null/nil or 0 运行功能后,您可以按所需的任何方式打印它。 规则: 标准漏洞无效 …

4
字谜代码
让我们再试一次。 竞赛的目的是制作两段彼此相同的字母(彼此必须包含不同顺序的相同字节)的代码,它们将执行以下任务: 必须测试输入的数字是happy还是prime,并测试数字是否是数字(例如,7必须输出happy prime和4必须输出sad non-prime)。 另一个必须以字为单位输出其代码大小(以字节为单位)(输出60字节的程序,输出sixty39字节的程序thirty-nine)。 如果规则需要任何澄清,请随时告诉我。 这是一场代码高尔夫比赛,因此最短的程序将获胜!

6
从> 1000位数字中查找最小的周期
您的工作是将此数字作为输入(尽管它也应该与任何其他数字一起使用): 18349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957 并找到最小周期,在这种情况下为: 1834957034571097518349570345710975183495703457109751834957034571097518349570345710976 祝好运并玩得开心点! 说明: 输入的数字至少有一个周期和一个局部周期 句号始终从输入数字的开头开始 在这种情况下,句号表示重复的数字序列。
10 code-golf 

18
缩小数字
输入是(至少3个,最多20个)不同整数的数组。每个整数都大于-1000并且小于1000。 你的任务是“线性映射”他们缩小数字0.0来1.0。这意味着数组中最小的数字将映射为0.0,最大的映射为1.0。 您可以将数组作为参数(在函数内部)或stdin / program参数(可以选择)。以格式打印结果double1;double2;double3;...。输出必须具有与输入相同的顺序。 如果需要,可以将输出舍入到小数点后两位。小数点后必须至少有1位数字。 该内置功能的使用(其比例放倒为你的数字功能,如mathematicas Rescale)是不允许的。 例子: Input Output [5,-20,30] 0.5;0.0;1.0 [1,2,3,4,5] 0.0;0.25;0.5;0.75;1.0 [0,5,100,400] 0.0;0.01;0.25;1.0 (最后的输出是四舍五入的,否则为0.0;0.0125;0.25;1.0)

1
在俄罗斯方块游戏中找到最佳动作
我非常喜欢俄罗斯方块,但是我不太擅长。我只想看到那艘飞船在我眼前起飞!而且由于计算机在所有方面都非常出色,因此唯一可行的解​​决方案是编写一个程序供我使用...除非您要为我做这件事! 给定一个tetromino(由四个正方形组成的形状)和一个运动场的地图,您将放置tetromino,以使其得分最多的行(使最大的行数完全充满块)并创建最少的行的新孔(一个空的空间不能“看”比赛场上的顶部1)。 输入值 输入将在一行上包含一个代表下降的tetromino的字符,然后是一个10 * 18的网格2,由空格()和加号(+)组成。 该字符代表在俄罗斯方块中发现的七个基本四聚体中的任何一个。所有的片段都可以旋转90度,但不能翻转。所有四蛋白骨及其旋转如下: # S = ## ## ## # # Z = ## ## ## # # ### ## L = # # # # ## # ### # ### ## J = # # # # ## # ### # # # T = …
10 code-golf  tetris 

11
编写一个程序,将文本文件的第17位变成1
我和我的同事正在开发我们有时讨厌的旧版软件。每当您运行它时,调试断言就会四处飞扬,并且不能保证任何事情都会起作用。这轮代码高尔夫的动机来自于我的同事对我们的软件发表了以下看法。 “就像每次运行该程序一样,您同意某些服务条款,这些条款说硬盘上的第17位将变成1。” 目标:编写一个程序,该程序将精确复制文件并将文本文件的第17位变成1 你可能不把EVERY文件的位为1,即你的程序必须表现出一定的智能,它仅针对每第17位 你可能不写入到原始文件中的任何方式或形式 该获奖者是在月底最小的程序提交 玩得开心!走!

4
一元数有多强?
通常,您会得到一个由0到8组成的非进制(基数9)非负整数。但是,此数字中的位数(没有前导零)是一个完美的正方形。 因此,可以将数字排列在正方形网格中(仍保留读取顺序)。 1480(1125以10为基)的示例: 14 80 现在,让这样的一元网格中的每个数字指示运动到另一个网格空间(具有周期性边界条件): 432 501 678 就是说 0 = stay still 1 = move right 2 = move right and up 3 = move up ... 8 = move right and down 因此,如果在1480网格中从4开始,然后向上移动(记住pbc)并向左移动到8,这意味着您将向右和向下移动回到4,从周期2开始一个循环。 通常,此过程一直持续到您达到0或注意到一个循环为止。(0被认为是周期为1的周期。) 在1480的情况下,最终到达4个起始数字中的每个数字的时间段2 2 2 1分别是。 对于更大的网格,这些数字可能大于8,但是我们仍然可以将它们用作新的非二进制数字中的“数字”(简单地将9 ^ n的系数视为数字): 2*9^3 + 2*9^2 + 2*9 + …

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.