编程拼图和代码高尔夫

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

16
库兹涅佐夫的序列
库兹涅佐夫的序列 (I made the name up, don't bother with Wikipedia or Google) 给定任何数字n > 0,令其r代表数字的倒数n。迭代直到最终结果为零,然后使用递归或您选择的方法通过执行以下操作将每次迭代的结果传递回函数中: 如果r > n对于该迭代,结果为r % n。 如果n > r对于该迭代,结果为n % r。 如果n % r = 0或r % n = 0,则终止迭代。 取每个执行的中间结果,并将它们存储在数组中以得到最终答案。初始编号n不是序列的一部分,也不是0;这些示例应该使所有内容都更加明显。 让我们来看一个例子n=32452345。 54325423 % 32452345 = 21873078 # r > n, uses r % n 87037812 …

16
加号和时代,一个人和一个人
将该递归关系实现为输入和输出非负整数的函数或程序: F(0)= 0 F(N)=大于F(N-1)的最小整数,以使其基数10的总和和/或乘积为N N是程序的输入,而F(N)是程序的输出。 要清楚的是,像913这样的数字中的数字总和为9 + 1 + 3 = 13。乘积为9×1×3 = 27。对于一位数字,总和与乘积是相同的数字。包含0的数字当然具有乘积0。 通过F(70)得出的结果是: N F(N) 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 19 11 29 12 34 13 49 14 59 15 69 16 …

19
打印缺少的素数
任务 编写一个程序或函数,当传递数值输入时x,该函数将打印或返回x1的平方根以下不属于的素数x。 例子 假设f(x)该函数为: >>> f(4) [] >>> f(5) [2] >>> f(20) [3] >>> f(60) [7] >>> f(100) [3, 7] >>> f(10000) [3, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] 奖金规则 您可以使用您的语言提供的任何内置函数。 您的程序必须支持x与您的语言定义的上限一样高的输入。 1将平方根用作仅平方根下方的素数实际上可以包含的因素x。如果没有这个限制,较大的数字将有很多多余的印刷数字。

3
救命!我还有更多作业!
我的老师对我的火星家庭作业感到不满。我遵守了所有规则,但是她说我的输出是胡言乱语的……当她第一次看时,她非常可疑。“所有语言都应遵循齐普夫定律等等……”我什至不知道齐普夫定律是什么! 事实证明,齐普夫定律指出,如果在y轴上绘制每个单词的频率的对数,在x轴上绘制每个单词的“位置”的对数(最常见= 1,第二最常见= 2,第三最commmon = 3,依此类推),则该图将显示一条斜率约为-1的直线,给定或取约10%。 例如,这是Moby Dick的情节: x轴是第n个最常见的单词,y轴是第n个最常见的单词的出现次数。该线的斜率约为-1.07。 现在我们涵盖了Venutian。值得庆幸的是,Venutians使用拉丁字母。规则如下: 每个单词必须至少包含一个元音(a,e,i,o,u) 每个单词中最多可以连续三个元音,但连续最多两个辅音(辅音是不是元音的任何字母)。 单词长度不超过15个字母 可选:将单词分为3-30个单词的句子,以句点分隔 因为老师觉得我在火星作业上作弊,所以我被分配去写一篇至少30,000字长的文章(以Venutian语言写)。她将使用Zipf定律来检查我的工作,因此,当拟合一条直线时(如上所述),斜率必须最多为-0.9,但不小于-1.1,并且她希望词汇量至少为200个单词。同一单词连续不得重复超过5次。 这是CodeGolf,因此以字节为单位的最短代码获胜。请将输出粘贴到Pastebin或其他我可以将其下载为文本文件的工具中。
18 code-golf 

7
Eyjafjallajökull的喷发?
2010年,冰岛Vulcano(简写为 Eyjafjallajökull火山 喷发,导致我原计划的航班被取消。 万一这种情况再次发生,我真的想提前知道,所以请帮助我建立一个简单的视觉警报系统! 输入值 前往冰岛气象局火山活动警报代码作为输入(字符串): 绿色 -火山处于正常非喷发状态。 黄色 -火山的动荡迹象超过已知的背景水平。 橙色 -火山的骚动加剧,爆发的可能性增加。 红色 -预计即将爆发,可能有大量灰烬排放到大气中。 输出量 图形(ASCII艺术)警报,显示Eyjafjallajökull的状态。 绿色(Eyjafjallajökull正在休息) al la j j jaf öku y l E l ------------------- 黄色(会冒烟!) ~ ~ ~ al la j j jaf öku y l E l ------------------- 橙色(多烟!) ~ ~ ~ ~ ~ ~ …

1
最少的磁盘写入可对多个文件进行碎片整理
介绍 磁盘是一个线性容器,其块0通过索引size-1。 文件是该文件使用的块索引的命名列表。 示例文件系统表示如下: 15 ALPHA=3,5 BETA=11,10,7 “磁盘有15个块,文件ALPHA的第一个块是索引3处的磁盘块。” 磁盘映射可以这样绘制: Block Index 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 Contents | | | |A0 | |A1 | |B2 | | |B1 |B0 | | | | 当磁盘中的所有文件连续存储时,该磁盘将被视为已碎片整理。 你的目标: 发出最短的合法移动序列,以对给定的磁盘进行碎片整理。 法律行动 移动包含三部分信息:文件名,要移动的文件中的块的索引以及要移动到的磁盘块的索引。 例如 ALPHA:1>4 …

17
PPCG危险:强盗
您对网站的了解程度如何?让我们找出答案。 这是警察和强盗的挑战。 警察的线。 作为强盗,您需要: 查找与警察提交的内容相匹配的未删除,未关闭的挑战。挑战不能具有以下标记:警察和强盗,人气竞赛,代码拖曳,人手不足,海狸,山丘之王,技巧,答案链。挑战必须对有效输出进行限制。 在此处发布挑战,并链接到您要破解的警察 在警察的帖子中添加“破裂”评论,并带有指向此答案的链接 您将获得1分,而提交的每24小时内将获得1分(最高7分)。决胜局是破解次要竞争的总数。 笔记: 如果挑战需要的输出X,并且输出你XY或YX地方Y是空白之外什么,提交无效这一挑战。 不允许挑战2016-11-17之后的挑战。 我保留禁止某些挑战(如果它们适用范围广)的权利(可以适用于所有提交的大多数作品)。 确保添加一两个句子作为解释(这也有助于将提交的内容转换为评论) 感谢Daniel的初衷!

9
元多语奎因
在使用PPCG时,我注意到奎因问题和多语种问题非常流行。同样,问题的元解决方案,即生成解决问题的程序的脚本,往往会得到社区的很多积极反馈。因此,我创造了这个挑战,实现了这三个想法。 然后,作为读者和代码高尔夫球爱好者,您的任务是创建一个尽可能短的脚本,该脚本可以在两种语言A和B中运行以为A和B生成奎因。当您的程序以语言A运行时,它应该生成一个程序使用语言B 而不是语言A的程序,反之亦然。语言A和B可以是同一语言的不同版本,但要记住,生成的Quines仅应在其中一种版本中起作用。 请记住,应该将标准漏洞视为封闭的,并且仅允许使用适当的奎因。 祝你好运,最少的角色获胜!

16
给定事件的所有组合的概率
给定一系列概率在0.0到1.0之间的事件,请生成并推导每种组合发生的概率。您可能会假设以您选择的语言提供的任何构造形式提供了数字序列。 这是一个例子。您可能假定序列组合的长度适合内存: { 0.55, 0.67, 0.13 } 程序应打印每个组合以及该序列出现的相关概率。1表示输入序列的索引中的事件已发生,0表示该事件未发生。所需的输出如下(我不在乎打印工作,这只是出于算法目的的目的): [0,0,0] = (1 - 0.55) * (1-0.67) * (1-0.13) = 0.129195 [0,0,1] = (1 - 0.55) * (1-0.67) * (0.13) = 0.019305 [0,1,0] = (1 - 0.55) * (0.67) * (1-0.13) = 0.262305 [0,1,1] = (1 - 0.55) * (0.67) * (0.13) …

24
二进制倒数长度
灵感来自无限计数 给定一个非负整数N,输出达到0所需的以下步骤的重复次数: 转换N为二进制(4812390 -> 10010010110111001100110) 翻转每一位(10010010110111001100110 -> 01101101001000110011001) 修剪前导零(01101101001000110011001 -> 1101101001000110011001) 转换回十进制(1101101001000110011001 -> 3576217) 规则 输入和输出可以采用任何明确,一致的格式 输入将在您的语言的本机可表示整数范围内(如果您的语言支持任意大的整数,则没有限制) 测试用例 0 -> 0 1 -> 1 42 -> 6 97 -> 3 170 -> 8 255 -> 1 682 -> 10 8675309 -> 11 4812390 -> 14 178956970 -> 28 2863311530 -> …

16
找到波浪的话!
(注意:这是我之前的挑战“ 找到无限的单词!”的一个简单衍生品,这是我之前的其他挑战“ 找到旋转的单词!”的一个衍生产品:)) 波浪字的定义: 如果您用曲线连接字母(AZ)上的波浪字的所有字符,您将获得不断向右或向左而不改变方向的波浪路径,如下图所示。 一个波浪字可以是: 提高每个连续字符是否在前一个字符的右侧(字母上)。 减少每个连续字符是否在前一个字符的左侧(字母上)。 所有偶数连接必须断开,所有奇数连接必须断开。 您可以忽略大写/小写或全部考虑/转换为大写或全部转换为小写。 输入的单词仅是AZ字母范围内的字符,没有空格,标点符号或符号。 如果单词包含双精度字符,例如“ SPOON”,则必须将双精度折叠为一个字符:“ SPOON”>“ SPON”(因为从O到O的距离为零距离)。 该波浪词将含有至少3个不同的字符(双打塌陷甚至之后)。 这里有一些例子: 任务: 编写一个完整的程序或函数,该函数将从标准输入中提取一个单词,如果不是波浪形单词,则将输出,如果是波浪形单词,则将其输出;如果是上升或下降,则将输出。输出可以是True/False/Null,2/1/0,1/Null/0,-1/0/1,NO/WR/WD,等你决定如何来代表它。 测试用例: WAVY WORDS: ADEPT, BEGIN, BILL, BOSS, BOOST, CHIMP, KNOW, SPONGE, SPOON, TROLL, WOLF ADEPT > YES > RAISING BEGIN > YES > RAISING BILL > YES > RAISING BOSS > …
18 code-golf  string 

13
戈德巴赫分区
哥德巴赫猜想指出,每个大于2的偶数都可以表示为两个素数之和。例如, 4 = 2 + 2 6 = 3 + 3 8 = 5 + 3 但是,一旦达到10,就会发生一些有趣的事情。不仅可以写成10 5 + 5 但也可以写成 7 + 3 因为10可以表示为两个方法的两个素数之和,所以我们说10的“哥德巴赫分区”是2。或更笼统地说, 数字的戈德巴赫分区是不同的书写方式的总数,n = p + q其中p和q是素数,p >= q 您面临的挑战是编写一个找到数字的Goldbach分区的程序或函数。现在,从技术上讲,术语“戈德巴赫分区”仅用于表示偶数。然而,由于奇数整数P + 2可以也可以表示为两个素数的总和如果P> 2为素数,我们将这个扩展到所有正整数(A061358)。 您可以放心地假设您的输入将始终为正整数,并且可以使用我们默认的任何允许方法进行输入和输出,例如函数参数和返回值,STDIN和STDOUT,读取和写入文件等。 最多100个正整数的Goldbach分区为: 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 0, 1, …

19
计算Mertens函数
给定正整数n,计算Mertens函数 M(n)的值,其中 和μ(ķ)是莫比乌斯函数,其中μ(ķ)= 1,如果ķ具有不同的素因子偶数,-1,如果ķ具有奇数个的不同的素因子,和0,如果首要因素是不明显。 这是代码高尔夫球,因此请为计算输入整数n > 0 的Mertens函数的函数或程序创建最短的代码。 这是OEIS序列A002321。 测试用例 n M(n) 1 1 2 0 3 -1 4 -1 5 -2 6 -1 7 -2 8 -2 9 -2 10 -1 117 -5 5525 5 7044 -25 8888 4 10000 -23

14
将数字对转换为吉他音符
吉他指板图如下所示: 0 1 2 3 4 5 6 7 8 9 10 11 12 <- Fret number (0 means it's open) |-E--F--F#-G--G#-A--A#-B--C--C#-D--D#-E |-B--C--C#-D--D#-E--F--F#-G--G#-A--A#-B |-G--G#-A--A#-B--C--C#-D--D#-E--F--F#-G |-D--D#-E--F--F#-G--G#-A--A#-B--C--C#-D |-A--A#-B--C--C#-D--D#-E--F--F#-G--G#-A |-E--F--F#-G--G#-A--A#-B--C--C#-D--D#-E 如您所见,(从顶部开始)打开的第一个字符串是E。第一个琴弦上的第一个品格是一个F。第三弦上的第四品格是B。请注意,第一个音符是零品格,而不是第一个。 可以在格式上用数字写string, fret。字符串从上到下从1到6编号。品格从左到右从0到12编号。E因此,第一个是1, 0。其他一些例子: 1, 0 --> E 1, 1 --> F 3, 5 --> C 5, 1 --> A# 6, 6 --> …

6
我的世界城堡分形
由PPCG同伴的YouTube视频所致... 您面临的挑战是使用ASCII艺术画出Andesite和Diorite的Minecraft城堡墙。墙的形状是Cantor Set。作为参考,通过重复以下N次来创建Cantor集: 当前步骤的三倍 用空格替换中间的一个 在其下方添加整行 这将为前四个步骤创建以下内容: * * * *** * * * * *** *** ********* * * * * * * * * *** *** *** *** ********* ********* *************************** 但是,您的挑战并不是那么简单。您会看到,在康托集变得非常大之后,反复查看相同的角色变得无聊。因此,我们将通过覆盖一系列交替的星号*和磅符号来更改此状态#。您应该水平每隔三个字符,垂直每行交替。(当然,空格保持不变)例如,第二个示例将变为: * * ### 第三个示例将变为: * * * * ### ### ***###*** 为了完整起见,下面是示例四和示例五: #4 * * * …

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.