编程拼图和代码高尔夫

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

27
越少越少
任何人都可以通过添加字符来使程序的输出变大,所以让我们做相反的事情。 使用您选择的语言满足以下条件,为REPL环境编写完整的程序,内部函数或代码段: 您的代码必须至少包含1个字符。 运行原始代码会生成x个字符输出到STDOUT(或最接近的替代字符),其中0≤x <+∞。 从原始代码中删除任何任意单个字符都会再次产生有效代码,该代码至少会产生x + 1个字符输出到STDOUT。 原始代码或修改都不会产生任何错误输出,无论输出到STDOUT,STDERR,syslog还是其他地方。该规则的唯一例外是编译器警告。 您的程序可能不需要任何标志或设置来抑制错误输出。 您的程序可能不会包含任何致命错误,即使它们不会产生任何输出。 原始代码和修改都必须是确定性的,并最终完成(没有无限循环)。 原始代码或修改都可能不需要任何形式的输入。 函数或代码段在两次执行之间可能不会保持任何状态。 考虑到该任务对于某些语言而言是微不足道的,而对于另一些语言而言则是彻头彻尾的,所以这是一场流行竞赛。 投票时,请考虑代码的“相对简短”,即与相同语言下的较长答案相比,较短的答案应被认为更具创造力。

30
在不使用每个元音的情况下打印字母
启示:1939年,一个名叫欧内斯特 ·文森特·赖特(Ernest Vincent Wright)的人写了一部名为《加兹比》的小说,没有使用字母“ e”。 您的任务是用任何一种语言(具有基于文本的语法*)编写一组(最多5个)程序,以按顺序输出所有26个字母。但是,对于每个元音aeiou,至少一个程序不得包含任何出现的元音。 所以一定有 在程序语法中的任何地方都不使用“ a ”或“ A ”的程序。 在程序语法中的任何地方都不使用' e '或' E '的程序。 不使用程序“ 我 ”或“ 我 ”在程序的语法的任何地方。 在程序语法中的任何地方都不使用' o '或' O '的程序。 在程序语法中的任何地方都不使用“ u ”或“ U ”的程序。 它们都必须输出abcdefghijklmnopqrstuvwxyz。 优胜者应是所有程序长度最短的解决方案。 *因为约束在Piet或Whitespace中并不是什么挑战 当前排名(2014年3月6日): 一个 PL:11 乙灰:31 乙 efunge:26 B urlesque:12 乙 rainfuck:38 Ç:84 C#:278/149 Ç果酱:6 Ç lojure:81 …

30
我是粗鲁的号码吗?
现在有一段时间,我指望手指时一直遇到问题,特别是我只能数到十。我对这个问题的解决方案是用手指数二进制,将拇指放一个,食指放两个,拇指和食指放三个,等等。但是,当我们进入四号。具体而言,它要求我们举起中指,这会导致一个相当不幸的手势,这在社会上通常是不可接受的。这种数字是粗鲁的数字。当我们抬起第二只手的拇指和第一只手的中指时,我们到达下一个粗鲁的数字36。原始数字的定义是在这种计数系统下导致我们仅输入任何手的中指。一旦我们超过了1023(一个人可以达到的最大数目,两只手各五个手指),就假设我们继续第三只手,并根据需要添加其他手。 你的任务: 编写一个程序或函数,该程序或函数接收输入,并根据输入是否为粗鲁的数字输出真/假值。 输入: 0到10 9(含)之间的整数。 输出: 真/假值,指示输入是否为粗鲁的数字。 测试用例: Input: Output: 0 ---> falsy 3 ---> falsy 4 ---> truthy 25 ---> falsy 36 ---> truthy 127 ---> falsy 131 ---> truthy 得分: 这是代码高尔夫球,因此以字节为单位的最低分数获胜。

