编程拼图和代码高尔夫

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

28
您连续八天!
语言学习应用程序Duolingo有很多功能要做,但是有一个主要问题使我发疯。它告诉我我已经连续几天使用该应用程序,并显示一条消息,例如“ 您正在连续7天出现连败!”。撇开连字符和是否应拼写数字,这对大多数数字都适用,但是当您说自己连续8天出现错误时,这无疑是错误的!我没有用它来学习英语,但这对于语言应用程序来说仍然是不幸的行为。 您将通过编写一个完整的程序或函数来帮助Duolingo团队,该程序或函数可以确定给定数字前应带有a还是a。一个数字前面有一个,如果它的英语口语发音与开始辅音或半元音的声音,并且在前面的,如果它的发音以元音开头。因此,唯一以a开头的数字是那些以八,十一,十八或八十开头的发音。 大概Duolingo开发团队留了这个bug的原因是因为他们用光了空间,无法在应用程序中使用更多的源代码,因此您需要使此代码尽可能短,以希望他们可以将其压缩。 您的代码必须采用0到2,147,483,647之间的整数,并输出a或an。尾随换行符是可选的。出于此挑战的目的,1863年被理解为1836.3,而不是163。 测试用例: 0 → a 8 → an 11 → an 18 → an 84 → an 110 → a 843 → an 1111 → a 1863 → a 8192 → an 11000 → an 18000 → an 110000 → a 180000 → a 1141592 → …
82 code-golf  number 

16
不确定的行为杀死了我的猫[关闭]
不确定的行为杀死了我的猫 众所周知,不确定的行为会杀死猫[需要引用]。 但是可以吗? 你的任务 编写一个调用未定义行为的程序。 描述一种情况,该情况从上述程序的运行开始,由于前面提到的UB ,导致Felis catus在您拥有时终止其寿命。 估计方案​​中每个阶段的概率。 计算该程序一次运行会杀死猫的总概率。 规则 这是一场人气竞赛,因此,如果可以的话,请发挥创意。 这是与编程相关的挑战,因此事件链应该主要在计算机内部,而不是在真实世界中(当然,如果那是猫的所在,那么必须到达真实世界)。 如果您选择的语言没有未定义的行为,请使用类似的语言。 出示答案时,不会对动物造成伤害。 计分 投票数加上方案的总概率(不能超过1)。 在C中的示例: main(){printf();} 场景: printf从堆栈中调用垃圾-未定义行为。机率:100%。 第一个参数恰好是字符串Your cat is ugly!。概率:(1/256)17 =(1.148 * 10 -37)%。 看到消息后,您拿起枪射击猫。机率:3%。 猫死了。机率:93%。 总概率:(3.202 * 10 -39)%。

25
烤一片Pi
编写一个程序或函数来打印或输出此准确的文本(由142个字符组成): ()()()()()() |\3.1415926| |:\53589793| \::\2384626| \::\433832| \::\79502| \::\8841| \::\971| \::\69| \::\3| \__\| 您的程序必须不接受任何输入(除非使用不可能的语言,例如sed),并产生以上文本(并且仅上面的文本)作为输出。尾随换行符是可以接受的。 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。

30
KOTH:全球大流行
最终结果在这里! 介绍 在2042年,世界变得人口过多。全球化,人满为患,新的生活方式以及全球缺乏卫生条件导致了新的流行病蔓延。在那些困难时期,国家领导人必须管理局势。您不能让人口大量减少,但也许可以让邻居死掉而受益…… 词汇表 健康:人们没有感染 感染:谁可以从大流行死亡人 死亡:尸体数量,没有特别的影响(只计分) 感染率:数健康谁就会成为感染每回合 传染率:百分比感染,将转换健康到被感染每回合 死亡率:每回合将死亡的感染百分率 迁移率:每回合将迁移/迁徙的健康和感染百分率 当地:仅影响您的州 全局:影响每个州 原理 每个参与者将从100个人开始管理一个城镇。不幸的是,其中有一个被感染。 该游戏是回合制的。转弯由七个阶段组成,最后一个阶段是交互式的(向机器人询问命令)。玩家的顺序在每个回合中都是随机的。下一个阶段在每个城镇都执行了上一个阶段时开始(第1轮:玩家1,第2玩家,...;第2轮:第3玩家,第2玩家,第1玩家...): 1. Mutation - AUTOMATED 2. Reproduction - AUTOMATED 3. Migration - AUTOMATED 4. Infection - AUTOMATED 5. Contagion - AUTOMATED 6. Extinction - AUTOMATED 7. Players Turn - INTERACTIVE 控制器通过命令参数为您提供输入,而程序必须通过stdout输出。 句法 输入值 每次调用程序时,它将收到以下格式的参数: Round;YourPlayerId;PlayerId_Healthy_Infected_Dead_InfectionRate_ContagionRate_LethalityRate_MigrationRate;PlayerId_Healthy_Infected_Dead_InfectionRate_ContagionRate_LethalityRate_MigrationRate;... …

