编程拼图和代码高尔夫

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

9
琐碎的序列的扭曲
介绍 考虑定义如下的整数f的序列: f(2)= 2 如果n是奇数素数,则f(n)=(f(n-1)+ f(n + 1))/ 2 如果n = p·q是合成的,则f(n)= f(p)·f(q) 不难发现每n≥2 f(n)= n,因此计算f并不是一个非常有趣的挑战。让我们改变一下定义:将第一种情况减半,第二种情况加倍。我们得到一个新的序列g,定义如下: g(2)= 1 如果n是奇质数,则g(n)= g(n-1)+ g(n + 1) 如果n = p·q是合成的,则g(n)= g(p)·g(q) 任务 您的任务是将整数n≥2作为输入,并产生g(n)作为输出。您不必担心整数溢出,但是您应该能够正确计算g(1025)= 81,并且您的算法在理论上应该适用于任意大的输入。 您可以编写完整的程序或函数。最低字节数获胜。 例 我声称g(1025)= 81以上,因此我们手动进行计算。1025的素数分解给出 1025 = 5*5*41 => g(1025) = g(5)*g(5)*g(41) 由于41是素数,我们得到 g(41) = g(40) + g(42) 接下来,我们计算40和42的素因式分解: 40 = …

9
倾斜的二进制数
给定一个整数n,输出n索引为0或1 的第一个倾斜的二进制数。它们之所以被称为是因为它们是如何生成的: 将数字以二进制形式彼此下写(右对齐): ........0 ........1 .......10 .......11 ......100 ......101 ......110 ......111 .....1000 ......... 然后,您需要从左下角到右上角取每个对角线,以使每个最后一位是对角线的最后一位。这是标记为的第四个对角线(零索引)x,它是100: ........0 ........1 .......10 .......11 ......10x ......1x1 ......x10 ......111 .....1000 ......... 向上倾斜的对角线顺序为: 0 11 110 101 100 1111 1010 ....... 然后,转换为十进制 0, 3, 6, 5, 4, 15, 10, ... OEIS A102370 这是code-golf,因此以字节为单位的最短代码获胜。

2
解决堆栈状态图
堆栈状态图显示了如何将一个堆栈上的值更改为另一个堆栈上的值。例如,这是一个堆栈状态图: 3 0 2 1 0 这意味着有一个堆栈最初包含3个值(3部分)。这些值的索引范围是0到2,顶部是0 2 1 0。下一部分0 2 1 0描述了堆栈的最终状态:最初位于堆栈顶部的值也已复制到背面。 这些转换发生在支持多种数据类型的堆栈上: “值”类型,最初是堆栈上的值。它可以是字符串,整数等,但是不需要知道其值。 “列表”类型,它是包含任何数据类型的值的列表。 为了对此转换建模,允许执行以下操作: S:交换堆栈顶部的两个值:2 1 0→2 0 1 D:将值复制到堆栈顶部:1 0→1 0 0 R:删除堆栈上的最高值。 2 1 0→2 1 L:将最高值变成包含该值的一元列表:2 1 0→2 1 (0) C:串联堆栈中的前两个列表:2 (1) (0)→2 (1 0) U:将列表中的所有值放入堆栈:2 (1 0)→2 1 0 这些等效于欠载命令~ : ! a …

11
对齐文本网格的对角线
给定一个矩形的文本网格,将从左上角到右下角的对角线排列成列,以使所有对角线的最右下角的字符都在一个水平上。使用空格进行缩进。 例如,如果输入的文本网格为 abcd 1234 WXYZ 然后你会排队对角线W,1X,a2Y,b3z,c4,和d在给这个输出列: ab 123c WXYZ4d 请注意,所有对角线的最右下角的字符WXYZ4d处于同一级别。 细节 文本的输入网格的大小至少为1×1,并且所有行的长度都相同。 您可以将输入网格作为多行字符串或作为单行字符串的列表。 输入网格将仅包含可打印的ASCII字符(包括空格)。 输出可能有一个尾随换行符,但不应有其他空行。 输出的行可以选择有尾随空格,但不应有不必要的前导空格。 其他例子 空行分隔示例。每个输入后紧跟其输出。 123 456 789 1 452 78963 123.?! 456??! 789!!! 123. 456??? 789!!!!! **@ @ ** @ @ /\/\ \/ / / /\ \/\/ / \/\ / / / \/\/\/\ 12 34 56 …
15 code-golf  string  grid 

