Questions tagged «code-golf»

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

1
包装圈
看一下这张图片。具体而言,如何布置两端的孔。 (图片来源) 请注意,此图像中的管道是如何以六边形图案包装的。众所周知,在2D中,六边形格子是最密集的圆堆积。在这一挑战中,我们将专注于最大程度地减少圆包装的周长。可视化周界的一种有用方法是,想象将橡皮筋套在圆圈集合上。 任务 给定一个正整数n作为输入,请显示n尽可能紧密排列的一组圆圈。 规则和说明 假设圆的直径为1个单位。 要被最小化的变量是周长,其被定义为长度凸包的的中心组中的圆圈。看一下这张图片: 直线上的三个圆的周长为4(凸包是2x0矩形,对2计数两次),以120度角排列的圆的周长约为3.85,三角形的周长为只有3个单位。请注意,我忽略了实际周长的其他pi单位,因为我仅查看圆的中心,而不是圆的边缘。 对于任何给定,可能(几乎肯定会有)多种解决方案n。您可以自行决定输出其中的任何一个。方向无关紧要。 圆必须在六边形格子上。 圆圈的直径必须至少为10像素,并且可以填充或不填充。 您可以编写程序或函数。 输入可以通过STDIN作为函数参数或最接近的等效参数进行。 输出可以显示或输出到文件。 例子 下面我有n从1到10的有效和无效输出示例(仅对前五个有效示例)。有效的例子在左边;右侧的每个示例都比相应的有效示例大。 非常感谢steveverrill编写此挑战的帮助。包装愉快!

15
输出下一个假名
日语假名字符对应于日语中的单个声音。除ん(n)外,其他所有假名都由辅音部分和元音部分组成。日语假名有一种自然的排序,一种“字母顺序”,通常按10 x 5的表排列: | a i u e o ----------------------------- * | a i u e o k | ka ki ku ke ko s | sa si su se so t | ta ti tu te to n | na ni nu ne no h | ha hi hu …

2
火焰状的门把手键盘!
好吧,事实证明,Doorknob 在GitHub,Reddit和其他站点上的用户名是 KeyboardFire。那给了我一个主意... 任务 您在KeyboardFire Inc.(一家生产特殊键盘的公司)工作。而且,“特殊”的意思是每当您按下一个键时,房屋中的某些东西就会着火!在新的KeyboardFire门把手系列中,着火的物体是门把手。 但是,由于政府的愚蠢规定,您的用户需要知道房屋中的哪些门把手会着火。 考虑一下QWERTY键盘一部分的ASCII艺术: 1|2|3|4|5|6|7|8|9|0 q|w|e|r|t|y|u|i|o|p a|s|d|f|g|h|j|k|l z|x|c|v|b|n|m (|的代表键之间的边界。) 我们可以将此精确的ASCII绘图视为某种“图形”,其中范围内的每个字符[a-z0-9] 都有一个x(水平)和y(垂直)索引,其中(0,0)为1。例如,字母d具有坐标(2,6)(坐标计算中包括管道和空格)。 现在让我们考虑每个用户的房屋。可以按20x4 ASCII字体从上到下的角度绘制每所房子的图(在这个合法的销毁键盘销售的世界中,每座房子的大小都是一样的)。我们可以使用D来标记房屋中每个门把手的位置。这是一个例子: D D D D D D D 我们将其称为“房屋地图”。(是的,这是很多门把手!) 按任意键将点燃最近的门把手。例如,如果我们采用字母的先前坐标d,则最近的门把手(按曼哈顿距离)位于该坐标处(1,4)。这d是敲击字母时将着火的门把手。如果我们用标记火红的门把手F,结果将是: D D D D F D D 规格 您的程序将接受两个输入: 与模式匹配的字符串[a-z0-9]+。 房屋地图。这可以是一个字符串,字符串列表或等效的字符串。 您需要遍历字符串的每个字母并着火点燃相应的门把手(将其字母更改为F)。如果最近的门把手已经着火,请保持原状。如果使用此方法着火的门把手多于1个,则可以点亮任意一个。 以这种方式处理了整个字符串之后,您需要打印生成的房屋地图。 代码高尔夫球,所以最短的程序将获胜。照常禁止标准漏洞。 例 串: helloworld123 房屋图: D D D D D D …