11
正则表达式,纸张,剪刀,蜥蜴,Spock
热身:正则表达式,纸张,剪刀 这是我最初想要发布的挑战,然后才意识到存在一些非常简短的解决方案。尽管如此,思考以下实际挑战仍可能是一个有趣的问题。 编写三个正则表达式R,P和S,使它们以循环的Rock,Paper和Scissors方式彼此匹配。特别地,[R匹配小号,小号匹配P和P相匹配- [R ,但ř 不匹配P,小号 不匹配- [R和P不匹配小号。这是一个方便的桌子: Regex Matches Doesn't match R S P P R S S P R R,P和S对任何其他输入(包括它们自己)执行的操作无关紧要。 在这里,match只是意味着输入的某些(可能为空)子字符串已匹配。匹配不需要覆盖整个输入。 挑战:正则表达式,纸张,剪刀,蜥蜴,Spock 对于这个挑战,您将基于RPS变体Rock,Paper,剪刀,蜥蜴,Spock(由The Big Bang Theory推广)解决上述问题的更严格的版本。在RPSLV中,有五个不同的符号,它们在两个周期内相互跳动: 岩石→剪刀→蜥蜴→纸→麻雀→岩石 岩石→蜥蜴→麻雀→剪刀→纸→岩石 您应该编写五个正则表达式R,P,S,L和V,当它们彼此作为输入时,它们模仿该结构。这是对应的表: Regex Matches Doesn't match R L, S V, P L V, P S, R V S, R P, L …

30
查找非法字符串
面临的挑战是要找到一种字符串,这些字符串不能以您选择的编程语言出现在任何合法程序中。这包括注释,字符串或其他“不可执行”的部分。 挑战 您的程序可能特定于语言的编译器/解释器/运行时环境的特定版本或实现。如果是这样,请详细说明。 仅允许使用标准的编译器/解释器/运行时选项。您不能将一些奇怪的标志传递给编译器以获取特定的结果(例如,传递标志以将警告转换为错误)。 如果您的编程语言需要特定的编码(例如UTF-8),则还必须正确编码您的字符串(即,不允许仅由于字符解码错误而失败的字符串)。 您提交的文件中的每个人物都必须在法律程序中被允许;也就是说,您不能只使用总是被拒绝的字符。 当给出的编译器/解释/运行时必须给出一个错误的任何包含您的字符串作为一个字符串的源代码。该错误不必在程序之间相同-嵌入字符串可能会导致语法错误,而另一嵌入可能会导致运行时错误。 计分 每种语言的最短非法字符串将获胜。 您应该解释为什么字符串是非法的(为什么它不能出现在合法程序的任何地方)。 在评论中提出不正确的解决方案。更具体地说,您应该提供指向TIO或等效文件的链接,以证明包含所建议的子字符串的合法程序(即不产生任何错误的程序)。 一些语言(例如Bash,Batch,Perl)允许在不影响有效性的情况下将任意二进制数据附加到程序中(例如__DATA__在Perl中使用)。对于这样的语言,你可以提交了可能出现的解决方案只有在这样的后段。确保在回答中记下这一点。(此“跟踪部分”的定义取决于语言,但通常表示解析器完全停止阅读脚本之后的任何文本)。 例 在Python中,我可能会提交 x """ ''' 但这可以嵌入到较大的程序中 """ x """ ''' y ''' 所以这是不允许的。

30
<所有语言>打高尔夫球的技巧
这篇文章的目的是收集所有可以轻松应用的高尔夫球技巧,&lt;all languages&gt;而不是特定的技巧。 仅发布其逻辑可应用于大多数语言的答案 请给每个答案一个提示
81 code-golf  tips 

9
计数米粒
考虑一下这10张不同数量的白米谷物的图像。 这些仅是缩略图。单击图像以原尺寸查看。 A: B:C:D:E: F: G:H:I:J: 粒数: A: 3, B: 5, C: 12, D: 25, E: 50, F: 83, G: 120, H:150, I: 151, J: 200 注意... 谷物可能会相互接触,但它们不会重叠。谷物的排列高度不得超过一个谷物。 图像具有不同的尺寸,但是由于照相机和背景是固定的,因此所有图像的大小都是一致的。 颗粒永远不会超出范围或接触图像边界。 背景始终是相同的黄白色一致阴影。 大小谷物均被视为一粒。 这5点是所有此类图像的保证。 挑战 编写一个程序,获取此类图像,并尽可能准确地计算出米粒的数量。 您的程序应使用图像的文件名并打印其计算出的颗粒数。您的程序必须至少适用于以下图像文件格式之一:JPEG,位图,PNG,GIF,TIFF(现在图像均为JPEG)。 您可以使用图像处理和计算机视觉库。 您可能未对10个示例图像的输出进行硬编码。您的算法应适用于所有类似的米粒图像。如果图像区域小于2000 * 2000像素并且米粒少于300粒,那么它应该能够在一台像样的现代计算机上运行少于5分钟。 计分 对于10张图像中的每张,取实际颗粒数的绝对值减去程序预测的颗粒数。将这些绝对值相加即可得到分数。最低分获胜。分数为0是完美的。 如果是平局,则以票数最高的答案为准。我可能会在其他图像上测试您的程序,以验证其有效性和准确性。

30
打印Tabula Recta!
打印Tabula Recta! Tabula Recta(有时称为“ Vigenere表”)是由Johannes Trithemius创建的,并已用于多种密码中,包括Bellaso Vigenere密码和Trithemius密码的所有变体。看起来像这样: ABCDEFGHIJKLMNOPQRSTUVWXYZ BCDEFGHIJKLMNOPQRSTUVWXYZA CDEFGHIJKLMNOPQRSTUVWXYZAB DEFGHIJKLMNOPQRSTUVWXYZABC EFGHIJKLMNOPQRSTUVWXYZABCD FGHIJKLMNOPQRSTUVWXYZABCDE GHIJKLMNOPQRSTUVWXYZABCDEF HIJKLMNOPQRSTUVWXYZABCDEFG IJKLMNOPQRSTUVWXYZABCDEFGH JKLMNOPQRSTUVWXYZABCDEFGHI KLMNOPQRSTUVWXYZABCDEFGHIJ LMNOPQRSTUVWXYZABCDEFGHIJK MNOPQRSTUVWXYZABCDEFGHIJKL NOPQRSTUVWXYZABCDEFGHIJKLM OPQRSTUVWXYZABCDEFGHIJKLMN PQRSTUVWXYZABCDEFGHIJKLMNO QRSTUVWXYZABCDEFGHIJKLMNOP RSTUVWXYZABCDEFGHIJKLMNOPQ STUVWXYZABCDEFGHIJKLMNOPQR TUVWXYZABCDEFGHIJKLMNOPQRS UVWXYZABCDEFGHIJKLMNOPQRST VWXYZABCDEFGHIJKLMNOPQRSTU WXYZABCDEFGHIJKLMNOPQRSTUV XYZABCDEFGHIJKLMNOPQRSTUVW YZABCDEFGHIJKLMNOPQRSTUVWX ZABCDEFGHIJKLMNOPQRSTUVWXY 我经常需要它,但是在Internet上任何地方都找不到它可以复制和粘贴。因为方桌是那么的漫长,并采取该死的年龄打字,你的代码必须尽可能短。 规则/要求 每个提交应该是完整的程序或功能。如果它是一个函数,则只需将函数调用添加到程序底部即可使其可运行。其他任何内容(例如C中的标头)都必须包括在内。 如果可能,请提供指向可以测试您的程序的站点的链接。 您的程序不得向写入任何内容STDERR。 禁止使用标准漏洞。 您的程序在任何情况下都可以输出,但是必须将其打印出来(而不是数组或类似的东西)。 计分 程序根据字节评分,默认情况下为UTF-8或您选择的其他字符集。 最终,字节数最少的答案将获胜。 意见书 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 # Language Name, N bytes …

21
原始和独特的保龄球
您面临的挑战很简单:仅使用唯一的字节以您选择的语言编写尽可能长的原始程序。(从该链接复制的原始程序的完整定义在此问题的底部。) 是的,没有附加条件。您的代码根本不需要做任何事情,只需运行就不会出错,满足原始程序的要求(上面链接),并且在使用的编码中不包含重复的字节。 出于以上解释和“原始程序”的链接定义的目的,错误定义为导致程序在有限的时间后完全无法运行或以非零退出代码终止的任何错误。 因为这是代码保龄球,最长而不是最短,所以代码获胜(按字节数衡量)。理论上最大可能的分数是256,因为可能有256个不同的字节。如果是平局,则以最高分的第一个答案为准。 这是原始程序的完整定义,从上面的链接复制而来: 让我们将原始程序定义为本身没有任何错误,但是如果您通过删除任何连续的N个字符的子字符串来修改它会出错的程序,其中1 &lt;= N &lt; program length。 例如,三个字符的Python 2程序 `8` 是原始程序,因为删除长度为1的子字符串导致的所有程序均会引起错误(实际上是语法错误,但任何类型的错误都可以): 8` `` `8 并且由于删除长度为2的子字符串而产生的所有程序也会导致错误: ` ` 例如,如果`8曾经是一个没有错误的程序,那么`8`它将不会是原始的,因为所有删除子字符串的结果都必须出错。

30
2048类数组移位
假设我们要像2048游戏中那样移动数组:如果数组中有两个相等的连续元素,请将它们合并为value元素的两倍。Shift必须返回一个新的数组,其中每对连续的相等元素都用它们的和替换,并且对不应该相交。移位仅执行一次,因此我们不需要再次合并结果值。请注意,如果我们有连续3个相等的元素,我们总结最右边的人,因此,例如,[2, 2, 2]应该成为[2, 4]不[4, 2]。 任务是编写最短函数,该函数接受一个数组并返回移位的数组。 您可以假设所有整数都将严格为正。 例子: [] -&gt; [] [2, 2, 4, 4] -&gt; [4, 8] [2, 2, 2, 4, 4, 8] -&gt; [2, 4, 8, 8] [2, 2, 2, 2] -&gt; [4, 4] [4, 4, 2, 8, 8, 2] -&gt; [8, 2, 16, 2] [1024, 1024, 512, …

16
击败SVGCaptcha
我遇到了SVGCaptcha,立即意识到这是一个坏主意。 我希望您通过从代码产生的SVG图像中提取验证代码来说明这是多么糟糕的主意。 示例图像如下所示: 这是示例图像的来源: &lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" width="200" height="40" &gt; &lt;rect x="0" y="0" width="200" height="40" style="stroke: none; fill: none;" &gt; &lt;/rect&gt; &lt;text style="fill: #4d9363;" x="5" y="34" font-size="20" transform="translate(5, 34) rotate(-17) translate(-5, -34)"&gt;8&lt;/text&gt; &lt;text style="fill: #be8b33;" x="125" y="29" font-size="21" transform="translate(125, 29) …

25
打印“你好,世界!”
对真的。 用硬件打印机🖨 打印它以创建纸质副本。 将必要的命令/数据发送到打印机,以便在纸上打印以下文本: 你好,世界! 您可以使用任何可用的本地或网络连接的打印机。 如果您的打印机允许,则应在白纸上用黑色墨水使用8pt或更大的文本。 文本应显示在自己的行上。可以根据需要将其定位在左侧或右侧。 提交的数字照片/视频/ GIF证据会有所帮助。 如果您的硬件不能做纸,但可以进行其他奇特的硬拷贝生产,例如3D打印,CNC加工或原子级打印,那么我很乐意接受这样有趣的意见。 为了明确起见,该问题询问“将必要的命令/数据发送到打印机”。这意味着不需要进一步的用户输入。打开打印对话框是不够的。截至2016年12月31日太平洋标准时间上午10:48,执行此操作的现有答案将为您的父级(但我自己不支持)。

30
最短代码按位反转二进制字符串
我认为这里没有足够的简单问题供初学者尝试! 挑战:给定随机输入字符串1和0,例如: 10101110101010010100010001010110101001010 编写输出最短代码的最短代码,如下所示: 01010001010101101011101110101001010110101
79 code-golf  string 

30
伸缩括号
考虑正确平衡的括号的非空字符串: (()(()())()((())))(()) 我们可以想象每对括号代表一个折叠的伸缩式结构中的圆环。因此,让我们扩展望远镜: ( )( ) ()( )()( ) () ()() ( ) () 另一种看待它的方法是将深度为n的括号移到第n行,同时保持其水平位置。 您的任务是采用这样的平衡括号字符串,并生成扩展版本。 您可以编写程序或函数,通过STDIN(或最接近的等效项),命令行参数或函数参数获取输入,并通过STDOUT(或最接近的等效项),返回值或函数(out)参数生成输出。 您可以假定输入字符串有效,即仅包含正确平衡的括号。 您可以在每行上打印尾随空格,但不要在多余的空格前打印多余的空格。总的来说,这些行的长度不能超过输入字符串长度的两倍。您可以选择打印单个尾随换行符。 例子 除了上面的示例,这里还有更多的测试用例(输入和输出用空行分隔)。 () () (((()))) ( ) ( ) ( ) () ()(())((()))(())() ()( )( )( )() () ( ) () () ((()())()(()(())())) ( ) ( )()( ) ()() ()( )() …

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.