编程拼图和代码高尔夫

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

9
一百个密码
我有一百个保险库,每个保险库都在另一个保险库中。每个保管库都有一个密码,该密码由一个数字组成。 95 43 81 89 56 89 57 67 7 45 34 34 78 88 14 40 81 23 26 78 46 8 96 11 28 3 74 6 23 89 54 37 6 99 45 1 45 87 80 12 92 20 49 72 9 92 15 76 13 …

9
每日ASCII艺术#2-流蛇
甲流蛇,也称为高斯帕曲线,是分形曲线,用一个简单的过程的每个顺序/迭代中大小呈指数增长。以下是有关构造的详细信息以及各种订单的一些示例: 订单1流蛇: ____ \__ \ __/ 2级流蛇: ____ ____ \__ \ \__ \__/ / __ __/ ____ \ \ \ / __ \__ \ \/ \ \ \__/ / __ \/ ____ \/ / \__ \__/ __/ 3级流蛇: ____ ____ \__ \ \__ \__/ / __ __/ ____ \ \ …

4
魔方上的身份序列
移动序列是在魔方上的一系列移动(转弯)(在下面的符号中向下查找)。除了空移动序列之外,还有许多其他移动序列,这些移动序列对多维数据集完全没有影响。我们称这些移动序列为同一性序列。 这些身份序列中的某些很明显可以确定,例如U2 R R' U2或U D2 U' D2。在第一个步骤中,进行了两次随机移动U2 R,然后立即撤消R' U2。第二个类似。前两个随机动作U D2,然后撤消,但顺序相反U' D2。这仅起作用,因为U移动D2仅影响上层的片段,而移动仅影响下层的片段。您可以看到这两个移动序列的可视化。 其他身份序列可能一点都不明显。例如序列R' U' R' F' U F U' R' F R F' U' R U2 R。它很长,但是对多维数据集完全没有任何作用。 移动符号 移动描述了立方体六个面之一的一层的旋转。一个移动由一个代表面部的字母和一个可选的后缀(代表转角)组成。 字母及其对应的面是U(上-面向上的侧面),D(下-面向下的侧面),R(右-面向右侧的侧面),L(左-面向左侧的侧面) ,F(正面-面向您的一面)和B(背面- 背对您的一面)。 如果没有后缀,则将脸部顺时针旋转90度,后缀'表示将脸部逆时针旋转90度,而后缀2是指脸部顺时针旋转180度。 如果您在表示法上有任何问题,只需使用http://alg.cubing.net,您就可以在其中可视化此类移动序列。 挑战 您的任务是编写一个程序,该程序确定移动序列是否为身份。 您可以编写完整的程序或函数。它应接收一个包含移动序列(移动由空格分隔)的字符串作为输入(通过STDIN,命令行参数,提示或函数参数),并输出(通过返回值或STDOUT)布尔值或相应的整数( True-1-身份序列/ False-0-非身份序列)。 如果后缀'在编程语言中造成问题,则可以使用其他符号,但不能使用数字。R F2 U3不允许。 这是codegolf,因此最短的代码(以字节为单位)获胜。 测试用例 "" -> True "U2 R R' …

8
总共三本钱中有几内亚几内亚?
直到1971年十进制化,英国货币的基础是将英镑分为240便士。一先令为12便士,所以20先令等于一磅。最小的面额是一分钱的四分之一。硬币还有许多其他面额和昵称,如果您不习惯该系统,可能会造成很多困惑。 挑战 编写一个程序或函数,可以将(几乎)任何面额的旧英语货币转换为其他任何货币。为了使用户更轻松,您需要支持复数形式和昵称。 这些是您必须支持的面额及其同义词。为方便起见,它们在零食中的价值领先于每一行。 1: farthing, farthings 2: halfpence, halfpenny, halfpennies 4: penny, pennies, pence, copper, coppers 8: twopenny, twopennies, twopence, tuppence, half groat, half groats 12: threepence, threepenny, threepennies, threepenny bit, threepenny bits, thruppence, thrupenny, thrupennies, thrupenny bit, thrupenny bits 16: groat, groats 24: sixpence, sixpenny, sixpennies, sixpenny bit, …

