编程拼图和代码高尔夫

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

21
解密XKCD颜色
Randall Munroe(XKCD的作者)进行了一项调查,为颜色命名。主要结果是列出954种最常见的RGB监视器颜色的名称。 为了便于编程,以下是纯文本列表:http : //xkcd.com/color/rgb.txt。注意,第一行不是数据,而是包含许可证。 编写一个程序或函数,以上面列表中的有效颜色名称作为输入并输出关联的RGB颜色代码。您的程序不必以任何定义的方式处理无效输入。 有标准漏洞。此外,您的答案不得使用预定义的(内置或外部)颜色代码<->颜色名称图。(这包括链接列表。)以字节为单位的最短代码获胜。如果从文件读取,则必须包括文件的字节数。 例子: dark peach -> #de7e5d robin's egg blue -> #98eff9 pink/purple -> #ef1de7

3
构造五边形,避免使用指南针
规则 您将仅从两个元素开始:点AAA和BBB,使得A≠BA≠BA \neq B。这些点占据了一个在所有方向上都是无限大的平面。 在此过程的任何步骤中,您都可以执行以下三个操作中的任何一个: 画一条穿过两个点的线。 绘制一个以一个点为中心的圆,使另一个点位于圆上。 在两个对象(直线和圆)相交处添加一个新点。 您的目标是创建5个点,以使其使用尽可能少的圆形成正五边形(一个5边长相等的凸多边形)的顶点。当然,您可能还有其他要点,但对于常规的五边形,必须有5个要点。您不必为得分而绘制五边形的边缘。 计分 比较两个答案时,画出较少圆圈的答案更好。如果是圆形领带,画出最少线条的答案会更好。如果在圆圈和线条上都打成平局,那么加分最少的答案会更好。 反规则 尽管规则列表是详尽无遗的,并且详细说明了您可以执行的所有操作,但并不是,仅因为我没有说您不能做某事并不意味着您可以。 您不能创建“任意”对象。您会发现某些构造会像在“任意”位置添加一个点并从那里进行工作一样。您不能在相交处以外的其他位置添加新点。 您无法复制半径。一些构造将涉及使用指南针将其设置为两点之间的半径,然后将其拾起并在其他位置绘制一个圆。你不能做这个。 您无法执行限制过程。所有构造必须采取有限数量的步骤。渐近逼近答案还不够好。 您不能绘制圆弧或圆的一部分,以避免在计分中将其计为圆。如果您希望在显示或解释您的答案时在视觉上使用圆弧,因为它们占用的空间较小,请继续,但它们会作为得分的圆。 工具类 您可以在GeoGebra上仔细考虑问题。只需转到形状选项卡。这三个规则等效于使用中心工具的点,线和圆。 举证责任 这是标准,但我要重申。如果对某个特定答案是否有效存在疑问,举证责任由答卷人证明其答案有效,而不是由公众证明答案无效。 在我的Code-Golf网站上这是做什么的? 这是原子代码高尔夫的一种形式,类似于证明高尔夫,尽管有点怪异的编程语言。当前在元数据上有+ 22 / -0共识,即允许这种事情。

13
间谍太多了!
您正在与庞大的敌人间谍网络作战。您知道每个间谍都有至少一个(有时是多个)他们喜欢使用的伪造身份。您真的想知道您实际上正在处理多少个间谍。 幸运的是,您的反情报特工正在做他们的工作,有时可以弄清楚何时两个假身份实际上是由同一个敌方间谍控制的。 也就是说: 您的代理人并不总是知道两个伪造的身份背后何时有相同的间谍。 如果代理告诉您两个假身份是由同一间谍控制的,则您相信它们是正确的。 代理讯息 代理会向您发送隐秘消息,告诉您哪些身份背后隐藏着相同的间谍。一个例子: 您需要处理2个代理和5个伪造身份。 第一代理向您发送一条消息: Red Red Blue Orange Orange 这意味着他们认为有3个间谍: 第一个(红色)控制标识1和2 第二个(蓝色)控制标识3 第三个(橙色)控制标识4和5 第二个代理向您发送一条消息: cat dog dog bird fly 这意味着他们认为有4个间谍: 第一个(猫)控制身份1 第二个(狗)控制身份2和3 第三个人(鸟)控制身份4 第四个(飞行)控制身份5 编译intel我们看到: Identities: id1 id2 id3 id4 id5 Agent 1: |--same-spy--| |--same-spy--| Agent 2: |--same-spy--| Conclusion: |-----same-spy------||--same-spy--| 这意味着最多有2个间谍。 笔记 同一间谍拥有的身份不必是连续的,即消息如下: dog cat …
38 code-golf 

