编程拼图和代码高尔夫

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

2
双向Quine链
PPCG还没有足够的藜... 挑战: 您的任务是创建一个程序“ A0”。当该程序在没有输入的情况下运行时,它什么也不输出。用输入运行该程序时,输出“ A1”。无输入运行“ A1”时,输出“ A0”。通过输入运行“ A1”时,输出“ A2”。几乎没有输入时,“ A(k)”将输出“ A(k-1)”,有输入时,将输出“ A(k + 1)”。 细节 我相信这个挑战很简单;真的没有其他规则。顺便说一句,每个程序必须至少包含1个字节。您可以假设输入将仅包含ASCII字符,并且可以根据需要忽略空格,但是您可以不指定特定的输入。输出可能会输出到STDOUT或STDERR,但是所有程序都必须输出到同一程序。另一个可能还包含文本(因此您可以输出到STDOUT,然后退出并出现错误)。感谢@Dennis指出这一点。 所有程序都必须使用相同的语言,并且每个程序都必须与其他程序唯一。 得分等于程序“ A0”的长度。由于这是代码高尔夫挑战赛,因此最低分获胜!

5
计算汉明距离序列的数量
等长的两个字符串之间的汉明距离是相应符号不同的位置数。 让P是长度为二进制串n和T是长度为二进制字符串2n-1。我们可以按从左到右的顺序计算到每个长度子字符串n之间的汉明距离,并将它们放入数组(或列表)中。PnT 汉明距离序列示例 让P = 101和T = 01100。从这对中得到的汉明距离的顺序是2,2,1。 任务 为了增加n起始位置n=1,请考虑所有可能P的长度对n和T长度对的二进制字符串对2n-1。有2**(n+2n-1)这样的对,因此有许多汉明距离序列。但是,这些序列中的许多序列将是相同的。任务是找到每个有多少不同n。 您的代码应为的每个值输出一个数字n。 得分了 您的分数是n您的代码在5分钟内到达我的计算机的最高分数。时间是用于总运行时间,而不是仅用于该时间n。 谁赢 得分最高的人获胜。如果两个或两个以上的人最终获得相同的分数,那么这是第一个获胜的答案。 示例答案 对于n从1到8最佳答案2, 9, 48, 297, 2040, 15425, 125232, 1070553。 语言和图书馆 您可以使用任何喜欢的语言和库。在可行的情况下,能够运行您的代码将是一件好事,因此,请尽可能提供有关如何在Linux中运行/编译代码的完整说明。 我的机器计时将在我的64位机器上运行。这是带有8GB RAM,AMD FX-8350八核处理器和Radeon HD 4250的标准ubuntu安装。这也意味着我需要能够运行您的代码。 领先的答案 11在C ++通过feersum。25秒 C ++ 11,作者:Andrew Epstein。176秒。 10中的Javascript尼尔。54秒 nimi 在Haskell中的9。4分59秒。 8中的Javascript通过fənɛtɪk。10秒

3
非小数黎曼零点的虚部
介绍 根据Riemann假说,Riemann zeta函数的所有零都是负偶数(称为平凡零)或1/2 ± i*t某种实t值形式的复数(称为非平凡零)。对于此挑战,我们将仅考虑虚部为正的非平凡零,并假设黎曼假设为真。这些非平凡的零可以按其虚部的大小排序。前几个大约是0.5 + 14.1347251i, 0.5 + 21.0220396i, 0.5 + 25.0108576i, 0.5 + 30.4248761i, 0.5 + 32.9350616i。 挑战 给定一个整数N,输出NRiemann zeta函数的第th个非平凡零的虚部,四舍五入到最接近的整数(四舍五入,所以13.5四舍五入为14)。 规则 输入和输出将在您的语言可表示的整数范围内。 如前所述,出于这一挑战的目的,假定黎曼假设是正确的。 您可以选择输入是零索引还是一索引。 测试用例 以下测试用例是一索引的。 1 14 2 21 3 25 4 30 5 33 6 38 7 41 8 43 9 48 10 50 50 143 …