27
2016 Time Capsule String:您的语言通用吗?
大约一年前,2015年12月31日,我想到: 我们应该制作一个时间胶囊线。每个人都可以添加一个角色,接下来的新年中,我们将看到谁可以用当时存在的esolang在所有角色中做出最好的程序。 Doorknob亲切地从PPCG社区中收集了角色,并确保它们安全了一年。 多达74人参加了比赛,所以我们有74个 可打印的ASCII字符供您玩耍! 以下是2016年时间胶囊字符串的74个字符,按提交顺序排列: H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{% 以下是2016年时间胶囊字符串的74个字符,按ASCII顺序排列(注意前导空格): !!!!!#$$%&())))*+...1449:=@@@AHILOQQQTTZ\\^`````````eefmpxy{||||~~~~~~~~~ 协作并不是很多,但在这里,我们就像是一个挑战。 挑战 为了确定时间胶囊字符串哪种语言“最好”,我们将面临6个(对于201 6)挑战,难度增加,其中每个挑战都必须使用74个时间胶囊字符中的一个子集。 面临6个不同的挑战有助于确保更多的语言可以竞争,但是只有最好的语言才能回答所有这些问题并获得高分。 得分: 根据使用了多少个角色,每个挑战的得分从0到74。 分数越高越好。 如果您的语言无法完成一项挑战,那么您对该挑战的评分为0。 挑战的任何非空子集都可以完成。 您的最终分数是所有6个挑战的分数之和。 最好的最终分数是6×74或444。 挑战 1.运行 如果某种语言的代码不能在一开始就运行,那么它将根本无能为力。 编写可能运行时间最长的完整程序(记住,仅使用74个时间胶囊字符),而不会出现编译时或运行时错误。 程序做什么无关紧要,它是否有输入/输出或进入无限循环都无关紧要,只重要的是程序运行没有错误。(警告是可以的,由于用户输入错误而引起的错误也可以。) 允许注释,因此可以很简单 #H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{% 在Python中获得74分。 (如果这是您的语言可以完成的唯一挑战,请不要害怕回答,但是也不要期望获得很多选票。) 分数=程序长度(程序越长越好) 2.输入/输出 没有输入或输出形式的语言几乎和不能运行的语言一样没有用。 给定一个可打印的ASCII由字符!(0x33)至}(0x7D)包容,输出可打印的ASCII字符之前和之后。 输出可以是两个长度的字符串或列表,也可以是由空格或换行符分隔的字符。 例如,如果输入为}输出,则可能为|~或["|", "~"]或| ~或|\n~。 同样, "是的输出!,AC也是的输出B。 分数= 74-程序长度(程序越短越好) 3.可分支性 条件转换通常是图灵完整性的必要条件,而图灵完整性通常是一种有用的语言的要求。 给定一个正整数,如果以十进制数字结尾,16则将a更改6为a 7并输出结果;否则,输出不变。如果愿意,可以使用字符串作为输入/输出。 例子: 2016 …

30
“ 99瓶啤酒”
编写一个程序,以尽可能少的字节将歌词输出到99瓶啤酒。 歌词: 99 bottles of beer on the wall, 99 bottles of beer. Take one down and pass it around, 98 bottles of beer on the wall. 98 bottles of beer on the wall, 98 bottles of beer. Take one down and pass it around, 97 bottles of beer on …

30
没有附加字符串(或数字)
如果您愿意,请考虑参加: 该官方Dyalog APL 2016年游戏 每月Dyalog APL 2017 Code Golf挑战赛 用相同的语言制作12个摘要/表达式,分别得出数字0到10和42,但不写任何文字数字,字符串或字符数据。 内置数据(如PI()和ALPHABET())很好,例如CJam的U,X,Y,Z和A常数,以及Processing的BLEND,CHORD,CENTER,BREAK和LINES。 每个摘录都必须能够独立存在,即它们可能不是相互依赖的。但是,在单个代码段内,您可以分配一个变量并自由使用它,只要您直接通过名称而不是通过包含其名称的字符串来引用它即可。 所有摘要在提交时(在SE的报告中)必须在提交者的计算机上有效,但可能不依赖于异常的本地条件,例如目录中文件的数量,确切的日期或时间或用户的特定输入。 有效片段的示例 3:INT(LOG10(YEAR(TODAY()))) 因为在可预见的将来仍然如此 4:CUBICROOT(LEN(CHARACTERSET())) 因为256个字母字符集非常常见 8:SQRT(SYSTEMTYPE()) 因为64位系统非常常见 无效摘要的示例 5:LEN(USERNAME()) 因为大多数人不使用“ Admin”作为登录名:-) 9:LOG10(SYSTEMMEMORY()) 因为它仅在具有1 GB内存的系统上运行 42:CODE("*") 因为它包含字符串/字符文字 每个代码段的结果都必须产生一个实际数字(值,整数,浮点数等),该数字可用于使用与代码段相同的语言进行进一步的计算,即不是表示该数字的文本字符串。 仅允许使用基于字符的语言。 分数是所有12个摘要的总字节数。不含摘要的换行符不计在内。 请注意,以上规则可能会阻止某些语言参与,即使它们已经完成了图灵设计。 常问问题 问程序可以接受任何输入吗? 答:可以,但您可能不仅仅要求输入并输入相关号码。 问:是否允许使用物理数字(非数据数字)数字? A是,例如LOG10()。 问:Ruby中的符号是否算作文字? 一个是。 问分数是否在每个摘录之间包含换行符? A号 问:TI-BASIC“基于字符”足够有效吗? 一个是。 问:假和真算作数字文字吗? 答:不可以。 问:如果那是唯一的方法,并且数字不影响函数的输出,我们可以使用数字文字来调用函数吗? 一个是,如果这是你的语言编写代码的正常方式。 问:我的语言假定每个程序/表达式的开头都有[something]。我是否必须包含它,或者如果放在程序/表达式的中间,我的代码片段是否应该起作用? 答:他们应该只在程序/表达式的中间工作。 …