10
画“酷S”
介绍 我们都知道酷S(也称为超人S,StüssyS,Super S,Skater S,Pointy S,Graffiti S等):全世界数十亿的学童吸引了这个S,并立即为自己感到骄傲。万一您忘记了或完全不酷的童年,以下是酷S的图片: 给定的比例因子n作为输入(其中),输出ASCII技术中的冷S上。1≤n≤201≤n≤201\leq n\leq 20 如何画 从Cool S 的Wikipedia页面上: 输出量 当n= 1 时的Cool S 为: ^ / \ / \ / \ | | | | | | \ \ / \ \/ /\ \ / \ \ | | | | | | \ / …

28
输出Arecibo消息
Arecibo消息是1974年发送给球状星团M13的载有关于人类和地球的基本信息的星际无线电消息,希望外星情报可以接收和破译它。该消息由1,679个二进制数字组成,大约210个字节... 选择数字1,679是因为它是半素数(两个质数的乘积),按73行乘23列矩形排列。另一种排列方式是23行乘73列,产生难以理解的字符集(与所有其他X / Y格式一样)。 这是添加了颜色以突出显示其单独部分的消息。实际的二进制传输中没有任何颜色信息。 资料来源:维基百科 您的任务是按照图中所示的精确23x73排列输出Arecibo消息。可以使用以下任何一种输出格式: 文本,一个字符用一个字符表示,另一个字符用零(使用行分隔的常规规则) 具有两个不同值的2D数组 具有两种不同颜色的23x73图像 一条不间断的流,包含两个不同值的1679个项目(即上述格式中的任何一种,但均为单位)。 1679位整数。指出解决方案中的位和字节顺序(字节序)。 为了方便起见,这是可复制复制的版本(也是文本格式的示例输出): 00000010101010000000000 00101000001010000000100 10001000100010010110010 10101010101010100100100 00000000000000000000000 00000000000011000000000 00000000001101000000000 00000000001101000000000 00000000010101000000000 00000000011111000000000 00000000000000000000000 11000011100011000011000 10000000000000110010000 11010001100011000011010 11111011111011111011111 00000000000000000000000 00010000000000000000010 00000000000000000000000 00001000000000000000001 11111000000000000011111 00000000000000000000000 11000011000011100011000 10000000100000000010000 11010000110001110011010 11111011111011111011111 00000000000000000000000 00010000001100000000010 00000000001100000000000 00001000001100000000001 11111000001100000011111 00000000001100000000000 00100000000100000000100 00010000001100000001000 00001100001100000010000 00000011000100001100000 00000000001100110000000 00000011000100001100000 …

3
(A→B)→(¬B→¬A)
好吧,我认为现在是时候了,我们还有另一个证明高尔夫的问题。 这次我们将证明众所周知的逻辑真相 (甲→ 乙)→ (¬ 乙→ ¬ 甲)(A→B)→(¬B→¬A)(A \rightarrow B) \rightarrow (\neg B \rightarrow \neg A) 为此,我们将使用Łukasiewicz的第三个公理架构,这是一个由三个公理组成的极其优雅的集合,它们在命题逻辑上都是完整的。 下面是它的工作原理: 公理 Łukasiewicz系统具有三个公理。他们是: ϕ → (ψ → ϕ )ϕ→(ψ→ϕ)\phi\rightarrow(\psi\rightarrow\phi) (ϕ → (ψ → χ ))→ ((ϕ → ψ )→ (ϕ → χ ))(ϕ→(ψ→χ))→((ϕ→ψ)→(ϕ→χ))(\phi\rightarrow(\psi\rightarrow\chi))\rightarrow((\phi\rightarrow\psi)\rightarrow(\phi\rightarrow\chi)) (¬ φ → ¬ ψ )→ (ψ → φ )(¬ϕ→¬ψ)→(ψ→ϕ)(\neg\phi\rightarrow\neg\psi)\rightarrow(\psi\rightarrow\phi) …
38 logic  proof-golf 