4
闪烁摄像头灯!
这项挑战的灵感来自齐柏林飞艇(Zeppelin)的闪烁大写锁定(CAPS LOCK)。 大多数网络摄像头都带有一个小的集成LED灯,用于指示是否正在使用网络摄像头,这是由硬件机制控制的,以防止间谍活动。 您的任务是使其闪烁: 打开它。 等待0.5(±0.1)秒。 再次关闭它。 等待0.5(±0.1)秒; 重复。 如果可能的话,请提供GIF或网络摄像头闪烁的视频。如果答案没有GIF,请添加正在运行的程序的GIF。 规则 如果您的语言缺少亚秒级sleep命令,则您的程序可能会使用1秒的延迟,但会增加一个字节。(替换.5为1) 如果由于某种原因您的语言不支持.5,您的罚款为2个字节。(替换0.5为1) 您的程序必须循环执行,除非用户暂停。 您的LED可以点亮或熄灭;可以使用哪个更有利。 如果您的LED有关闭延迟,则不必考虑它,除非您要提供其他版本。 请参阅此评论和其答案以获取更多信息。 计分 这是 代码高尔夫球,这意味着以字节为单位的最短答案将获胜。

8
转换AWG到英寸
AWG(美国线规)是指定电线尺寸的常用方法。在此挑战中,您的任务是将给定的线规转换为以英寸为单位的导线直径。 下表显示了从4/0到的量规的英寸大小40: 英寸表 | AWG | Diameter (Inches) | |-----|-------------------| | 4/0 | 0.46 | | 3/0 | 0.4096 | | 2/0 | 0.3648 | | 1/0 | 0.3249 | | 1 | 0.2893 | | 2 | 0.2576 | | 3 | 0.2294 | | 4 | 0.2043 | …

4
排队,但带有Windows文件!
编写一个quine,该quine在运行时会在当前目录中创建一个名为自身的源文件。我们将在其中使用Windows,因此文件名(并因此是quine)必须具有以下限制: 这些字符都不是 \ / : ? * < > | 少于211255个字符 局限性和假设 您的代码必须是完整的程序(毕竟将要运行)。 不能从源文件复制。 您可以假设没有另一个以Quine为名称的文件(因为它将产生Quine(1))。 错误是允许的(只要它们不进入源代码即可) 这是 代码高尔夫球,以字节为单位的最短代码胜出! 编辑 也许我不清楚,但带有quine名称的文件实际上必须包含该quine。我的错。

11
创建变量组的每个组合,最高可达n
规格 给定m变量,按order创建每个组合n。例如, 将两个变量(a和b)映射到顺序的输出为1: 一个 b b 将两个变量(a和b)映射到顺序的输出为2: 一个 一个2 b b 2 b 一个2 b 抗体2 a 2 b 2 将两个变量(a和b)映射到顺序的输出为3: 一个 一个2 一个3 b b 2 b 3 b 一个2 b 一个3 b a 3 b 2 抗体2 腹3 a 2 b 3 a 2 b 2 a 3 …

2
税务史学家
介绍 有一个收税员在管理其王国的税收时遇到了一些麻烦:历史记录已在大火中燃烧。 他想找出从现有资金继承的角度来看可能有多少过去。幸运的是,他的王国很简单。 王国可以用2D布尔矩阵建模,其中l代表已继承货币的O人,而未继承货币的人。例如: l O l l O O O l l O l O O O O l (它将始终是一个矩形) 在下一代中,王国变小了(狼很强!)。 下一代看起来像这样,叠加在上一代上(x是下一代后代的占位符) l O l l x x x O O O l x x x l O l O x x x O O O l 后代将着眼于那些直接身边的祖先(所以左上角x会看到{ l,O,O,O},称为未对齐的矩形街区) …