30
永远数数
从一个开始,编写一个永远计数的程序。 规则: 您的程序必须登录STDOUT或可以接受的替代方法(如果STDOUT没有)。 您的程序必须是完整的,可运行的程序,而不是函数或代码段。 您的程序必须输出每个数字,并且每个数字之间必须有一个分隔符(换行符,空格,制表符或逗号),但是所有数字都必须保持一致。 您可以用十进制,一进制或以256为基数打印数字,其中每个数字均由字节值表示。 在合理的台式PC上,程序必须至少计数到2 128(含),才能没有问题且内存不耗尽。特别是,这意味着如果使用一元数,则无法在内存中存储当前数字的一元表示形式。 与我们通常的规则不同,即使使用的语言(或语言版本)比此挑战新,也可以使用。专门针对此挑战提交0字节答案的语言是公平的游戏,但并不是特别有趣。 请注意,必须有一个解释器,以便可以测试提交。允许(甚至鼓励)自己为以前未实现的语言编写此解释器。 这并不是要找到具有最短解决方案的语言(有些地方空程序会解决问题),而不仅仅是找到每种语言的最短解决方案。因此,没有答案将被标记为已接受。 目录 这篇文章底部的Stack Snippet会根据答案a)生成目录,a)作为每种语言最短解决方案的列表,b)作为整体排行榜。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,则可以通过打败旧分数来保持标题。例如: ## Ruby, <s>104</s> <s>101</s> 96 bytes 如果要在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: ## Perl, 43 + 2 (-p flag) = 45 bytes 您还可以将语言名称设置为链接,然后该链接将显示在代码段中: ## [><>](http://esolangs.org/wiki/Fish), 121 bytes 显示代码段 <style>body { text-align: left !important} #answer-list …

8
外面很黑吗?绘制太阳图!
我们最接近的恒星,太阳,非常烦躁。上升和下降的时间取决于您所在的位置,以及是否是冬天。 我们希望能够推断出室外是否有阳光,而不必离开地下室,这就是为什么我们需要最新的太阳图(又称日光图)。您是一个编写生成该程序的程序的人! 规则:您的程序应输出图像(以已知格式)或我们星球的ASCII艺术表现形式,显示(近似)当前被太阳照亮的部分。您的程序必须是原始且完整的:除编程语言的标准库外,您不得复制,使用,包含或调用任何代码。 如果您仍然不知道我在说什么,这里是Wikipedia的示例: 这是一次人气竞赛。您应该在答案中注明要达到以下哪个目的(可能有多种选择): 正确性。请注意,规则说的是“近似值”-近似值越好,该类别中的点越多。您可以对照Wolfram Alpha,时间和日期或die.net来检查实现。 功能性。例如,交互性如何?标记特定位置?映射其他行星? 美学。绘制大洲?奖励积分。大洲纹理?奖励积分。在3D地球上?有云吗?星星?正确的星星?大量奖励积分。等等。 使用不常见,陈旧或仅是错误的技术。当然,您可以在Mathematica中进行介绍,但是您考虑使用m4吗?SQL吗?向前?x86组装? 好玩 是否要使用Dymaxion投影图?前进! 短代码。毕竟,这就是Code Golf SE。 玩得开心!

