编程拼图和代码高尔夫

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

3
建立铁轨并欺骗政府
您是19世纪美国的铁路企业家,火车之所以流行,是因为火车是陆上运输大量物料的最有效手段。从东部沿海到西部一些最近被殖民的土地,全国都需要铁轨。 为了满足这种需求,美国政府将征收税款以补贴铁路。他们答应为铺设的每一英里轨道向您的铁路公司付款。由于在丘陵和山区铺设铁轨比在平坦的土地上铺设铁轨更昂贵,因此它们会相应地调整其用量。也就是说,政府将支付 在平坦土地上铺设的每英里轨道5,000美元 在丘陵地带铺设的每英里航迹为$ 12,500 每英里在山上铺设的路线20,000美元。 当然,该计划不能准确反映铺设轨道的实际成本。 您已经雇用了一些制图师来绘制您将要分析高程的区域的地形图。这是一张这样的地图: S12321 121234 348E96 每个数字代表一平方英里的土地。S是起点,E是终点。每个数字代表该区域中海拔变化的强度。 编号为1-3的土地构成平地。 编号为4-6的土地构成丘陵地。 编号为7-9的土地构成山脉。 通过多年的铁轨建设经验,您已经评估出铁路建设成本(以美元为单位)满足以下公式: Cost_Per_Mile = 5000 + (1500 * (Elevation_Rating - 1)) 这意味着在某些海拔梯度上修建房屋将比政府给您更多的钱,有时它会有利可图,有时您甚至会收支平衡。 例如,在海拔3的坡度上行驶一英里需要花费8,000美元,但是您只得到5,000美元的报酬,因此损失了3000美元。相比之下,在海拔高度为7的位置上建立一英里的轨道需要花费$ 14,000,但是您却获得了$ 20,000的收益:获利$ 6,000! 这是示例地图以及两个不同的可能路径。 S29 S#9 S## 134 1#4 1## 28E 2#E 2#E 第一条轨道的建造成本为30,000美元,但政府会为您支付30,000美元。您不会从此轨道中获利。 另一方面,第二台的建造成本为56,500美元,但您会得到62,500美元的报酬。您从此轨道中获利$ 6,000。 您的目标:给出一个浮雕图,找到从头到尾最有利可图(或也许仅仅是最便宜)的路径。如果有多个路径绑定,则其中任何一个都是可接受的解决方案。 计划详情 文本输入由矩形的数字和一个起点和终点分隔。每个数字都是1到9之间的一个整数(包括1和9)。除此之外,可以在合理的范围内根据需要提供输入。 输出应采用与输入相同的格式,其中已将构建轨道的数字替换为哈希(#)。由于某些反复无常的政治家施加了任意规定,因此轨道只能沿水平或垂直路径行驶。换句话说,您不能回溯或对角线走。 对于最多6行和6列的地图,该程序应能够在合理的时间内(即<10分钟)求解。 这是一场代码高尔夫挑战赛,因此最短的程序胜出。 我有一个示例(非高尔夫)实现。 …

24
加入片段的N个副本以产生N ^ 2个字符
挑战 编写尽可能短的代码段,以便将N个副本串联在一起时,输出的字符数为N 2。N将为正整数。 例如,如果代码段为soln();,则运行soln();将仅打印1个字符,运行soln();soln();将仅打印4个字符,运行soln();soln();soln();将仅打印9个字符,依此类推。 只要字符总数正确,输出中就可以包含任何字符。为了避免跨OS的混淆,\r\n换行符被视为一个字符。 程序可能无法读取其自身的源代码或读取其文件大小或使用其他此类漏洞。将此视为严格的奎因挑战。 输出可能会转到stdout或文件或类似的替代文件。没有输入。 代码中的注释很好,退出执行过程中也是如此。 程序中可能包含任何字符。以字节为单位的最短提交获胜。