3
Eratosthenes随机播放
挑战 编写一个接受一行输入的函数或程序,对其字符执行非常特定且奇怪的随机播放,然后输出结果。 可以使用以下算法描述所需的改组: 使用基于1的索引标记输入中的每个字符。 将字符编号1写入输出。 从字符编号2开始,将每个其他字符依次写入输出中,字符2本身除外。换句话说,将字符4、6、8、10等写为输出。 从尚未写入输出的下一个字符编号n开始,将第n个字符写入输出中,不包括字符n本身,并排除您可能已经写入输出中的任何其他字符(通过数字标签)。 只要继续向输出添加新字符,就重复步骤4。 依次写入其余字符以输出。 例 标记字符。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 奥古多亚克的美容院 2.写入第一个字符以输出: 1 2 3 4 5 6 7 8 9 10 …
9 code-golf 

1
负XOR素数
大约一年前,您被要求找到XOR素数。这些是在以2为底进行XOR乘法时其唯一因子为1的数字,以及它们本身。现在将使事情变得更加有趣。 我们将在基数-2中找到XOR质数 转换为基-2 基数-2与其他所有基数非常相似。最左边的位置是1s位置(1 =(-2)0),其旁边是-2s位置(-2 =(-2)1),其次是4s位置(4 =(-2 )2),依此类推。最大的不同是,负数可以以-2为基表示,而没有任何负号。 以下是一些示例转换: Decimal | Base -2 ----------------- 6 | 11010 -7 | 1001 12 | 11100 -15 | 110001 Base -2中的XOR加法 Base -2中的XOR加法与二进制中的XOR加法几乎相同。您只需将数字转换为Base -2并在适当的位置对每个数字进行XOR。(这与没有进位的加法相同) 这是逐步完成的示例: (我们将使用符号+'表示以-2为基数的XOR加法) 从基数10开始: 6 +' -19 转换为基数-2: 11010 +' 10111 添加它们时不要携带: 11010 +' 10111 --------- 01101 将结果转换回以10为基数: -3 Base …

2
错误(或警告)信号线也是常规信号线[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 3年前关闭。 (受到对一个老问题的评论的启发。) 背景 一个错误喹(也称为“Kimian喹”)是一种程序,该程序编译或运行时,使编译器/解释器/运行时进行打印,其具有相同的文本到程序本身,而不是其他的错误消息。出于此挑战的目的,我们在广义上定义“错误”,也包括警告。 任务 在这项挑战中,我们正在寻找 奎因这也是一个错误提示。执行时,程序必须正常打印自己的源代码(即,不作为错误/警告消息);这必须是适当的quine(即程序的某些部分必须对输出的不同部分进行编码)。此外,编译和执行程序还必须使实现将程序的源代码(而不是其他任何内容)打印为错误或警告消息。(请注意,这意味着您将无法使用会阻止程序正常执行的语言使用编译时错误。)换句话说,该程序的源代码将被打印两次,每种方法一次。 澄清说明 在大多数情况下,很明显什么是错误不是警告消息。我们在这里不区分两者。在模棱两可的情况下,将错误/警告消息定义为实现所输出的任何文本,或者:1.由于执行命令以外的其他原因(或与该语言最接近的等效内容);或2.这不是将其作为输出生成的命令的输入的一部分。 信息框的错误/警告部分不必是适当的信息框(尽管在大多数情况下,这是偶然的,因为大多数错误和警告消息都包含大量固定文本)。 程序输出多个错误/警告是可以接受的,这些错误/警告在串联在一起时构成程序的源。输出未出现在源代码中的错误/警告是不可接受的。 与许多挑战不同,在此挑战中,赋予编译器的开关和程序文件名可能非常相关。鉴于可能无法通过其他方式解决挑战,因此我愿意在这里保持灵活性,尽管如果您以不寻常的方式运行实现,请记住PPCG规则为此收取了字节罚款(等于您需要以最短的“正常”方式在命令行上添加运行程序的权限),因此,您需要在帖子中指定罚款的大小。(例如,如果您使用的解释器从文件中读取程序,并且对文件名没有特别限制,则运行程序的最短的常规方法是从文件名中包含1个字符的文件;因此, 您使用的编译器/解释器版本可能是相关的,因此,作为提交的一部分,请说明程序可在其上工作以及需要哪个版本的特定编译器或解释器。(例如,C提交的标题中可能显示“ C(gcc 6.2.0)”。) 请注意,并非所有语言都可以完成此任务。在目前使用的语言中,最简单的方法可能是找到错误或警告消息,可以为其自定义文本的某些子集(通过更改消息中引用的内容的名称;文件名是常见的选择)在这里,但不是唯一的)。如果有人发现只使用固定文本的错误和警告消息来做到这一点,我会特别感动(并感到惊讶)。 胜利条件 这是一个 代码高尔夫球挑战,因此,如果条目的字节数较小,则认为该条目更好。这样一来,一旦您的程序完全可以运行,您就希望对其进行优化以尽可能减少字节数。(但是,如果已经有一个较短的条目,尤其是使用另一种语言,请不要气;;我们真正要寻找的是尽可能地缩短程序背后的特定算法或想法,但要看到多个使用不同语言或依赖不同原理的解决方案总是值得的。)

1
打印当前时间…考虑leap秒
(注:虽然相关的,这个挑战不是重复这一个,因为它需要自动确定闰秒,而不是硬编码的时间,而不是重复这一块,因为大部分的困难来自于确定时间没有闰秒歪斜,这是大多数时间API默认情况下都不会执行的操作。因此,解决方案看上去可能与针对其中任一挑战的解决方案有所不同。) 我们即将到2016年底,但所需时间将比大多数人期望的稍长。因此,这是今年庆祝我们获得第二名的挑战。 以UTC输出当前时间,以小时,分钟,秒为单位。(例如,正午的合法输出格式应包括12:00:00和[12,0,0];此处的格式并不重要。) 但是,这有个不同之处:您的程序必须适当处理过去和将来的leap秒。这意味着您的程序将必须从一些在线或自动更新/可更新的源中获取of秒列表。如果愿意,您可以连接到Internet以获得此信息。但是,您只能连接到此挑战之前的URL(即,不能从其他位置下载程序的一部分),并且您不能使用该连接来确定当前时间(特别是:即使尝试访问,您的程序也必须运行)互联网返回的页面最多会过时24小时)。 当前大多数操作系统的默认API将使时间偏移leap秒左右,以便将它们从可能会造成混淆的程序中隐藏起来。因此,此挑战的主要困难是找到一种方法或API来撤消该问题,并找出UTC中真正未修改的当前时间。 从理论上讲,如果您的程序在无限快速的计算机上运行,​​则它应该是完全准确的,并且不得有意地花费超过零的时间来运行。(当然,实际上,您的程序将在不完美的计算机上运行,​​因此可能不会立即运行。您不必担心会导致结果无效,但不必依赖它来确保程序的正确性。 ) 无论系统时钟设置为哪个时区,您的程序都必须运行。(但是,它可能会要求操作系统或环境提供有关正在使用哪个时区的信息,并可能假定答复是正确的。) 作为一个 代码高尔夫球,最短的程序将获胜。祝好运!

1
具有n个交叉点的主要结数
一个主要的结是: 一个非平凡的结,不能写成两个非平凡的结的总和。 结和的说明:将两个结相邻放置, ...然后在它们之间绘制两条线,到每一侧的同一条线上,并删除刚绘制的线之间的部分。两个结的这种组合将形成一个新的非原始结。 以下是所有具有7个以下交叉的主要结(“未结不是主要结”): 您需要输出给定数量的交叉的唯一素结数量。 1 0 2 0 3 1 4 1 5 2 6 3 7 7 8 21 9 49 10 165 11 552 12 2176 13 9988 14 46972 15 253293 16 1388705 我不认为输入大于会知道这些值16,但是如果给出这样的输入,则您的代码需要在足够的时间内找到正确的结果。 OEIS-A002863

11
与通配符序列匹配的所有正方形
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 3年前关闭。 这是受2016 ARML竞赛团队问题#6的启发。 这是挑战: 您将获得一个“通配符序列”,它是一个数字序列和另一个字符。字符串通过以下伪代码匹配此通配符序列: w = wildcard s = string # s matches w iff for all 0 >= i > wildcard.length, w[i] == '?' or s[i] == w[i] 哪里?是您选择的角色。 就正则表达式而言,只需想象'?'是'.'。 挑战在于找到所有十进制字符串表示形式都与该通配符序列匹配的平方数(要求最大为100万)。很明显,“通配符”可以是您选择的任何ASCII字符,只要它不是数字即可。 例如,4096匹配4**6和,4*9*但4114都不匹配。 输入项 输入将作为与regex匹配的序列给出[0-9?]+。它可以是ASCII字符的字符串,字符数组或字节数组。 输出量 输出将是一个任意分隔的数字列表/集合/数组,它们是完美的平方并与通配符序列匹配。 有效输入的示例: 1234567*90 1234567?90 1234567u90 ['1', '2', '3', '4', '5', '6', …

1
收集垃圾
您正在寻找一条大道,有人把垃圾扔掉了!您需要编写一个程序来帮助解决此问题,方法是将垃圾放入垃圾桶。 任务 途径由一串可打印的ASCII字符组成,例如: [[](dust)[]] car ((paper)vomit) (broken(glass)) [[] (rotten) fence (dirty) 这里的某些括号是无法比拟的;这些只是诱饵。我们关心的是匹配的括号。 一个垃圾桶是一个字符串开头[和结尾],并与内部匹配括号和括号。例如,[]和[[](dust)[]]是上面字符串中的垃圾桶。 一个垃圾袋是一个字符串开头(和结尾),并与内部匹配括号和括号。例如,(dust)上面的字符串中是垃圾袋。 有些垃圾袋可能已经在垃圾桶中了。但是,至少将一个人遗漏在外,我们需要移动垃圾袋,以便它们全部位于垃圾桶中。具体来说,对于当前不在垃圾桶内的每个垃圾袋(即该垃圾桶的子串),我们需要将其从字符串中的当前位置移除,然后插入到垃圾桶内的位置。 这里还有一条附加规则。因为我们不想在垃圾收集器上花费太多的钱,并且它们的路线将它们沿着从右到左的方向走,所以我们想将每个垃圾袋向左移动(最重要的标准,假设我们必须将其移动到全部)和最短距离(只要将其向左移动)。因此,例如,唯一正确的输出 [can1](bag)[can2] 是 [can1(bag)][can2] (将包仅向左移动一个字符)。此外,袋子必须保持相同的相对顺序: [can](bag1)(bag2) 必须成为 [can(bag1)(bag2)] (即,您不能放在(bag2)的左侧(bag1)。) 澄清说明 最左边的垃圾箱的左边没有任何垃圾袋。始终可以通过将其向左移动来清除所有垃圾。 总会有至少一个袋子可以移动。可能不止一个。 垃圾袋内永远不会有垃圾桶(罐子太贵了而不能扔掉)。 如果罐子里已经有袋子,那就别管它了。 输入和输出的尾随空格(包括换行符)也可以不同。 例子: 输入: [[](dust)[]] car ((paper)vomit) (broken(glass)) [[] (rotten) fence (dirty) 输出: [[](dust)[]((paper)vomit)(broken(glass))] car [[(rotten)(dirty)] fence 输入: []] (unusable) door (filthy) …

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.