编程拼图和代码高尔夫

编程益智爱好者和代码高尔夫球手的问答

6
将半排序插入未排序的数组
欢迎来到PPCG Inc.的第一天。作为我们最新的初级助理文件分类机,您有责任确保我们发送给您的所有文件都按字母顺序存档。猴子很容易做到。好吧,隐喻地说,就像我们确实雇用了一只猴子来做那样。你猜怎么了?原来猴子对我们的字母缺乏理解。无论如何,现在没有时间修复现在的混乱局面,所以请尽量不要使情况变得更糟,好吗?然后去吧!如果饿了,水冷却器旁会放着香蕉。祝好运! 职位描述 输入值 您将收到一个字符串列表(档案)和一个需要添加到该列表的字符串(文档) 所有字符串将仅包含大写字母,小写字母和空格 字符串始终以字母开头和结尾 任务 确定文档的目标位置:应在存档中接收的位置。目标位置可以如下确定: 对于每个职位: 计算该位置之前存档中字符串的数量(按字母顺序排列) 计算该位置之后档案中按字母顺序排列的字符串数量 将职位的分数定义为以上两个计数之和 文档的目标位置是得分最高的位置 在平局的情况下,所有得分最高的职位均有效地充当目标职位。只需要选择一个。 排序时: 大写和小写字母是等效的 字母前有空格 输出量 以任何形式添加了文档的存档 要么 基于0或1的索引中文档的目标位置 工作评估 最小字节获胜! 示例I / O Archive: Applebuck Season Friendship is Magic The Ticket Master Griffon the BrushOff Boast Busters Bridle Gossip Document: Dragonshy Position scores (0-based index): 0: …

7
绘制索引分形
介绍 在这个挑战中,索引2×2的矩阵是这样的: 0 1 2 3 我们定义了一系列类似分形的图案F(L),其中L是n这些索引的长度列表,并且F(L)具有size 。2n-1 × 2n-1 如果L == [],F(L)则为1×1模式#。 如果L != [],则F(L)构造如下。取P为L删除第一个元素后获得的图案。取4个大小充满周期的网格,并用模式替换用索引的网格。然后,使用网格之间的一层哈希将网格粘合在一起。这是四种情况的图表:2n-1-1 × 2n-1-1.L[0]P# L[0]==0 L[0]==1 L[0]==2 L[0]==3 #... ...# ...#... ...#... [P]#... ...#[P] ...#... ...#... #... ...# ...#... ...#... ####### ####### ####### ####### ...#... ...#... #... ...# ...#... ...#... [P]#... ...#[P] ...#... ...#... #... ...# …

7
把绳子变成风车
该站点上的代码正在迅速耗尽。我们需要投资可再生能源。因此,您必须编写一个使用字符串并将其转换为风车的程序。 挑战 让我们以一个简单的风车弦为例。拿弦abc。该枢纽为中心的性格,在这种情况下b。由于字符串的长度为3个字符,因此每个输出将恰好是三行高和三个字符宽。这是步骤1的输出。(请注意空格) abc 要进行下一步,请顺时针旋转每个字符。这是步骤2: 一种 b C 这是步骤3-8: 一种 b C 一种 b C cba C b 一种 C b 一种 C b 一种 在第九步中,它绕到原始字符串整圈: abc 注意b整个时间都停留在同一地点。这是因为b是关键人物。您必须编写一个将字符串作为输入的程序或函数,并重复打印此序列,直到关闭该程序。 澄清说明 所有输入字符串将具有奇数个字符。(以便每个风车都有一个枢轴) 为了简化挑战,所有字符串将仅包含大写和小写字母字符。 输出必须是len(input_string)宽而高的字符。 只要您继续旋转并永远循环,就从序列的哪一步开始无关紧要。 更多测试IO: 由于帖子已经很长了,因此以下是“ windmill”输出的链接: 边注: 由于这应该是风车,所以如果您包含一些样板代码以使其具有较小的时间延迟或在每个步骤之间由用户输入动画效果,那就太好了。但是,由于某些语言没有内置时间,因此这不是强制性的。您提交内容的竞争部分可以尽快打印序列。