23
漂亮的印刷多项式
介绍 人类是一个非凡的物种,但是有时我们很难理解,尤其是对于计算机。特别是,我们似乎喜欢用看似随意的规则以非常复杂的方式编写多项式。 使用这些规则,您可以编写出最短的程序来正确格式化多项式吗? 挑战 输入值 -1000到1000(含)之间的整数列表,代表多项式的系数,最后一个条目为x ^ 0(常数)的系数,第二个最后一个为x ^ 1的系数,依此类推。 输出量 以正确格式的人类数学表示形式表示此多项式的字符串。 规则: 仅当前导系数上的符号为负时才显示。 Right: -x^2+3 Wrong: +x^2+3 不打印系数为0的组件(所有系数均为0 *的特殊情况除外)。 Right: x^5-x^2+3 Wrong: x^5+0x^4+0x^3-x^2+0x+3 系数-1和+1必须不带1,除非它们是常数。 Right: x^5-x^2+1 Wrong: 1x^5-1x^2+1 仅在指数大于1时显示指数,并且仅在指数大于0时显示变量。 Right: 3x^3-7x^2+2x+1 Wrong: 3x^3-7x^2+2x^1+1x^0 *正确的情况:虽然零值通常会导致不打印该组件,但如果所有系数均为零,则应打印常数0。 Right: 0 Wrong: 0x+0 Wrong: (nothing) 这是代码高尔夫球,因此获胜者将是字节数最少的程序。 输入和输出示例 Input: Output: [0] 0 [0,0] 0 [0,-1,35,0] …

22
将针藏在干草堆中(警察)
这是警察和强盗挑战的一部分。去这里抢劫犯的一部分。 警察的挑战 您应该使用自己选择的语言编写程序或函数,该程序或函数将输出字符串Haystack。但是,必须有可能从程序中删除某些字符子集(而无需重新排序其余字符),以使生成的字符串也是使用相同语言的有效程序,而将其打印出来Needle。这两个程序/功能都可以选择打印一条尾随的换行符(彼此独立),但没有其他内容。输出区分大小写,并且必须遵循提供的确切大小写。 当然,您的目标是很好地隐藏“针”。但是请注意,可以使用任何有效的解决方案来破解提交的内容,而不仅仅是您想要的解决方案。 请在您的答案中包括: 您提交的语言(和相关版本)。 Haystack程序的大小(以字节为单位)。 Haystack程序本身。 如果不是STDOUT,则为输出方法。 如果可能,请提供指向您所选择语言的在线口译/编译器的链接。 您提交的内容可能是程序或功能,但不能是摘要,并且您不得采用REPL环境。您不得输入任何内容,而可以通过STDOUT,函数返回值或函数(输出)参数进行输出。 两种程序/功能都必须在合理的台式机上在5秒内完成,并且需要确定性。您不得使用内置函数进行散列,加密或随机数生成(即使您将随机数生成器植入固定值)。 为了公平起见,必须为您选择的语言提供免费的解释器或编译器。 如果找到Needle程序,答案将被破解。如果您的答案在7天内没有被破解,则可以在答案中显示预期的Needle程序,从而确保提交的内容安全。只要您不公开解决方案,即使7天已经过去,它也可能会被强盗破解。最短的安全 Haystack程序(以字节为单位)获胜。 例子 这是几个使用不同语言的简单示例: Ruby Haystack: puts 1>0?"Haystack":"Needle" Delete: XXXXXXXXXXXXXXX Needle: puts "Needle" Python 2 Haystack: print "kcatsyaHeldeeN"[-7::-1] Delete: XXXXXXXX XX Needle: print "eldeeN"[::-1] 请注意,已删除字符的子集不必是连续的。 完整的提交 <script>site = 'meta.codegolf'; postID = 5686; isAnswer = false; QUESTION_ID = …

30
很长的Terza Rima
描述 输出一个很长的Terza Rima的韵律方案。 输入值 没有。 输出量 ABA BCB CDC DED EFE FGF GHG HIH IJI JKJ KLK LML MNM NON OPO PQP QRQ RSR STS TUT UVU VWV WXW XYX YZY 规则 您可以在使用空格或换行符分隔节之间进行选择,因此: ABA BCB... 要么 ABA BCB ... 每行允许一个尾随空白,一个尾随换行。 输出可以是大写或小写。 这是code-golf,因此每种语言的最短代码(以字节为单位)获胜。

23
输出三位一体大厅素
基于这个Math.SE问题 ; 从此答案复制的数字。当然,最初来自Numberphile视频。 您的任务是输出以下1350位素数: 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888111111111111111111111111888888111111111111111111111111888888111111811111111118111111888888111118811111111118811111888888111188811111111118881111888888111188811111111118881111888888111888811111111118888111888888111888881111111188888111888888111888888111111888888111888888111888888888888888888111888888111888888888888888888111888888111888888888888888888111888888811188888888888888881118888188811188888888888888881118881188881118888888888888811188881118888111888888888888111888811111888811118888888811118888111111188881111111111111188881111111118888111111111111888811111111111888811111111118888111111111111188881111111188881111111111111118888811118888811111111111111111888881188888111111111111111111118888888811111111111111111111111888888111111111111111111111111118811111111111111111111111111111111111111111111062100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 您可以选择在输出中包括换行符。 规则 这是kolmogorov-complexity,因此没有输入。 您的程序必须在一小时内在标准计算机上终止-如果关闭,我将使用我的程序进行测试。如果您的程序运行了超过一分钟,或者没有在TIO上终止,请在计算机上注明时间。 这是代码高尔夫球,因此以字节为单位的最短代码胜出。