16
计算威尔逊得分间隔
的威尔逊得分间隔是成功的概率的置信区间的基础上,成功的在一组伯努利试验的比例(一个伯努利试验是其中恰好两个结果是可能的试验:成功或失败)。该间隔由以下公式给出: 公式给出的两个值是间隔的上限和下限。n S和n F分别是成功和失败的次数,n是试验的总数(相当于n S + n F)。z是取决于所需置信度的参数。出于此挑战的目的,将使用z = 1.96(对应于95%的置信区间)1。 给定非负整数n S和n F,输出威尔逊得分区间的边界。 规则 在您的语言的浮点实现限制内,输出必须尽可能精确到真实值,而忽略由于浮点算术错误而引起的任何潜在问题。如果您的语言能够执行任意精度算术,则它必须至少与IEEE 754双精度算术一样精确。 输入将在您的语言的本机整数类型的可表示范围内,而输出将在您的语言的本机浮点类型的可表示范围内。 n将始终为正。 输出的顺序无关紧要。 测试用例 格式: n_s, n_f => lower, upper 0, 1 => 0.0, 0.7934567085261071 1, 0 => 0.20654329147389294, 1.0 1, 1 => 0.09452865480086611, 0.905471345199134 1, 10 => 0.016231752262825982, 0.3773646254862038 10, 1 => 0.6226353745137962, …

15
找到五个朋友和保罗一起吃鸡肉
Paul是您的比利时熟人之一,他希望您创建一个程序,该程序至少输出以下五个字符串之一: 12496=>14288=>15472=>14536=>14264 14264=>12496=>14288=>15472=>14536 14536=>14264=>12496=>14288=>15472 15472=>14536=>14264=>12496=>14288 14288=>15472=>14536=>14264=>12496 它代表了他最骄傲的朋友,并且他想和他们一起吃饭。保罗还认为数字6是完美的,这是唯一值得使用的数字。因此,您不能在代码中使用“ 6”以外的任何其他数字(禁止使用0到5和7到9)。您的程序不能接受任何输入。输出可以在字符串之前和/或之后包含垃圾,但应至少包含上述字符串之一。 例如,这是一个有效的输出: 220frefze f**14288=>15472=>14536=>14264=>12496**fczfe fz**15472=>14536=>14264=>12496=>14288**zfe fzehth 我“虔诚”地在问题中暗示了我希望如何解决该问题,但又怎么知道呢?也许有更好的方法...希望您玩得开心。 这是代码高尔夫球:最低得分(以字节为单位)获胜。