2
格式化首付资金
介绍 编写为段落添加首字母大写的程序或函数。该程序将输入要设置格式的文本,列宽以及要删除大写字母的行数。首字母大写如下: Lines: 2 3 4 Drop capital: A| A.| A..| ~' ..| ...| etc. ~~' ...| ~~~' 这是与排版有关的挑战。 输入项 输入一串可打印的ASCII字符(没有制表符或换行符),以及两个大于1的整数。 一个整数是输出应具有的列数。 另一个是下降资本跨越的行数。 文本字符串包含用单个空格分隔的单词。 假设所有单词都不超过列宽。 那是,column width > longest word + drop capital height 所有行将至少包含一个单词。 对于此挑战,单词由空格以外的任何其他字符组成。 输入可以按照上述规则以任何方便的格式进行。 输出量 左对齐的文本块,包含带有指定行数的首字母大写。 一行应包含尽可能多的单词,且长度不超过列宽。 在首字母大写和每一行的其余部分之间都有一个空格。 允许一个尾随空格或换行符。 例子 Lines: 2 Columns: 10 Text: The quick …

2
这些树是同构的吗?
介绍 在这个挑战中,您的任务是编写一个程序,该程序确定两个给定的树是否同构。树表示有向无环图,其中除根节点之外,每个节点都只有一个输出边缘。如果可以通过重命名节点将一棵树转换为另一棵树,则两棵树是同构的。例如,两棵树(每个边缘朝上) 0 0 /|\ /|\ 1 3 4 1 2 5 |\ /| 2 5 3 4 很容易看出来是同构的。 我们L通过以下方式将树编码为非负整数列表。树的根具有标签0,并且还具有节点1,2,...,length(L)。每个节点i > 0都有一个传出边缘L[i](使用基于1的索引)。例如,列表(在元素下给出索引) [0,0,1,3,2,2,5,0] 1 2 3 4 5 6 7 8 编码树 0 /|\ 1 2 8 | |\ 3 5 6 | | 4 7 输入项 您的输入是两个非负整数列表,以本机格式或您的语言给出。它们以上面指定的方式编码两棵树。您可以假设以下条件: 他们不是空的。 它们具有相同的长度。 …

2
编译正则表达式(通过替换)
您的任务是通过为正则表达式中的每个字符指定替换来编译正则表达式。 正则表达式 正则表达式支持这些 REGEX = (LITERAL REGEX / GROUP REGEX / STAR REGEX / ALTERNATIVE) LITERAL = 1 / 0 GROUP = '(' REGEX ')' STAR = (LITERAL / GROUP) '*' ALTERNATIVE = '('REGEX ('|' REGEX)*')' 为什么只有1或0?这是为了简化。因此,正则表达式仅具有以下字符: *()|10 其解释如下: * 是Kleene星号(重复左组或字面量0次或多次)。 | 是交替(如果左侧的正则表达式或右侧的正则表达式匹配,则匹配)。 () 正在分组。 1 匹配字符1。 0 匹配字符0。 怎么编译? …

17
钻石拼图!
说明: 去年在数学课上,我们有时会在作业上获得这些极为简单的问题,尽管这些问题同样令人讨厌,它们被称为“钻石拼图”。这些基本上是问题,我们将在其中得到一个总和,然后要求乘积找到两个数字,当相乘时得出两个数字,相加时得出和。这些使我发疯,因为我知道如何解决它们的唯一方法(在代数I中)是只列出乘积的因子,然后查看添加哪些因子来求和。(由于当时我不知道如何使用二次方)更不用说,它们并不是对数学的完全挑战。但是,我刚想到我应该写一个程序。这就是您今天的挑战!编写一个可以解决钻石难题的程序。 示例 为模糊的图像致歉,这是我能找到的最好的。另外,也不要理会气泡中的数字。菱形的顶部是乘积,底部是和,底部和右侧是两个数字。答案如下:(这些也是您的测试用例) 9,-7 -2,-1 5、8 -9,-9 规则: 您不得使用任何预定义的函数或类来帮助您完成此任务。 您的代码必须是完整的程序或函数,一旦找到它们,它们将返回或打印答案 输入是总和和乘积,它们是作为功能参数或用户输入输入的 规格: 假定两个数字,总和和乘积将始终是整数。 这两个答案都将在-127至127之间。 您的输入将是两个整数(总和和乘积)。 请记住,这是代码高尔夫球,因此最短的字节数为准。请用标准的##语言名称,字节数为答案命名 编辑:此外,Doorknob指出,这实际上是“分解形式为x ^ 2 + bx + c的二次项”。这是思考和应对这一挑战的另一种方式。:D
21 code-golf  math 