2
标准化电话号码
背景 这里的大多数人应该熟悉一些整数基数系统:十进制,二进制,十六进制,八进制。例如,在十六进制系统中,数字abc.de 16表示 a*16^2 + b*16^1 + c*16^0 + d*16^-1 + e*16^-2 但是,也可以使用非整数基数,例如无理数。一旦这样的碱使用黄金比例φ=(1 +√5)/ 2≈1.618 ...。这些定义类似于整数基数。所以一些abc.de φ(其中一个以ê是整数位)将代表 a*φ^2 + b*φ^1 + c*φ^0 + d*φ^-1 + e*φ^-2 请注意,原则上任何数字都可以为负(尽管我们不习惯于此)-我们将以负号表示一个负数~。对于这个问题,我们限制自己,从数字的目的~9来9的,所以我们可以毫不含糊地写(在与之间的波浪线),一个数字作为一个字符串。所以 -2*φ^2 + 9*φ^1 + 0*φ^0 + -4*φ^-1 + 3*φ^-2 将被写为~290.~43。我们称这样的数字为非凡数字。 索号始终可以以标准形式表示,这意味着该表示仅使用数字1和0,而不包含11任何位置,并带有可选的减号表示整个数字为负。(有趣的是,每个整数都有标准形式的唯一有限表示形式。) 非标准格式的表示始终可以使用以下观察结果转换为标准格式: 011 φ = 100 φ(因为φ 2 =φ+ 1) 0200 φ = …

7
牛顿法递归法
您的任务是使用牛顿法计算2的平方根-稍有扭曲。您的程序将使用牛顿法计算迭代,并输出后续迭代的源代码(必须能够执行相同的操作)。 牛顿的方法已在Wikipedia上进行了详尽的描述。 要使用牛顿法计算平方根2,您: 限定 f(x) = x^2 - 2 限定 f'(x) = 2x 定义x[0](初步猜测)= 1 限定 x[n+1] = x[n] - (f[n] / f'[n]) 每次迭代会将x [n]移到更接近于2的平方根。所以- x[0] = 1 x[1] = x[0] - f(x[0])/f'(x[0]) = 1 - (1 ^ 2 - 2) / (2 * 1) = 1.5 x[2] = x[1] …
32 code-golf  math  quine 

2
在BrainF ***中实现QuickSort [关闭]
正如在堆栈溢出休息室中所讨论的: 如果您无法以您最不了解的任何语言来实现en.wikipedia.org/wiki/Quicksort给出的Quicksort算法,则可能需要考虑其他职业。@sbi 但SBI还指出,也许BrainF ***是个例外。 因此,这是一个难题/挑战:在BrainF ***中实现QuickSort。实施必须 被此和/或此处的解释器解释(对于大型脚本) 实施Wikipedia上描述的算法-如果可能的话,就地进行排序 排序以下整数列表:[0,4,6,4,2,3,9,2,3,6,5,3]并打印结果

6
镜子奎因(或我的头很痛)
我正在阅读将您的代码向后打印-反向quine,我想,如果您的向后代码也是可执行的,这可能会更有趣。因此,此挑战将具有其他挑战的所有规则和要求,但一旦反向(以相同或另一种语言显示,也必须向后打印其来源),也必须是有效的来源。 逆向拉网挑战的所有规则和计分均适用,因此该问题的所有答案都将回答该问题(但得分也不相同)。 编辑: 根据要求,所有规则现在都复制到此处。 规则: 编写程序p,该程序在执行时会产生输出p',其中p'向后p,而在执行时会产生p'。 请勿使用其他文件(例如reverse.txt) 最小代码长度为两个字符。 您的程序不能是回文。 得分: +50(如果您使用来自互联网的提取数据)。 +25,如果您阅读自己的源代码。 每个字符+1点。 最低分获胜。
32 code-golf  quine 