23
竞赛:排序大量高斯分布数据的最快方法
跟随对此问题的兴趣,我认为通过提出比赛来使答案更加客观和量化会很有趣。 这个想法很简单:我生成了一个二进制文件,其中包含5000万个高斯分布的双精度(平均:0,stdev 1)。目标是制作一个程序,以便尽可能快地对它们进行排序。python中一个非常简单的参考实现需要1m4s的时间来完成。我们能走多低? 规则如下:用一个程序打开文件“ gaussian.dat”并对内存中的数字进行排序(无需输出),并提供有关构建和运行该程序的说明。该程序必须能够在我的Arch Linux机器上运行(这意味着您可以使用可以在此系统上轻松安装的任何编程语言或库)。 该程序必须具有合理的可读性,以便我可以确保它可以安全启动(请不要使用仅汇编程序的解决方案!)。 我将在我的机器(四核,4 GB RAM)上运行答案。最快的解决方案将获得公认的答案和100分的赏金:) 该程序用于生成数字: #!/usr/bin/env python import random from array import array from sys import argv count=int(argv[1]) a=array('d',(random.gauss(0,1) for x in xrange(count))) f=open("gaussian.dat","wb") a.tofile(f) 简单的参考实现: #!/usr/bin/env python from array import array from sys import argv count=int(argv[1]) a=array('d') a.fromfile(open("gaussian.dat"),count) print "sorting..." b=sorted(a) 编辑:仅4 GB的RAM,对不起 …

11
到底llhuii如何在42个字节的Python中输出Evil Number?
这是Python中打高尔夫的技巧问题,涉及无政府状态高尔夫上的邪恶数字问题。 如果数字的二进制扩展数具有偶数1,则该数字是有害的。面临的挑战是打印前400个邪恶数字0,3,5,...,795,797,798,每行打印一个。 Python 2提交由llhuii领导,提供42字节的解决方案。次佳的是mitch的46个字节,然后是五个47字节的提交。llhuii似乎发现了一些真正神奇的东西,在过去两年多的时间里,许多强大的Python高尔夫球手都无法使用它。对于如此短的高尔夫球,节省4或5个字节是巨大的。 我仍然有47个字节。我希望我们可以解决这个社区难题。如果我们共同获得答案,我将以所有贡献者的名义提交。这个问题的答案可以是一段代码,一个新想法或一段分析。如果您是llhuii,请不要为我们宠坏它。 尽管由于此问题是“无尽的”,所以未公开提交,但我们得到了一些线索。获胜的提交花了0.1699秒来运行,比任何其他时间都要长得多,这表明该方法效率低下。根据字节统计,在42个字符中,23个字母数字字符[0-9A-Za-z]和19个ASCII符号。这意味着llhuii解决方案中没有空格。 您可以在问题页面上测试代码,从语言下拉列表中选择Python或上传.py文件。注意: 使用Python 2.7 您的代码必须是可打印的完整程序 没有输入用于解决此问题,例如kolmogorov-complexity 您的程序只需打印给定的400个值,即使较大的值会中断 程序有2秒的运行时间 程序可能会因错误而终止 您可以使用exec;“ exec被拒绝”是指shell exec