2
那细菌去哪儿了?
介绍 您是一位研究细菌运动模式的生物学家。您的研究团队在培养皿中有一堆,您正在记录它们的活动。不幸的是,您的资金严重不足,而且买不起摄像机,因此您只需要定期为盘子拍照。您的任务是创建一个程序,以跟踪这些图片中细菌的运动。 输入项 您的输入是两个2D字符数组,它们以任何合理的格式表示皮氏培养皿的连续图片。在这两个数组中,字符.代表空白空间,并O代表细菌(可以根据需要选择任意两个不同的字符)。同样,通过在四个基本方向之一上将某些细菌移动一步,从“之前”阵列中获得“之后”阵列。特别地,阵列具有相同的形状。细菌会同时移动,因此如果其中一个细菌移开了,它们中的一个可能会移动到已经包含另一种细菌的空间中。确保“ before”数组的边界仅包含空白空间,并且至少有一个病菌。因此,以下是一对有效的输入: Before After ...... ...... .O..O. ....O. .OO.O. .OO.O. ...... ..O... 输出量 您的输出是单个2D字符数组,其格式与输入相同。它是从“之前”阵列中获得的>^<v,方法是根据移动的方向(使用移动的4个不同的字符)替换其中一个已移动的细菌。可能会有几种输出,但是您只能给出其中一种。在上面的示例中,一种可能的正确输出是 ...... .v..O. .>v.O. ...... 输出中允许不必要的移动,并且细菌可以交换位置,因此以下内容也有效: ...... .v..v. .>v.^. ...... 规则和计分 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。 我对相对高效的算法感兴趣,但我不想完全禁止蛮力。因此,在现代CPU上在10分钟内解决最后一个测试用例时,可获得-75%的奖励(我无法测试大多数解决方案,因此在这里我会信任您)。免责声明:我知道存在一种快速算法(搜索“不相交路径问题”),但是我自己没有实现它。 其他测试用例 Before ...... .O..O. ..OO.. ...... After ...... ..O... ...OO. ..O... Possible output ...... .>..v. ..vO.. ...... Before ....... .OOOOO. .O..OO. …