12
解码热图
热图 考虑一个矩形的房间,在其天花板上有一个热像仪指向下方。在房间里,有一些强度较高的热源1-9,背景温度为0。热量从每个源消散,每步(非对角线)降低一个单位。例如20x10房间 ...........1........ .................... ...8................ ..5...............2. .................... .1.................. ................1... .................65. .................... ............2....... 包含9个热源,热像仪显示的温度梯度为 34565432100100000000 45676543210000000000 56787654321000000110 45676543210000001221 34565432100000012321 23454321000000123432 12343210000001234543 01232100000012345654 00121000000011234543 00010000000121123432 在图形形式下,它可能类似于: 根据梯度,我们可以推断出某些热源的位置和强度,但并非全部。例如,由于所有9s都具有最高温度,因此总是可以推断出,因此8在这种情况下也可以推断出,因为它会在梯度中产生局部最大值。在2靠近右边框也可以推断,即使它是不是在当地最大的,因为它没有其他2的邻居。该5S,而另一方面,不推断,因为它们的热量还不如由靠近他们更加激烈的来源产生。所述0s的已知含有无热源,但所有其它瓦片可以潜在地包含一个。让我们用连字符表示不确定的图块-,某些热源用相应的数字表示,某些空白区域按句号表示.: ---------..1........ ----------.......... ---8-------......--. ----------......--2- ---------......----- --------......------ -------......------- .-----......-----6-- ..---.......-------- ...-.......-2------- 您的任务是从温度梯度产生这种推断的模式。 规则 输入将以换行符或竖线分隔的字符串形式给出|,以较方便的方式为准,并且输出形式应相同。输入和/或输出中可能有尾随定界符,但前面没有定界符。输入的大小可能有所不同,但其宽度和高度始终至少为4。功能和完整程序都可以接受。最低字节数获胜,并且禁止标准漏洞。 其他测试用例 输入: 898778765432100 787667654321100 677656543211210 678765432112321 567654321123210 图形形式如下所示: 输出: -9---8-------.. -------------.. --------------. …