30
得分剪刀石头布
给定两个字符串“ Rock”,“ Paper”或“ Scissors”的输入,确定RPS回合的结果。如果第一个玩家获胜,则输出1;如果第二个玩家获胜,则输出-1;如果平局,则输出0。 Rock Rock -> 0 Rock Paper -> -1 Rock Scissors -> 1 Paper Rock -> 1 Paper Paper -> 0 Paper Scissors -> -1 Scissors Rock -> -1 Scissors Paper -> 1 Scissors Scissors -> 0 您必须使用准确的字符串“ Rock”,“ Paper”和“ Scissors”作为输入。您可以选择(一致)第一还是第二是第一位玩家的选择。您也可以将它们作为带有单个字符或空分隔符的单个输入。在您的输入格式中,保证输入是三种选择的9种可能的配对之一。 输出应为数字1、0或-1或其字符串表示形式。漂浮物很好。那么是+1,+0,和-0。 相关:编写RPS游戏 排行榜: 显示代码段 var QUESTION_ID=106496,OVERRIDE_USER=20260;function …
70 code-golf  game 

30
输入∩源代码
介绍 挑战在于创建一个程序/函数,以打印其自身源代码和给定字符串输入的交集。这是代码高尔夫球,更准确地说: 让我们I可以在输入设置 {"a","b","c"} 让S是源代码集 {"b","f"} 然后交集就是他们共享的东西 I ∩ S = {"b"} 输入项 输入是灵活的。它应该能够处理用于源代码的字符编码。 输出量 输出灵活。它应该是输入和源代码共享的字符集。而且,集合是不同对象的无序集合。综上所述: 输出是灵活的: 可以是任何数据结构(字符串或其他) 可能是无序的 可能有尾随 \n 应该与众不同 限制 与quine挑战类似,程序/功能可能无法读取其自身的源代码,并且不允许使用0字节的解决方案。 例子 #1 functor x(I){ return I ∩ self; } Inputs Outputs ------ ------- enter preformatted text here -> {"e","n","t","r","f","o","x"} ["Albrt"," Einstin"] -> {"l","r","t","n","s"} #2 (_)->_&"(_)->&\"\\" Inputs …
70 code-golf  quine 

23
好吧,这很奇怪……不用等待,甚至!
前言 整数始终为偶数或奇数。偶数可被二整除,奇数不可。 当您将两个整数相加时,可以根据被加数是偶数还是奇数来推断结果是偶数还是奇数: 偶数+偶数=偶数 偶数+奇数=奇数 奇数+偶数=奇数 奇数+奇数=偶数 同样,当您将两个整数相乘时,可以根据因子是偶数还是奇数来推断结果是偶数还是奇数: 偶数*偶数=偶数 偶数*奇数=偶数 奇数*偶数=偶数 奇数*奇数=奇数 因此,如果您知道数学表达式中仅涉及加法和乘法的所有变量的偶数或奇数,则可以推断结果是偶数还是奇数。 例如,我们可以确信地说(68 + 99) * 37结果是奇数,因为偶数加上奇数(68 + 99)就是一个奇数,而奇数乘以另一个奇数(odd * 37)就是一个奇数。 挑战 编写一个仅包含四个字符的字符串的程序或函数eo+*。该字符串表示一个以前缀表示法给出的数学表达式,仅涉及加法(+)和乘法(*)。每个e代表任意的偶数,每个o代表任意的奇数。 您的任务是简化表达式,打印或返回单个e或o基于表达式结果是偶数还是奇数。 您可以假设输入将始终使用有效的前缀表示法。具体来说,每个+和*将始终具有两个对应的操作数。这些操作数可以是单个e或o,或另一个+或*表达式,又具有操作数。 例如,输入*+eoo可以读取为mul(add(e, o), o)或(e + o) * o以普通的中止符号表示。在e与第一o是对应于操作数+,以及+eo最后o是对应于操作数*。 为了清楚起见,这是一些无效的输入,这些输入的前缀表示法不正确: eo ooe o+e ee* +*oe +e*o 输出中的单个尾随换行符就可以了,但否则,应该输出的是e偶数还是o奇数。 以字节为单位的最短代码获胜。 测试用例 (空行仅用于帮助从视觉上区分相似的案例。) e -> e o -> o …

17
这是什么颜色?[关闭]
给定三个数字值-一种颜色的红色,绿色和蓝色元素(每个通道八位,0到255)-您的程序必须输出给定颜色的名称。 例如; Input: 255, 0, 0 Output: Red 要么; Input: 80, 0, 0 Output: Dark Red 这是一次人气竞赛,因此,以7月1日获胜者为准,获得最多投票的答案。 灵感来自:显示输入的RGB颜色

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.