5
确定乔木满意的点集
一个arborally满意点集是2D点集,使得对于可在所述一组作为相对的角通过两个点来形成,该矩形包含或触摸至少一个其它点的任何轴对齐矩形。这是维基百科的等效定义: 如果具有以下属性,则可以说是满足点集要求的点:对于不都位于同一条水平线或垂直线上的任何一对点,都存在第三个点,该点位于前两个点所跨的矩形中(在边界内或边界上)。 下图说明了矩形的形成方式。不能任意满足此点集,因为此矩形还需要再包含至少一个点。 在ASCII技术中,此点集可以表示为: ...... ....O. ...... .O.... ...... 稍作修改就可以使它满足: ...... ....O. ...... .O..O. ...... 在上方,您可以看到所有矩形(其中只有一个)至少包含三个点。 这是乔木满足的更复杂点集的另一个示例: 对于可以跨越两个点绘制的任何矩形,该矩形至少包含一个其他点。 挑战 给定的点的矩形网格(其余与代表O)和空的空间(我所代表与.),输出一个truthy值,如果它是arborally满足,或falsey值,如果它不是。这是代码高尔夫球。 附加规则: 您可以选择使用这些字符,O并.与任何其他可打印的ASCII字符对互换。只需指定程序使用哪个字符映射即可。 网格将始终为矩形。尾随换行符是允许的。 更多例子 乔装满意: .OOO. OO... .O.OO .O..O ....O ..O.. OOOO. ...O. .O.O. ...OO O.O. ..O. OOOO .O.O OO.. ... ... ... ... ..O ... O..... O.O..O .....O OOO.OO …

2
做一个蛇解析器!
蛇看起来像这样: >>>v @ ^ v ^ >>>^ v ^ v ^<<<<<<<<< 在这种情况下,蛇可以越过自身: @ ^ >^>v ^<< 为了使交叉有效,两侧的字符必须沿相同方向移动。的情况下 @ >^v ^< 可以认为不清楚和无效。 输出是WASD代表从头到尾(@)的字符串。 给定一条不会回溯且不模糊的蛇,您是否可以编写一个程序来输出蛇执行的一系列动作? 这是代码高尔夫球,所以最短的答案会成功! 测试用例: (注意:@可以用以外的任何字符替换v^<>) 输入: >>>>v v v<< @ v ^ >>>>>^ 输出: ddddssaassdddddww 输入: @>>v ^ v ^ v ^<<< 输出: dddsssaaawww 输入: >>>v v @ v …

1
生成ASCII Art
给定任何合理的无损格式的黑白图像作为输入,请输出与输入图像尽可能接近的ASCII图像。 规则 只能使用换行符和ASCII字节32-127。 输入图像将被裁剪,以使图像周围没有多余的空白。 提交的内容必须能够在5分钟内完成整个评分语料库。 只接受原始文本;没有富文本格式。 评分中使用的字体为20点Linux Libertine。 如下所述,输出文本文件转换为图像时,其尺寸必须与输入图像相同,且任一尺寸均在30像素之内。 计分 这些图像将用于评分: 您可以在此处下载图像的zip文件。 提交内容不应针对该语料库进行优化;相反,它们应该适用于任何8张相似尺寸的黑白图像。如果我怀疑针对这些特定图像优化了提交,我保留更改语料库中图像的权利。 得分将通过以下脚本执行: #!/usr/bin/env python from __future__ import print_function from __future__ import division # modified from http://stackoverflow.com/a/29775654/2508324 # requires Linux Libertine fonts - get them at https://sourceforge.net/projects/linuxlibertine/files/linuxlibertine/5.3.0/ # requires dssim - get it at https://github.com/pornel/dssim import PIL import PIL.Image …