4
戴上帽子的猫
受到即将到来的冬季狂欢活动的启发 客体 添加一顶帽子 ^,´或`在输入的每一个字单韵母。 规则 在hat和vowel必须随意选择。每个帽子必须以相同的概率(33%)出现,并且在单词中的有效元音内,元音必须具有相同的概率(如果单词具有2个有效元音,则每个可能性必须为50%)-或最接近您的语言所拥有的 仅AEIOUaeiou视为元音(对不起y) 输入中带有帽子的元音请勿干扰规则(您可以将其视为辅音) 如果输入没有元音,则不会被修改 必须保留大写。 例子 winter> wintér bash> bâsh rhythm> rhythm rng ftw> rng ftw cat in the hat> cât ìn thê hát dès> dès tschüss> tschüss principî> prìncipî PROGRAMMING PUZZLES & code golf>PROGRÂMMING PÚZZLES & codé gòlf 获奖 这是代码高尔夫球,所以最短的代码胜出
15 code-golf 

4
帮助PPCG克劳斯送礼物!
帮助PPCG克劳斯送礼物 总览 PPCG克劳斯迟迟没有送出礼物,因为如今我们有那么多奇怪的小孩。这使PPCG Claus很难将所有礼物送到正确的地方。您面临的挑战是帮助他正确地处理礼物。 复杂性 给定一个表示要送达的孩子的大写名字列表和一个用数字表示的礼物列表,您必须弄清楚如何在这些孩子之间分配礼物。当然有一个陷阱... 如今,孩子们变得挑剔,如果孩子是个奇怪的家伙(第一个名字的首字母是ASCII码是奇数),他就想要一个奇怪的礼物!如果他是个偶人(第一个名字的首字母是ASCII码),那么显然他必须被赋予偶数!但是,任何可被3整除的孩子都是顽皮的,顽皮的小伙子,因此PPCG克劳斯必须完全无视他们,才能在明年表现出来。为了使他的路线成功,他必须将所有礼物送给所有应得的孩子,并且不能给任何一个孩子太多礼物。如果有任何一个孩子比同龄人获得的礼物多3倍以上,他明年就有成为顽皮孩子的风险,那是不对的!此外,如果有好的孩子都收到礼物时,另一个很好的孩子没有,这也将反过来说孩子的罪恶。 例 孩子们如下: Kids = ["Amy", "Betty", "Clyde", "Dave", "Francine"] = [A,B,C,D,F] = [65,66,67,68,70] 贝蒂(Betty)是人类的祸根,显然是数字3。 艾米(Amy)和克莱德(Clyde)自出生以来就是怪胎,甚至不愿收到礼物。 即使是孩子,戴夫(Dave)和弗朗辛(Francine)都很正常。他们应该只收到礼物! 礼物如下: Presents = [1,2,3,4,5,6,7,8,9,10,11,12,13,14] 一种可能的输出是: [ ['Amy',[1,3,5]], ['Betty',[]], ['Clyde',[7,9,11,13]], ['Dave',[2,4,6,8]], ['Francine',[10,12,14]] ] 例外情况 但是,仅仅因为PPCG克劳斯已经准备好并且愿意,并不意味着PPCG克劳斯可以。以下是一些例外情况的列表,在这些情况下,您必须使用以下消息将坏消息告知PPCG Claus: PPCGmas is cancelled! 以下情况将导致圣诞节被取消: 没有孩子。 [],[1,2,3] -威尔普,他们死了。 没有好孩子。 ["Betty"],[1,2,3] -认真地,拧贝蒂。 没有礼物,或者礼物少于好孩子。 ["Amy","Charles"],[] …

3
高尔夫小数
您的目标是编写一些代码,该代码将为输入分数输出最短的唯一十进制序列。分母相同的两个分数都不能具有相同的输出,尽管分母不同的分数可能具有相同的表示。 以2个整数作为输入,第一个是分子,第二个是分母。 例如: n d output ----- ------ 0 13: 0.00 1 13: 0.07 2 13: 0.1 3 13: 0.2 4 13: 0.30 5 13: 0.38 等等 3/13是唯一以13开头的分母为13的分数0.2,因此不需要其他数字。4/13和5/13两个下手0.3,所以需要另一个数字来区分它们。 您可以输出大于-1且小于1的数字,小数点前有零或无零,只要输出是一致的,即0.5和.5是相同的数字并且都有效。不允许其他前导零。如果必须使用尾随零来将输出与另一个值区分开,则必须显示尾随零。 您不得将任何数字都舍入为零。他们必须被截断。不得有前导或尾随空格。可能有一个结尾的换行符。 更多测试值: n d output ---------- ------ 0 1: 0 (this 0 may not be removed because there's no decimal point) …

2
验证我的千层面
情境 我经常煮烤宽面条,但我也有一些错误。由于我经常重复这些错误,所以我认为我可以做一个检查我是否做对的程序。 有效千层面 有效的千层面是 至少5列宽 至少4层高 不包括多余的奶酪 顶层是奶酪(以表示,) 第二层是酱料(用@或表示#) 之后,各层交替显示(1层酱汁,1层面条(由~或表示-)) 每列可以有一层或两层奶酪 该程序 应该 以烤宽面条串作为输入 多行字符串 字符串数组 字符串仅包含字符 ,@#~- 长方形 必要时用空格填充 输出是否是有效的千层面 任何有效的语言 没什么用你的语言造假 要么 完整程序 一个功能 仅使用2016年12月14日之前实现的功能 测试用例 ,, , ,,,,,, @@@### ~~~~~- @##@@# --> truthy @@@# ---- @@## ---- @### --> falsy (cause of cheese and width (You don't …

6
桥梁是ASCII艺术中所有事物的隐喻
(向标题的Jim West致歉,并从Cisco徽标的文字表示中随机得到启发: .:|:.:|:. 用于该概念) 给定输入整数1 <= n <= 255,n按照以下构造规则输出距离的悬索桥的ASCII艺术表示: 桥梁的起点和终点(不计入n距离)始终为-|和|-,因此桥梁可以适当地连接至其旁边的高速公路。 桥梁不向下延伸(由-行组成的行车道高度是最底行)。 --连续最多可有两个巷道部件,任何更长的跨度都需要悬挂电缆来支撑。 悬索\从车道一直延伸到塔架|,呈直线状。 塔架|必须足够高以支撑相邻的悬挂电缆,但不能更高。 桥梁必须围绕中点左右平衡,并尽可能偏向中心部分。 上面所有这些都将导致电缆的最小化,但是需要明确的是,在遵循上述规则的同时,必须使悬挂电缆的数量最少。 为了提供可视化表示,以下是-的预期输出n = 1, 2, 3, ... 15: 1 -|-|- 2 -|--|- 3 -|\-/|- 4 -|\--/|- 5 |\ /| -|-\-/-|- 6 |\ /| -|-\--/-|- 7 |\ /| | \ / | -|--\-/--|- 8 |\ /| …

3
Dobble / SpotIt卡生成器
介绍 Dobble / Spot这是一种纸牌游戏,人们必须在最短的时间内在一对纸牌上发现相同的符号,并指出并移到下一对。每张卡具有多个符号(普通版为8个),但每对卡之间恰好有一个共同的符号。 来自游戏实体副本的示例: 挑战 编写一个程序,给定一组符号(单个ascii字符)和单个卡上的符号数量,将生成输出列表卡,其中每个卡都有符号。显然有许多等效的组合,您的程序只需要编写任何组合就可以为给定的输入产生最大数量的卡片。 这是一个代码问题,因此代码越短越好。 如果在最复杂的情​​况下,在宇宙热死之前完成计算,那将也很好。 输入值 函数/ stdin的两个参数(您的选择) 首先是符号的集合,例如'ABCDE'或['A','B','C','D','E']-您选择的格式,可以是字符串,集合,列表,流,或所选择语言的惯用语言。字符将从[A-Za-z0-9]的集合中给出,不能重复(因此输入符号集的最大大小为62)。它们不会在(因此您也可以在6个符号的情况下获得“ yX4i9A”)。 第二个参数是整数,表示单张卡上的符号数量。小于符号集的大小。 输出量 打印用换行符分隔的多行,每行包含一张卡的符号。 例子 ABC 2 >>>> AB BC AC 要么 ABCDEFG 3 >>>> ABC BDE CEF BFG AEG CDG ADF 要么 ABCDE 4 >>>> ABCD 提示 所产生的卡片数量不能大于不同符号的数量,并且在许多组合中,它将大大减少 如果您需要数学方面的帮助,则可能需要阅读一些数学背景 这是我第一次挑战高尔夫代码,因此请原谅格式/样式方面的可能问题-如果您在注释中指出错误,则我将尝试更正。

2
匹配排列!
您的挑战是创建一个正则表达式,使其匹配自身的每个字符串排列,而不是其他任何内容。匹配项还必须区分大小写。 因此,例如,如果您的正则表达式为: ABC 它应该匹配(并且仅匹配)以下字符串: ABC ACB BAC BCA CAB CBA 它不应该匹配以下内容: AABC (contains an extra A) ABCD (contains an extra D) AC (no B) AAA (no B and C, extra 2 A's) abc (case-sensitive) 规则: 您可以使用任何喜欢的正则表达式。 有标准漏洞。 您的代码中必须至少包含两个不同的字符。这意味着类似1的解决方案是无效的。 正则表达式应仅包含可打印的ASCII,而不能包含其他任何内容。

9
所有异种
介绍 在基体A xenodrome Ñ是整数,其中所有其在碱位数Ñ是不同的。这是异种的一些OEIS序列。 例如,在底座16, FACE,42和FEDCBA9876543210是一些xenodromes(哪些是64206,66和18364758544493064720在基座10),但11并DEFACED不是。 挑战 给定输入底数n,在底数10中输出该底物的所有异种。 输出应从最小到最大。应该清楚序列中的一个术语在何处结束而一个新的术语在何处开始(例如[0, 1, 2],清楚012不在哪里。) n将是一个大于0的整数。 澄清说明 这项挑战专门针对以10为基数的IO,以避免将整数及其基数作为字符串处理。挑战在于抽象地处理任何基础。因此,我添加了以下附加规则: 整数不能以字符串形式存储在以10为基数的基数中。 如果在语言实现上没有时间,内存,精度或其他技术限制,则您的程序在理论上应该能够处理合理的n。 这是代码高尔夫,因此以字节为单位的最短程序胜出。 输入和输出示例 1 # Input 0 # Output 2 0, 1, 2 3 0, 1, 2, 3, 5, 6, 7, 11, 15, 19, 21 4 0, 1, 2, 3, 4, 6, 7, 8, 9, …

19
最短的Konami码
问题 您必须编写一个程序,在运行时键入Konami代码时,该程序会打印字符串“ +30 lives”,并从计算机的扬声器中发出您选择的声音。 定义 定义“ Konami代码”,UUDDLRLRBA然后按Enter键。 规则 只要您的代码与箭头或字母一致,就可以选择使用向上箭头U,向下箭头D,左箭头L和右R箭头。 您的输入可以从控制器或键盘接受,但不需要同时支持这两种输入。 现有答案可以BABA代替继续使用BA,但也可以根据需要将其缩短。将来的答案都应该BA用于保持一致性。 不需要支持空输入。

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.