6
平衡化学方程式!
伯恩德(Bernd)是一名高中生,在化学方面有一些问题。在课堂上,他必须为正在进行的某些实验设计化学方程式,例如庚烷的燃烧: C 7 H 16 + 11O 2 →7CO 2 + 8H 2 O 由于数学并不是Bernd最强的学科,因此他经常很难找到反应的正负离子之间的确切比例。既然您是Bernd的家庭教师,那么帮助他就是您的工作!编写一个程序,计算获得有效化学方程式所需的每种物质的量。 输入值 输入是没有数量的化学方程式。为了使纯ASCII码成为可能,我们将任何订阅都写为普通数字。元素名称始终以大写字母开头,后跟小写字母。分子之间用+符号分隔,->等式两边之间插入了ASCII箭头: Al+Fe2O4->Fe+Al2O3 输入以换行符终止,并且不会包含任何空格。如果输入无效,则您的程序可以执行您喜欢的任何操作。 您可能会假设输入内容的长度不得超过1024个字符。您的程序可能无法从标准输入,从第一个参数读取输入,也可能会在运行时以实现定义的方式读取输入。 输出量 程序的输出是输入方程式,其中增加了额外的数字。每个元素的原子数在箭头的两侧必须相同。对于上面的示例,有效输出为: 2Al+Fe2O3->2Fe+Al2O3 如果一个分子的数目为1,则将其删除。数字必须始终为正整数。您的程序必须产生数字,以使它们的和最小。例如,以下内容是非法的: 40Al+20Fe2O3->40Fe+20Al2O3 如果没有解决方案,请打印 Nope! 代替。没有解决方案的样本输入是 Pb->Au 规则 这是代码高尔夫球。最短的代码获胜。 您的程序必须在合理的时间内终止所有合理的输入。 测试用例 每个测试用例都有两行:输入和正确的输出。 C7H16+O2->CO2+H2O C7H16+11O2->7CO2+8H2O Al+Fe2O3->Fe+Al2O3 2Al+Fe2O3->2Fe+Al2O3 Pb->Au Nope!

3
种一棵树,看着它长大
我们正在生长的树木有一些规则来定义它们的生长方式: 成长规则: 树木仅由树枝组成。 分支是由以下的符号的组合组成: _,\,|,/,和_ 一棵树从|地面(_)上的单个垂直分支/树干()开始: __________________|___________________ 树枝生长的食物来自光线。 光线在天空中的每个点以2的强度开始并向下直线传播。 每个分支都能吃掉一半的光,其余的则直达较低的分支。 因此,一个分支上没有其他分支的分支每个季节将获得1单位的清淡食物,一个分支上具有1个分支的分支每个季节将获得0.5单位的食物,并且通常情况下,分支上具有n个分支的分支将获得每个季节1 /(2 ^ n)单位食物。 在每个季节结束时,食物从树干开始一直向上移动并转化为新的分支和果实(应用以下规则,直到分支变成果实或剩余的食物少于1单位): 如果一个分支在一个季节结束时的食物少于1个单位,则该分支的所有食物都存储在该分支中,直到下一个季节。 如果分支的食物量大于或等于1个单位并且具有增长空间,则它会使用可用的生长方式(请参见下文)随机生长一个新分支,并存储下一季的剩余食物。 如果分支的食物数量大于等于1,无处生长,并且分支分支,则将食物平均分配到分支分支 如果分支机构的食物数量大于等于1,并且无处生长且没有分支分支,则该分支机构将变为果实(以表示O) 这是可能的增长配置 增长配置: _ \ | / _ _ \ | / \ | / _ | | | | | \ \ \ \ / / / / __ \_ |_ …

11
打印,递增,递减,别名-解释本领
Prindeal(明显的首席- DEE-AL)是一种新的深奥的编程语言,只有四个命令:PR INT,在 crement,德 crement,和人 IAS。尽管极简,但可以通过巧妙地组合四个命令在Prindeal中完成复杂的数学运算。 在此挑战代码中,您的任务是编写可以运行Prindeal代码的最短程序。 规范很长,但是我已经尽力使它更清晰了,我相信,如果您努力学习Prindeal,您会发现它非常优雅! 领主 预处理 在解释Prindeal程序之前,需要按以下顺序从其中删除这些内容: #行尾的符号后的所有内容,再加上#本身。(这些是评论。) 任意行上的尾随空格。 完全空行。 例如,Prindeal程序 p cat #The next line has 7 trailing spaces. p dog #p mouse 将被预处理成 p cat p dog 从这里开始,我们假设此预处理步骤已经完成。 变数 在显示变量的用法之前,我们需要快速定义变量。 变量(以及对变量的引用)是传递给Prindeal命令的参数的。变量始终是全局变量,因此无论变量在何处出现,其修改都会随处可见。 每个变量都包含一个非负的任意精度整数(0、1、2、3,...)。变量不需要预先初始化- 首次使用或调用变量时,它们始终以0开头。 变量名称可以是任何非空的字母数字和下划线,但不能以数字[a-zA-Z_][0-9a-zA-Z_]*输入正则表达式开头。他们是大小写敏感的,所以spiny_lumpsuck3r和Spiny_lumpsuck3r是不同的变量。 执行 Prindeal是命令式编程语言。当运行Prindeal程序时,其语句从上到下依次执行,然后该程序结束。 Prindeal程序中的每条非缩进行都是一条语句,该语句涉及单个命令的执行,该命令可以带或不带参数。 缩进行仅在别名命令之后出现。具体来说,在每条别名命令之后,恰好有三行缩进一个空格, 并被视为其中一部分。因此,别名语句实际上是四行。(它们可能是一行,而四行则更具可读性。) 非别名语句 除alias之外,Prindeal程序中的每个语句都具有以下形式: [command name] [argument …