14
解决全球债务,规范高尔夫的方式
世界各国领导人开会并最终承认,解决全球经济困境的最佳方法(也是唯一的方法)是盘算彼此的欠款,并以巨额支票相互偿还。他们雇用了您(具有讽刺意味的是,以最低的合同价格聘请您)来找到这样做的最佳方法。 经过深思熟虑,并要求某人绘制一个简单的示例,他们提出了以下规范。 每个国家/地区均以其ISO 3166-1 alpha-2代码表示:US美国,AU澳大利亚,JP日本,CN中国等等。 将分类帐作为一系列国家分录和每个国家的欠款进行草拟。 每个国家/地区的条目均以其域ID开始,即冒号,其盈余/赤字有多少(十亿欧元),然后是分号,然后是逗号分隔的国家/地区列表,以及有多少(十亿欧元)欧元)。 如果一个国家不欠另一个国家,则在该分号分隔符之后不输入该国家的任何提述。 赤字表示为负数,盈余表示为正数。 值也可以是浮点数。 分类帐必须来自STDIN。分类帐的结尾由空白行上的回车符指示。提示必须传送到STDOUT。 分类帐的示例: Input: AU:8;US:10,CN:15,JP:3 US:14;AU:12,CN:27,JP:14 CN:12;AU:8,US:17,JP:4 JP:10;AU:6,US:7,CN:10 然后,系统计算出每个国家的欠款和欠款,并确定其盈余/赤字,例如对于非盟: AU = 8(当前盈余)-10(至美国)-15(至CN)-3(至JP)+12(来自美国)+8(来自CN)+6(来自JP)= 6 完成所有计算后,必须显示一个提示: Output: AU:6 US:-5 CN:35 JP:8 您的工作就是创建一个系统,该系统能够为任何数量的国家采用任何数量的分类帐分录,并能够确定在支付所有费用后每个国家有多少赤字/盈余。 最终测试是让您使用代码来解决以下测试案例中以下国家之间的债务。这些数字取自2011年6月的BBC新闻。(http://www.bbc.com/news/business-15748696) 出于练习的目的,我将其各自的GDP用作其当前的盈余...请记住,这严格是代码质量保证的一项练习...在此问题中,将不讨论全球经济解决方案...如果您想谈论经济学,我敢肯定SE中还有另一个子域可以处理它... US:10800;FR:440.2,ES:170.5,JP:835.2,DE:414.5,UK:834.5 FR:1800;IT:37.6,JP:79.8,DE:123.5,UK:227,US:202.1 ES:700;PT:19.7,IT:22.3,JP:20,DE:131.7,UK:74.9,US:49.6,FR:112 PT:200;IT:2.9,DE:26.6,UK:18.9,US:3.9,FR:19.1,ES:65.7 IT:1200;JP:32.8,DE:120,UK:54.7,US:34.8,FR:309,ES:29.5 IE:200;JP:15.4,DE:82,UK:104.5,US:39.8,FR:23.8 GR:200;DE:15.9,UK:9.4,US:6.2,FR:41.4,PT:7.5,IT:2.8 JP:4100;DE:42.5,UK:101.8,US:244.8,FR:107.7 DE:2400;UK:141.1,US:174.4,FR:205.8,IT:202.7,JP:108.3 UK:1700;US:578.6,FR:209.9,ES:316.6,IE:113.5,JP:122.7,DE:379.3 现在,成为世界的经济救星! 规则: 最短的代码胜出...这毕竟是代码高尔夫... 请提供主要测试用例的输出以及代码答案...
32 code-golf  math 

30
伸展单词
编写一个程序或函数来复制单词中的字母,以便该单词中从左到右排列的所有重复字母都将构成输入数组。 例如: input: chameleon, [c,a,l,n] output: cchaamelleonn 输入值 起始词(例如chameleon) 字符数组([c,a,l,n])或表示数组(caln)的字符串,或类似的东西 输入可以通过功能参数,STDIN或等效语言进行 所有输入均为小写字母(az) 输出量 改变的词 如果有多种解决方案,则可以打印任何解决方案 input: banana [n,a] possible outputs: bannaana, banannaa |-|---------|-|--->[n,a] 您可以假设输入单词(不一定是数组)在数组中将有字母(按顺序) 您可能还假设输入没有相同的连续字母(不是苹果,怪胎,绿色,玻璃,门...) 例子 input: abcdefghij, [a,b,c] output: aabbccdefghij input: lizard, [i,a,r,d] output: liizaarrdd input: coconut, [c,o] ouput: ccooconut or coccoonut or ccocoonut input: onomatopoeia, [o,o,a,o,o] output: oonoomaatoopooeia …

10
Brainf ***高尔夫球手
用编程语言编写的最简单的代码之一是程序打印字符序列(例如,“ Hello,world!”)。然而,S ^ ō 米é é 小号Ø 牛逼é [R 我ç编程语言,如Brainfuck,连这个简单的代码是很烦人的写入。 您的任务是编写一个程序(不必使用Brainfuck编写),该程序将打印(最小长度)Brainfuck程序,并打印给定的文本。 输入值 字符序列(介于1和之间255)由任何格式(变量,参数,stdin,文件等)给出。 输出量 输出是有效的(无不匹配[和])脑力激荡的代码(假设无符号的8位换行单元和左右两侧单元的数量不受限制)打印作为输入给出的确切字符串。 例如,输入的一种可能的输出A是++++++++[<++++++++>-]<+.。 您的程序不必花很长时间(>2m)即可运行。 BF程序不必花很长时间(>10s)即可运行。 计分 (注意:当前的评分方法可能会更改,因为它不容易计算...) 程序的长度(生成BF代码)本身并不重要。但是,在程序代码中对BF代码进行硬编码是不正确的。唯一可接受的范围(例如一个BF码打印的单个字符。0x01:+.)的BF码可能是硬编码的。 分数是打印这些字符串的BF代码的长度总和。 Hello, world!附加了一个0x0A(\n)的字符串(即“ Hello,world!”程序) 单个字符0x01〜0xFF 这255个BF代码的长度总和乘以1/16,四舍五入后加到得分上。 前16个字符串的列表,该列表是通过删除所有零长度字符串来拆分11-11-11生成的字节的随机序列而生成的0x00。 Lenna.png,删除所有0x00s。 这首歌的歌词是99瓶啤酒,开头是99 bottles~,换行符是0x0A,段落之间用两个0x0As 分隔,结尾没有换行符。 您可能提供的其他字符串。 您的程序可能包括计算自身的分数。 当然,得分最低的代码将是赢家。

9
柯尔莫哥洛夫躁狂症
字符串s 的Kolmogorov复杂度定义为输出s 的最短程序 P 的长度。如果P的长度短于s的长度,则称s是可压缩的,否则s是不可压缩的。大多数字符串是不可压缩的... 编写输出此字符串的最短程序(无空格和无换行符): d9 a6 b6 33 56 a7 95 4b 29 b0 ac 7f 2a aa 6d 19 b8 4b 4c f8 b6 2a ac 95 a1 4b 4e a5 9d b3 e7 c9 4c 49 59 ec 94 b3 aa 6c 93 8f 11 5a …

16
平衡三元转换器
有关挑战构想的功劳归@AndrewPiliser。他最初在沙盒中的提议被放弃了,因为他已经几个月没有活跃在这里了,所以我已经接受了挑战。 平衡三进制是非标准数字系统。这就像在数字的3倍的价值增加,因为你进一步去左边三元-所以100是9和1001是28。 但是,数字的值为-1、0和1而不是0、1和2 。(您仍然可以使用它来表示任何整数。) 对于此挑战,数字含义+1将被写为+,-1将被写为-,并且0是just 0。平衡三进制-不像其他数字系统那样使用数字前面的符号来取反它们-请参见示例。 您的任务是编写一个完整的程序,该程序将32位十进制带符号的整数作为输入并将其转换为平衡三进制。不允许任何类型的内置基本转换函数(Mathematica可能有一个...)。输入可以是标准输入,命令行参数等。 前导零可能出现在输入中,但不会出现在输出中,除非输入为0,在这种情况下,输出也应该为0。 例子 这些是从平衡三进制到十进制的转换;您将不得不进行另一种转换。 +0- = 1*3^2 + 0*3^1 + -1*3^0 = 9 + 0 + -1 = 8 +-0+ = 1*3^3 + -1*3^2 + 0*3^1 + 1*3^0 = 27 + -9 + 0 + 1 = 19 -+++ = -1*3^3 + 1*3^2 + …

19
矮人和硬币
情况: 几个M矮人发现了一个地精的箱子,上面放着N金币,必须将它们分开。由于古代规则控制着按优先级分配战利品给海盗,因此,最老的矮人应该比下一个最矮的矮人多获得一个硬币,依此类推,以便使最小的小矮人M-1比最老的矮人得到更少的硬币。另外,没有矮人必须投掷任何硬币(即,没有对任何矮人的负面硬币) 帮助矮人以这种方式分割硬币,或者告诉他们这是不可能的。 优胜者的代码必须始终正确回答(此挑战是确定性的),并遵循通用的代码高尔夫球规则。 输入值 硬币数的整数为N(3≤N≤1000),矮数的整数为M(3≤M≤N),以空格分隔。 输出量 如果无法按照矮人想要的方式分割硬币,则打印-1(减一)。否则,打印从最旧到最年轻的每个小矮人将获得的硬币数量。用空格分隔数字。 样品: 输入 3 3 输出 2 1 0 输入 9 3 输出 4 3 2 输入 7 3 输出 -1 输入 6 4 输出 3 2 1 0
32 code-golf 

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.