4
写一个时间机器奎因
编写一个程序,将一个字符串和一个整数作为输入n,并输出: n之前传递给程序的字符串; 一个新程序,将用于下一次调用。 您不能在程序外部存储任何数据,并且程序不能调用链中的先前程序。如果该字符串不存在,则输出一个空字符串(但仍输出下一个程序)。 运行示例,在该示例中,我program_n对每个后续程序都使用了这种表示法(当然,[This text is the nth program]它将被实际的代码替换。) $ program_1 "One" 1 [This text is the second program] $ program_2 "Two" 1 One [This text is the third program] $ program_3 "Three" 2 One [This text is the fourth program] $ program_4 "Four" 2 Two [This text is …
21 code-golf  quine 

3
进行冥王星飞越
恭喜你!您刚刚被NASA聘请从事新的Horizo​​ns 2项目。 可悲的是,最近削减了巨额预算,因此高层管理人员决定伪造整个计划的冥王星飞越(就像他们在70年代登月那样)。 您的任务是编写一个程序,该程序以格式接受日期作为输入yyyymmdd,并提供该日期的伪造Pluto照片。您可以假设输入的日期为2015年或2016年。 照片是15x15的ASCII字符网格。网格上的字符的x和y坐标在范围内[-7, 7]-左上角的字符位于,(-7, -7)而右下角的字符位于(7, 7)。 该照片将按照以下规则计算: 该探测器将最接近冥王星于25/12/2015 d到冥王星的距离由以下公式给出:square root of ((difference in days to christmas) ^ 2 + 10) r照片上冥王星图像的半径为:22 / d (x, y)在网格上具有坐标的字符必须设置为#if x^2 + y^2 <= r^2; 否则必须将其设置为空格。 有星星的位置(-3, -5),(6, 2),(-5, 6),(2, 1),(7, -2)。星星由点表示.,而它们当然被冥王星隐藏。 还有一件事:美国宇航局董事会得出结论,在冥王星上发现生命可能会导致预算大幅增加。然后,您的程序应为冥王星增加生活线索: 当到冥王星的距离<= 4时,在坐标处添加一个冥王星(-3,-1):(^_^) 输入的示例照片20151215:(您的代码应与此代码一样包含所有换行符) . # . ### ##### ###. # …

2
N-皇后马奎因
众所周知的N皇后问题有一个变体,其中涉及皇后和骑士,并且据说“难度更大” 1。问题陈述如下: 您必须在棋chess上放置相等数量的骑士♞和皇后♛,以使任何棋子都不会攻击其他棋子。您可以在板上放置的最大块数是多少,可以用几种不同的方法来做? 在此代码高尔夫球挑战中,将为您提供3到32之间的输入n(以最适合您的语言的方式)。对于给定的n,上述问题可能有零个或更多个解决方案。如果没有解决方案,则必须不输出/返回任何内容(nil,空字符串,false,...)。否则,您必须给出两个结果: 尺寸为n的解决方案板(请参阅下文),在没有任何棋子受到攻击的情况下无法添加皇后或骑士棋子。皇后和骑士人数相等。 要运行的程序的源,该程序不接受任何输入,并且以相同的格式给出(i)具有相同大小n的另一个解决方案(或不提供任何东西),以及(ii)用于下一个解决方案的另一个程序(依此类推) ...)。 注意: 程序序列必须永远不会返回同一块板两次,必须涵盖大小为n的问题的所有可能解决方案,并最终必须终止(不产生输出)。 您可以返回两个值,返回一个并打印另一个值,或者打印两个返回值。 但是,如果您同时打印电路板和下一个程序,则不能将电路板视为下一个程序的一部分(建议您在注释中打印电路板,或者同时使用标准输出和错误流)。 程序的返回值必须是字符串,而不是闭包。 板格式 一块木板是大小为n的正方形。 棋盘格可以是空的,皇后或骑士。 您必须为每种单元格选择不同的值(即,在印刷电路板时可以使用Q,N以外的其他符号)。 如果返回一个非字符串板,则它必须是该板的n 2个值的有序集合(例如,矩阵,向量或以行/列为主的列表,...)。 如果要打印板,则可以将其打印为正方形或线条。例如,可以按以下方式打印大小为4的解决方案板(不需要空格;可以根据需要选择符号): Q - - - - - - - - - - - - - N - 如果有这种感觉,您还可以输出: ♛ · · · · · · · · · · · · · …
21 code-golf  quine  chess 

9
数字1至7的总和
挑战 给定一个正整数N是28或以上,输出一个数字求和到的列表N,它使用每个数字1通过7一次。您可以给出程序或功能。 这些数字可以单独出现,也可以串联在一起,只要您一次使用它们而无重复即可。例如,[12, 34, 56, 7]是有效的,因为是[1, 27, 6, 4, 35]和[1234, 567],但不[123, 34567]还是[3, 2, 1476]。列出数字的顺序无关紧要。 如果N不能用1-7表示,则不返回或不输出。 其他资讯 这是代码高尔夫球,因此10月15日星期四之前以字节为单位的最短代码将获胜。 在评论中提出任何问题。 我在挑战中未指定的任何内容都取决于您。 不允许出现标准漏洞。 例子 这些可能会清除任何混淆: 输入项 28 输出量 [1, 2, 3, 4, 5, 6, 7] 输入项 100 输出量 [56, 7, 4, 31, 2] 输入项 1234567 输出量 [1234567] 输入项 29 输出量 没什么,29无效。 输入项 1891 …
21 code-golf  math  number 