23
在多个会话中递增数字
晚上好,高尔夫经纪人, 您的任务是代表着名的娱乐巨人Eviltronic Arts。作为其全球奴役和娱乐计划的一部分,他们必须出售尽可能多的SimStation V副本。这意味着该软件必须在启动几次后神秘地停止工作。 您的目标是编写一个计算其运行次数的程序。程序除了将整数写入stdout之外,什么都不做。第一次运行时,它应该返回“ 1”。下一个“ 2”,依此类推。该程序必须至少能够达到数字“ 14”,但没有要求的上限。 但是,您的程序不得写入任何新文件。完全可以访问自身,注册表,甚至是Internet。但是我们的某些用户怀疑新文件,只会覆盖它们!好紧张!击败他们合法购买的软件限制! 该程序不能采用稳定的解释器或外壳程序-如果在运行之间重新启动整个解释器,则该程序必须仍然可以运行。 由于必须尽可能地不可检测,因此将以最短的源代码为准。 祝你好运。娱乐业指望您。
30 code-golf 

11
将高度图交换为深度图
描述 您的任务是输出一个“深度图”-即对象的高度图,但不是从其顶部而是从其正面看到。 例如,考虑以下对象,如图所示。高度图显示在左侧。相应的深度图应为(如从箭头处看到的那样): 010 211 <- Depthmap 322 如果您站在箭头处,则在左下角点处彼此后面有3个多维数据集,在左中角点处彼此后面有2个立方体,在左上角点处有0个立方体等。 输入值 输入是任何大小的二维数组(不一定是正方形)。 输出量 输出是另一个二维数组,它表示深度图。可以推断,其大小为(height x width)。在图像中,它将为(3 x 3)。请注意,如果多维数据集的最高塔为5,则深度图将是的数组(5 x 3)。 获奖条件 最短的代码获胜。 不允许的 允许所有语言,没有明确的限制。(我不知道你能想出什么,但是请公平对待。) 例子 Input: Ouput: 5321 0001 1456 1012 2105 1112 1212 2222 3323 Input: Output: 22 01 13 12 00 22 Input: Output: (of the sample image) 232 …
30 code-golf 

19
容易键入的单词
这场比赛结束了。 获胜者是CJam(22个字符),比TwiNight的答案要高一个字符。恭喜丹尼斯! 值得一提的是法尔科(Falko),他对免费进口产品一无所知。 。 不久前,我想知道如何用诺基亚3310淘汰现代智能手机,尽管确实有一些答案,但我仍然跟不上!也许我应该采取不同的方法,根本不要写任何难以输入的单词。 如果在标准布局下,电话键盘上的同一按钮上没有两个连续的字母,我们将称其为易于键入的文本: 你的任务 您的任务是编写一个程序/函数,该程序可以接受s来自stdin / 的字符串作为参数,如果s可以轻松键入,则返回真实值,否则返回虚假值。输入将仅包含小写字母和空格,并且保证为非空! 计分 这是代码高尔夫,因此最少的字符数获胜。 进口报表将不会对你的最后得分进行计数,所以如果你曾经想使用std::set_symmetric_difference,liftM4或itertools.combinations在你的代码,现在是时候了! -3如果您的源代码可以轻松键入,并且假设所有不是字母的内容都位于按钮0上。毕竟,我可能想将您的代码发送给一些朋友! 测试用例 以下是一些测试用例,以检查您的代码是否按预期工作: "x" -> True "aardvark" -> False "ardvark" -> True "flonk" -> False "im codegolfing all day long" -> False "i indulge in minimizing bytecount" -> True "havent heard from you in a long time" …
30 code-golf 

30
在不使用+,-操作的情况下检查整数是否为2的幂。
编写一个程序检查整数是否为2的幂。 输入样例: 8 样本输出: Yes 输入样例: 10 样本输出: No 规则: 不要使用+,-操作。 使用某种输入流来获取数字。输入不应最初存储在变量中。 最短的代码(以字节为单位)获胜。 您可以使用任何真实/错误的响应(例如true/ false)。您可以假设输入数字大于0。