26
制作平方字
挑战 您的任务是创建一个程序,该程序接受任何给定的字符串输入,并以平方格式输出输入。空字符串应返回一个空字符串。 例子 给定输入: golf 您的程序应输出: golf o l l o flog 输入: 123 输出: 123 2 2 321 输入: a 输出: a 输入: Hello, world! 输出(注意,和之间的空格-间隙不只是换行符): Hello, world! e d l l l r o o , w w , o o r l l l d e !dlrow …

22
玫瑰让我转22.5
给定一个字符串,它是16点罗盘上的方向之一 以顺时针方向输出紧邻输入方向的两个方向。 具体来说,您需要处理以下(和仅这些)输入/输出对: Input Output N NNW NNE NNE N NE NE NNE ENE ENE NE E E ENE ESE ESE E SE SE ESE SSE SSE SE S S SSE SSW SSW S SW SW SSW WSW WSW SW W W WSW WNW WNW W NW NW WNW NNW …

30
输出数字最大为2 ^ n-1,“已排序”
以一个正整数n作为输入,并输出可以使用n位创建的(一些)十进制数,按以下方式排序: 首先列出仅可以使用一个创建的所有数字,1其余0以二进制表示形式(已排序)列出,然后使用两个连续的 1,其余的0,然后连续的 三个依次创建的所有数字1。 让我们看一下n = 4的情况: 0001 - 1 0010 - 2 0100 - 4 1000 - 8 0011 - 3 0110 - 6 1100 - 12 0111 - 7 1110 - 14 1111 - 15 因此,n = 4的输出为:1、2、4、8、3、6、12、7、14、15(可选输出格式)。 测试用例: n = 1 1 n = 2 1 2 …

30
这个数字是阶乘吗?
任务 给定一个自然数作为输入,您的任务是根据输入是否为任何自然数的阶乘来输出真值或假值。您可以假定输入数字将始终在您的语言支持的数字范围内,但是您一定不能滥用本机数字类型来解决问题。 适用标准漏洞。 输入值 系统会为您提供自然数(类型Integer或类似数字)。 您可以采用任何所需的输入方式,但前提是要假定其位于预定义变量中。prompt允许从文件,控制台,对话框(),输入框等进行读取。也可以作为函数参数输入! 输出量 您的程序应根据输入数字是任何自然数的阶乘来输出真实或错误值。 确保所有输入的真实/假值都一致,即,如果您使用一对1和0分别表示真实和假值,那么您的程序必须为应该具有真实值的所有输入输出1,而对于所有输入则为0。所有应具有假值的输入。 除了将其写入变量之外,您可以采用任何所需的输出方式。允许写入文件,控制台,屏幕等。功能也return被允许! 您的程序不得对任何输入产生错误! 测试用例 Input Output 1 Truthy (0! or 1!) 2 Truthy (2!) 3 Falsey 4 Falsey 5 Falsey 6 Truthy (3!) 7 Falsey 8 Falsey 24 Truthy (4!) 120 Truthy (5!) 获胜标准 这是代码高尔夫球,因此以字节为单位的最短代码胜出!

14
退格并重新输入单词列表
以下是从一个字符串退格并重新键入的方法: 从第一个字符串开始。 最后删除字符,直到结果是第二个字符串的前缀。(这可能需要0步。) 在末尾添加字符,直到结果等于第二个字符串。(这也可能需要0步。) 例如,从fooabc到的路径fooxyz如下所示: fooabc fooab fooa foo foox fooxy fooxyz 任务 给定一个单词列表,编写一个程序,该程序从空字符串到列表中的所有单词依次退格并重新键入,然后返回到空字符串。输出所有中间字符串。 例如,给定输入list ["abc", "abd", "aefg", "h"],输出应为: a ab abc ab abd ab a ae aef aefg aef ae a h 规则 您可以返回或打印字符串列表,也可以返回带有某些定界符的单个字符串。您可以选择包括初始和最终的空字符串。确保输入至少包含一个单词,并且每个单词只能包含小写ASCII字母(a– z)。编辑:保证输入中的连续字符串彼此不相等。 这是代码高尔夫球;以字节为单位的最短代码获胜。 Python 3中的参考实现:在线尝试!
38 code-golf  string 

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.