Questions tagged «code-golf»

Code-golf是在最小的源代码字节中解决特定问题的竞赛。

5
白键钢琴和弦
背景故事[不正确] 钢琴的设置如下: 但是,在我的钢琴上,所有黑键都坏了! 我仍然希望能够在坏了的钢琴上弹奏一些和弦。 在音乐中,和弦是一起演奏的一组音符。为了输入和弦,我将首先定义什么是半音。 什么是半音? 半音是西方音乐中最小的距离。如果您看一下钢琴的顶部,您会发现通常可以从黑键移到白键,反之亦然。然而,与B和C和E和F没有黑键。 什么是和弦? 出于此挑战的目的,我们将和弦定义为一堆音符,在它们之间具有一定数量的半音。例如,让我们开始学习一个4-3-3和弦C(对于音乐人来说,这是F大调中的V 7和弦)。我们从开始C。我们指望了4个半音:C#,D,D#,E。接下来需要注意的是E,我们算3个半音起来后认为:F,F#,G。接下来需要注意的是G,我们算3个半音起来后认为:G#,A,Bb。因此,我们得到了C-E-G-Bb。好极了!但是,等待... Bb是一把黑钥匙,那些钥匙已经坏了...但是,如果我们从开始G,我们会得到G-B-D-F!好极了! 输入项 输入以任何合理格式的整数列表形式给出。这代表如上所述的和弦。 输出量 输出应该是一个注释列表,我可以在此开始使用白键。这也可以是最多7个音符的字符串,因为所有键名都是一个字符。您还必须能够处理空的输出。 测试用例 input -> output // comments 4 3 -> C F G // this is a major triad 3 4 -> D E A // this is a minor triad 4 3 3 -> G …

4
“监视”图像
问题: 这个挑战来自我遇到的一个实际问题。我正在使用双显示器设置,我想使用以下图像作为墙纸: 但是,我的显示器有很大的边框,当我设置背景时,它看起来像这样,在码头上出现(更平?)被打破了: 我可以通过以下方式解决此问题:将中心切出,然后将其拉伸回原始大小,如下图所示: 挑战: 编写一个程序,以获取图像并“监视”它以用于双显示器设置(即删除图像的中央部分,即边框所在的位置)。规则如下: 它必须是一个完整的程序,它可以以路径(字符串参数等)或文件选择器对话框的形式接受图像。 程序必须以垂直线的数量(宽度为一个像素)为输入,以从图像中心切出 裁切必须来自原始图像的中心(横向) 结果图像必须重新缩放为输入图像的原始大小。(可以分别对这两个半部分进行缩放,然后进行级联,或者对这些半级进行合并,然后进行缩放。单独进行缩放可以产生更好的图像/效果,但是在现实世界中很难注意到) 背景图像通常是偶数的,因此,为了使此挑战更容易,输入图像将仅具有偶数个像素,并且要删除的行数也将仅是偶数。 这项挑战就是代码高尔夫-以字节为单位的最短代码获胜 祝好运!

10
Hello World处理错误
编写具有以下功能的程序或函数: 程序/函数首先尝试将字符串写入Hello, world!标准输出流。(此挑战没有其他形式的输出是可以接受的,因为重点是I / O而不是程序本身的琐碎行为。)取决于程序是否成功: 如果成功输出Hello, world!,则程序/功能将退出而没有任何进一步的行为。 如果由于错误而未能产生正确的输出,则程序/函数会尝试将字符串写入Error writing "Hello, world!"标准错误流。(出于此挑战的目的,您无需为错误处理本身进行错误处理。) 澄清说明 您的程序/函数将在没有输入的情况下运行(除非以绝对需要输入才能正常工作的语言编写,在这种情况下,它将使用最简单的输入来运行)。 产生输出时,如果愿意,也可以产生一个尾随换行符,但这不是强制性的。 程序实现的“写入标准输出错误”的定义必须至少将以下情况视为错误: 不存在标准输出(即,stdout是封闭的文件句柄,不存在文件描述符1,或者这些情况会转换为您使用的语言和操作系统); 标准输出,指的是磁盘上没有可用空间的文件; 标准输出连接到另一个程序,该程序已经关闭了连接的末端。 并且必须至少将以下情况视为成功(即不是错误): 标准输出连接到终端,并Hello, world!显示在屏幕上。 标准输出连接到文件,并Hello, world!写入文件中。 您可以选择什么才是输出错误的详细信息,只要它与上述规则一致即可。 遇到上面列出的任何错误情况,您的程序/功能都不会崩溃。由您决定使用哪种退出代码。 您的程序/函数不应在标准错误流上描述遇到的错误的性质;它应该只打印上面指定的字符串。标准错误的无关输出(例如,编译器警告)只有在无条件产生的情况下才是合法的,无论是否遇到错误。 您的程序仅需要在一个操作系统上运行(尽管必须是上面列出的错误才有意义的操作系统;我试图使它们具有足够的通用性,以使其能够在大多数多任务消费者操作系统上运行,但是怪异的操作系统可能会排除在此挑战之外)。如果您的程序不可移植,请在提交的标题中列出需要运行的假设。 并非每种语言都可能完成此任务(并非每种语言都允许程序以自定义方式处理输出错误)。您必须选择一种可能的语言。 确保您的程序/功能有效!不要仅仅相信库函数的文档就能完成他们说的事情。简单的输出函数的错误处理在实践中常常被证明是错误的,即使函数声称在理论上处理错误。 测试用例 这是一种bash在Linux 上使用的方法,可以模拟上述每种错误情况(您不必使用Linux,但这可能是最简单的测试系统): your_program_here >&- # nonexistent stdout your_program_here > /dev/full # out of disk space mkfifo test # note: change …

4
米娅套装顺序
骰子游戏Mia引入了大小为2的一组非常平凡的顺序: {3,1} < {3,2} < {4,1} < {4,2} < {4,3} < {5,1} < {5,4} < {6,1} < {6,5} < {1,1} < {2,2} < {6,6} < {1,2} 通常,元组中的顺序无关紧要{x,y}={y,x}, {1,2}比其他任何东西都大,对大于大于非对,并且数值决定是否平局。 现在假设您要使用n骰子。另外,骰子有m面孔。 例: {1,5,3,4} < {1,2,6,3} 自5431 <6321 {1,2,3,5} < {1,1,5,6} < {1,1,5,5}, {1,1,6,6} < {1,1,1,3} < {2,2,2,3} < {1,1,1,1} < {1,2,3,4} {2,2,5} …

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

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 …

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

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.