19
将数字转换为代表最多“ 4”的基数
灵感来自此。有一个数字,可以是整数,字符串或数字数组(您可以选择)。找到该数字表示形式将具有最多“ 4”的基数,然后返回该基数。 编号结果 624 5 444 10 68 16 限制条件: 返回的基数不应大于输入值。 小于或等于abs(4)的数字不应视为有效输入,因此可接受未定义的返回值
30 code-golf  number 

16
将两个数字相乘而不使用任何数字
给出两个以10为底的正整数的字符串作为输入,例如"12345"和"42"。"518490"在这种情况下,您的任务是输出包含其产品的字符串。 所不同的是,您不得在代码中使用任何数字类型。No ints,floats,unsigned longs等,没有内置的复数类型或任意精度的整数,或沿这些线的任何内容。您可能没有使用这些类型的文字,也没有使用返回它们的任何函数,方法,运算符等。 您可以使用字符串,布尔值,数组或其他通常不用于表示数字的东西。(但是请注意,不调用数字类型就不可能索引到数组或获取数组的长度。)chars是允许的,但是您不能对它们执行任何算术或按位运算,也不能将其视为除表示字符串一部分的令牌。(char允许对s进行字典比较。) 您可能无法解决该限制。这包括(但不限于)在eval类型函数内使用数字类型,将隐式类型转换为数字类型,对支持它们的非数字类型使用数字或按位运算符,使用存储在容器类型内部的数字类型或调用函数或外部程序以字符串形式返回数值结果。(如果答案中出现其他解决方法,我保留添加到此列表的权利。)您必须仅使用非数字类型自己实现乘法。 输入和输出可以通过任何方便的方法进行,只要数据以字符串形式进入和退出您的代码即可。您可以假定两个输入参数中的每个参数仅包含ASCII字符,[0-9]并且不会以开头0。您的输出也不应该有前导零。 还有一件事:您的代码必须正确处理至少10个字符的输入,并且必须在一分钟之内在现代计算机上运行该范围内的所有输入。发布之前,请检查给定输入9999999999和时9999999999,程序99999999980000000001在不到一分钟的时间内输出。专门存在此限制是为了避免通过分配大小数组a*b然后对其进行迭代来起作用的答案,因此请记住,该形式的答案将不符合要求。 这是代码高尔夫球,因此最短的有效解决方案(以字节为单位)获胜。

20
奥运会徽标-自由风格版
与此问题类似,您的任务是用最多1K的代码创建外观最好的徽标。 规则: 最多1K代码(含),没有外部数据。 投票最多的答案将获胜。 玩得开心!

30
编写交互式Deadfish解释器
Deadfish是一个带有四个命令的玩笑“编程语言”。由于Esolang页面有点矛盾,并且该页面上的解释器工作原理并不完全相同,因此您应该实现以下变体: 规格 有一个累加器,其大小至少为 16位,允许更多但不允许更少。不需要支持负数。0程序启动时就是累加器。 以下是两个包含四个命令的集合,您的程序必须同时支持两个命令。 标准死鱼│XKCD变体│含义 ────────────────┼────┼────────┼ ────────────────────────── i│x│累加器 d│d│减量累加器 s│k│平方(acc = acc * acc) o│c│输出累加器,以数字表示 在执行命令后,如果累加器为-1或256,则必须将累加器重置为零。请注意,这不是正常的环绕。例如,如果累加器为20,并且s运行命令,则应在400其后。同样,如果累加器为257且d运行命令,则累加器应变为0。 任何不是这些命令之一的输入都应被忽略。 测试程序 xiskso 应该输出 0 xiskisc 应该输出 289 输入输出 您的程序应显示提示:>>。提示必须在新行的开头。然后,它应该读取一行用户输入,并从左到右运行给定的命令。输出数字时,必须将数字分开。即12 34可以,12,34可以, 12 34 可以,但1234不能。 您的程序应继续循环执行此操作,至少直到EOF达到为止。 会话示例: >> xiskso 0 >> xiskisc 289 >> ddddo ddddo 285 281 >> ddddo ddddo 277 273 >> …