10
我走了几步?
一个简单的计步器可以用一个摆锤来建模,该摆锤在相对的两侧具有两个开关-一个在x = 0处,一个在x = 1处。当摆锤接触到远处的开关时,可以认为步行者走了半步。当它接触附近的开关时,该步骤完成。 给定代表摆锤位置的整数列表,请确定计步器上记录的完整步数。 输入值 的整数升 > 0,轨道的长度。 代表每次计步器摆的位置的整数列表。 输出量 测量的完整步骤数。当摆锤接触远开关(x> = l),然后接触近开关(x <= 0)时,将采取步骤。 测试用例 8, [8, 3, 0, 1, 0, 2, 2, 9, 4, 7] 1 摆在t = 0时立即在x = 8处与远端开关接触。然后,它在t = 2和t = 4处触摸接近开关,完成一个步骤。此后,它在t = 8时再次触及x = 9的远处开关,但再也没有触及近处的开关。 1, [1, 5, -1, -4, -1, 1, …

8
仅用0-9和四个运算符来表示数字
说明 Befunge是使用stack的二维程序。 这就是说,做5 + 6,你写56+,意思是: 56+ 5 push 5 into stack 6 push 6 into stack + pop the first two items in the stack and add them up, and push the result into stack (to those of you who do not know stacks, "push" just means add and "pop" …

3
二维平面上的最长路径
为您提供了一组任意的,任意的2d整数笛卡尔坐标:例如[[(0,0),(0,1),(1,0)] 从这组坐标中找到可能的最长路径,并限制只能“访问”一次坐标。(而且您不会“回到”开始时的坐标)。 重要: 您不能“越过”坐标或其周围。例如,在最后一个音符示例(矩形)中,您不能不访问C就从D移到A (这可能是重新访问,从而使找到的长度无效)。@FryAmTheEggman指出了这一点。 函数输入:二维笛卡尔坐标数组 函数输出:仅最大长度 获胜者: 最短代码获胜,没有保留被禁止(不是时空效率最高的) 例子 1:在上面所示的情况下,没有两次“访问”坐标的最长路径是A-> B-> O(或OBA或BAO),并且路径长度是sqrt(2)+ 1 = 2.414 2:在上述情况下,两次没有坐标“访问”的最长路径是ABOC(显然是COBA,OCAB等),对于所示的单位平方,它计算为sqrt(2)+ sqrt(2)+ 1 = 3.828。 注意:这是一个额外的测试用例,它不如前两个示例那么简单。这是由6个坐标组成的矩形: 在这里,最长的路径是:A-> E-> C-> O-> D-> B,即8.7147 (最大可能的对角线走过且没有横越任何边)

6
缩写的泛化
给定单词列表及其缩写的输入,输出可以形成缩写的模式。 让我们以输入的示例为例 potato ptao puzzle pzze 作为一个例子(即,缩写potatoIS ptao,和缩写puzzle是pzze)。 考虑到所有可能的方法来获得ptao从potato。一种可能的方法是采用第一,第三,第四和第六个字母,我们将其称为 1346。但自从t和o这个词出现多次,还有其他多种可能的方式来产生ptao由potato:1546,1342,和1542。 同样,该说明pzze可从产生puzzle任何的1336, 1346,1436,1446。这两个缩写唯一的共同之处是1346; 因此,该输入必须是此输入的输出。如果有多种可能的模式,则可以输出其中的任何一个,一些或全部(至少一个)。 您可以假设: 输入的单词和缩写仅包含小写字母。 输入中至少有一个单词/缩写对。 每个缩写都有可能由其对应的单词构成。 总是会有至少一个模式构成每个缩写。 每个单词的最大长度为9个字符。 输入可以视为以下任意一项: 二维数组/列表/元组数组等 [[word, abbr], [word, abbr], ...] 平面一维数组/列表 [word, abbr, word, abbr, ...] 单个字符串,由非小写字母的任何单个字符分隔 "word abbr word abbr" 哈希/关联数组/等 {word => abbr, word => abbr, ...} 在这些输入选项中的任何一个中,也都可以交换单词/缩写的顺序(请在您的帖子中完整描述输入格式)。 输出可以是单个数字,由非数字分隔的字符串或数组/列表/元组/等。数字。 由于这是code-golf,因此以字节为单位的最短代码将获胜。 测试用例(请记住,如果多个模式都能工作,则仅需要输出≥1个结果): In …
14 code-golf  string 

5
找到海岸线
您的任务是找到ASCII地图中提供的岛屿地图的海岸线长度。输入地图将由1个或多个#表示土地的字符以及一些表示水的空间组成。海岸线被认为是水陆之间的任何边缘,包括内陆湖泊和岛屿。 您的解决方案应该是一个完整的程序,该程序可以读取文件,字符串或字符串数​​组,并向屏幕或stdout输出单个整数。每条输入行可以具有前导或尾随空格,以及零个或多个散列字符。假定地图的边界是空间(水)。 线的长度可以不同。 例子: Input: ## ## Output: 8 Input: ### ### ##### # ## Output: 26 Input: ##### # # # # # # # ##### Output: 36 这是代码高尔夫球,因此最小的字节数获胜。

2
杂货店微管理
您是一家时尚的新杂货店Half Foods的员工,这是感恩节 圣诞节复活节的前一天。由于商店将挤满顾客争抢食物,因此商店需要交通管理人员将每个人都送到适当的生产线。懒惰,您想使它自动化,以便您可以在所有人都吃掉所有火鸡 火腿之前就去熟食店。但是,随身携带的只是手机,在手机上编写长程序确实是一件很痛苦的事-因此您需要淘汰忍者代码高尔夫技能。 挑战 让我们在二维网格上可视化杂货店。这是要剖析的示例网格: e s s s Y # # #s # #s # #s # #s # #s # #s #s #s # #3 #1 #4 # x x x x 网格以开头e,代表商店其余部分的“插座”。每一代,网格中的所有出口都在s下面直接产生一个购物者()。购物者每一代都向下移动,直到他们到达您(Y)。当购物者到达与您相同的行时,您必须将其传送到购物者最少的行的开头。购物者将与一起进入行时,立即移动到行中Y,两者之间没有生成。这些行由#s 表示-s之后的列#是一行。购物者下到行尾(由exit表示x),然后变成介于1和之间的随机数5。每一代,您都必须减少购物者的数量1-当购物者到达时0,他们已经完成结帐并离开商店。 给定这样的网格输入,输出下一代杂货店(同时将所有购物者放下,将购物者重定向,并在完成后让他们离开)。 样本 输入: e Y # # # # # # # # …
14 code-golf  string  grid 

11
正整数的严格分区
OEIS A000009计算整数的严格分区数。甲严格分区一个非负整数的n是一组正整数(因此没有重复是允许的,并且顺序无关紧要),其总和n。 例如,5有三个严格分区:5,4,1,和3,2。 10有十个分区: 10 9,1 8,2 7,3 6,4 7,2,1 6,3,1 5,4,1 5,3,2 4,3,2,1 挑战 给定一个非负整数n<1000,输出其具有的严格分区数。 测试用例: 0 -> 1 42 -> 1426 这是OEIS中从0到55的严格分区号的列表: [1,1,1,2,2,3,4,5,6,8,10,12,15,18,22,27,32,38,46,54,64,76,89,104,122,142,165,192,222,256,296,340,390,448,512,585,668,760,864,982,1113,1260,1426,1610,1816,2048,2304,2590,2910,3264,3658,4097,4582,5120,5718,6378] 这是代码高尔夫球,因此以字节为单位的最短解决方案为准。


10
将英语转换为没有内置或库的数字
这个挑战与其他挑战相似,但是我提出了一个限制(请参阅下面的黑体字),我认为这会造成很大的差异,并且(我希望)也很有趣。 挑战 以任何编程语言编写一个程序或函数,该程序或函数采用n不超过正整数的英语名称作为输入作为100返回n值。 禁止使用标准漏洞,并且您不能使用已经执行此操作的任何内置函数,外部工具或库。 以字节为单位的最短源代码获胜。 测试 在所有input->output情况下: one -> 1 two -> 2 three -> 3 four -> 4 five -> 5 six -> 6 seven -> 7 eight -> 8 nine -> 9 ten -> 10 eleven -> 11 twelve -> 12 thirteen -> 13 fourteen -> 14 fifteen …

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.