4
用法语讲时间
卓悦,PPCG!Quelle heure est-il?这意味着法语现在几点了,因为这恰恰是这一挑战所要解决的。 用法语(至少是正式时间)讲时间与用英语讲时间有点不同。告诉时间从Il est(It)开始。然后,您在小时数后面加上小时数(时)。(如果您不知道法语数字,请使用以下列表:http : //blogs.transparent.com/french/french-numbers-learn-how-to-count-from-1-to-1000/)。如果是1点钟,请谨慎处理。中午时分,使用midi(不加尿),午夜时使用minuit。 除非分钟为00,否则您将以分钟为单位。但是,有一些例外。15分钟内您要说et夸脱,30分钟内您要说et demi。对于30分钟后的任何内容,您可以将小时数增加1,然后加上单词moins和60-分钟。因此,下午9:40是9月下午的生命(生命 = 20)。45分钟将是夸脱。 最后,以一天中的时间结束它。对于早上(上午1点至下午12点),您说du matin。对于下午(主观,但我将其定义为下午1点至下午5点),您说的是de l'apres-midi(从技术上讲,应在e上方加上一个重音符号,但是eh)。在晚上(下午5点至中午12点),您说du soir。请注意,在午夜和中午(小腿和midi)之后,您不要放任何这些-根据您使用的时间暗示一天中的时间。 您可能已经确定,这里的挑战是使用这些规则以法语打印当前当地时间。这是在各个时间样本输出的样子。(括号中的时间不必明显地打印出来,它只是在那里,所以您知道现在几点了): Il est sept heures du matin. (7:00 A.M) Il est deux heures de l'apres-midi. (2:00 P.M) Il est une heure du matin. (1:00 A.M) Il est huit heures du soir. (8:00 P.M) Il est …

9
为什么?为了讨好有钱的程序员!
您是否曾经想问过编译器“为什么?” 当代码无法正常工作时,我们大多数人都感到沮丧。因此,Mathworks实现了一个很好的小功能why,它回答了这个问题。举一些MATLAB的例子: why The programmer suggested it. why To fool the tall good and smart system manager. why(2) You insisted on it. why(46) Bill insisted on it. 您的任务是why用您的语言实现该功能。该函数应在有或没有输入参数的情况下工作(或者使用input 0或-1)。该函数必须被命名why(或者,why(n)用STDIN 编写将导致打印适当的字符串)。 如果未提供任何参数,或者参数为零或负数,则输出字符串应为随机的有效短语。因此,应该有一个功能why,why(),why(0)或why(-1)返回一个随机的句子。 如果给出了输入参数n(函数参数,不是STDIN),则输出应为第n个字符串(定义如下)。因此,why(1)应始终输出(打印/显示)相同的结果。 句子的构成如下(类型1,类型2和特殊)。所有句子都以结尾!。 "Person" "ending" ! "Verb" "adjective" "Person" ! A list of special cases 人员名单: Stewie Peter Homer The …
21 code-golf 

3
计算给定大小的组
团体 在抽象代数中,一个组是一个元组,其中是一个集合,而是一个函数,使得以下内容成立:G ∗ G × G → G(G,∗)(G,∗)(G,\ast)GGG∗∗\astG×G→GG×G→GG\times G\rightarrow G 对于所有的在,。G (x ∗ y )∗ z = x ∗ (y ∗ z )x,y,zx,y,zx, y, zGGG(x∗y)∗z=x∗(y∗z)(x∗y)∗z=x∗(y∗z)(x\ast y)\ast z=x\ast(y\ast z) 存在一个元件在使得对于所有中,。G x G x ∗ e = xeËeGGGxXxGGGx∗e=xx∗e=Xx\ast e=x 对于每一个在,存在一个元素在使得。G y G x ∗ y = exXxGGGyÿyGGGx∗y=ex∗y=Ëx\ast y=e 组的顺序定义为的元素数。G(G,∗)(G,∗)(G,\ast)GGG 对于每个严格的正整数,至少存在一组阶。例如,是这样的组,其中和。Ñ (ç Ñ,+ …

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.