12
重复的斐波那契数字是什么?
您可能知道,斐波那契数是一个,它是该序列中前两个数的和。 斐波那契Digit™是前两个数字的总和。 例如,对于系列开始1,1,该系列将是1,1,2,3,5,8,13,4,7,11,2...。更改发生在之后,您可以13在其中添加而不是8+13添加1+3。系列在末尾循环,其中4+7=11和和1+1=2系列开始相同。 再例如,系列开始于2,2:2,2,4,6,10,1,1,2,3,5,8,13,4,7,11,2,3...。这个开始是唯一的,但是一旦数字总和到10,您最终得到1+0=1, 0+1=1,然后该系列继续进行-并循环-与该1,1系列相同。 挑战 给定一个整数输入0≤n≤99,请从这两个数字开始计算斐波那契数字系列中的循环。(当然可以允许您考虑超出此范围的整数,但这不是必需的。)如果输入的是一位数字,则您的代码应将其解释为表示序列的开头0,n。 循环中所有两位数字都必须输出为两位数字。因此,例如,for的循环1,1将包含13,而不是1,3。 输出从循环中的第一个数字开始。因此,基于上述限制,for的循环以1,1开头2,因为1,1和11分别计数。 只要是一致的,输出的每个数字都可以用您想要的分隔。在我所有的示例中,我都使用逗号,但是只要您始终使用相同的分隔符,都允许使用空格,换行符,随机字母等。所以2g3g5g8g13g4g7g11是一个合法的输出1,但2j3g5i8s13m4g7sk11并非如此。您可以使用字符串,列表,数组等任何东西,只要您具有以一致的分隔符分隔的正确顺序的正确数字。也可以用括号括住整个输出(例如(5,9,14)或[5,9,14]等)。 测试用例: 1 -> 2,3,5,8,13,4,7,11 2 -> 2,3,5,8,13,4,7,11 3 -> 11,2,3,5,8,13,4,7 4 -> 3,5,8,13,4,7,11,2 5 -> 2,3,5,8,13,4,7,11 6 -> 3,5,8,13,4,7,11,2 7 -> 14,5,9 8 -> 13,4,7,11,2,3,5,8 9 -> 11,2,3,5,8,13,4,7 0 -> 0 14 -> 5,9,14 59 -> 5,9,14 这是code-golf,因此赢得的字节数最少。
30 code-golf 

3
乌龟找到门户
乌龟想要沿着网格移动以获取食物。他想知道要到达那里需要多少步。 同样,由于他的速度很慢,因此他在自己的域周围设置了传送器,如果它缩短了路径,他将利用它。如果延长了他的行程,或者避免使用它们。 遇见乌龟 🐢 在网格上的乌龟生活 XXXXXXXXXXXX🐢XXXXXXXXXXXXXXXXXXXXXXXX🐢XXXXXXXXXXXX\begin{matrix} X&X&X&X&X\\ X&X&X&X&X\\ X&X&🐢&X&X\\ X&X&X&X&X\\ X&X&X&X&X\\ \end{matrix} 乌龟可以移动到任何相邻方... XXXXXX↖←↙XX↑🐢↓XX↗→↘XXXXXXXXXXXX↖↑↗XX←🐢→XX↙↓↘XXXXXX\begin{matrix} X&X&X&X&X\\ X&\nwarrow&\uparrow&\nearrow&X\\ X&\leftarrow&🐢&\rightarrow&X\\ X&\swarrow&\downarrow&\searrow&X\\ X&X&X&X&X\\ \end{matrix} 然而,乌龟不能移动到一个正方形与山 XXXXX🌄↖🌄🌄🌄X↑🐢↓XX↗→↘XXXXXXX🌄XXXX↖↑↗XX🌄🐢→XX🌄↓↘XX🌄XXX\begin{matrix} X&🌄&X&X&X\\ X&\nwarrow&\uparrow&\nearrow&X\\ X&🌄&🐢&\rightarrow&X\\ X&🌄&\downarrow&\searrow&X\\ X&🌄&X&X&X\\ \end{matrix} 海龟要吃掉他的草莓,想知道需要多久才能到达他的草莓 X🐢XX🌄🌄🌄X🍓XXXX🌄🍓🐢🌄XX🌄XXXX\begin{matrix} X&🌄&🍓\\ 🐢&🌄&X\\ X&🌄&X\\ X&X&X\\ \end{matrix} 这个例子将采取龟555圈 X↓↘X🌄🌄🌄↗🍓↑↑XX🌄🍓↓🌄↑↘🌄↑X↗X\begin{matrix} X&🌄&🍓\\ \downarrow&🌄&\uparrow\\ \searrow&🌄&\uparrow\\ X&\nearrow&X\\ \end{matrix} 幸运的是,乌龟发现了一个传送点!网格上有两个相互映射的传送端口。踩到传送器后,乌龟会立即移动到相应的传送器。传送器非常不稳定,一旦使用它们,它们就会消失并且不再可用。 🔵🐢XX🌄🌄🌄X🍓🔴XX🔵🌄🍓🐢🌄🔴X🌄XXXX\begin{matrix} 🔵&🌄&🍓\\ 🐢&🌄&🔴\\ X&🌄&X\\ X&X&X\\ \end{matrix} 现在快是龟两次拉升。现在海龟最短路径是222 …

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.