编程拼图和代码高尔夫

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

1
编程杯叠机器人
我敢肯定,每个人都可以看到杯子可以堆成金字塔(和其他形状)之前: A A A A A A A A A A A A A A A A A 是的,A绝对足够代表杯子。 可以在地面上,结构右侧或两个相邻杯子的顶部添加新杯子。这是上面的结构,但是新杯子的所有可用位置都标有_: _ A A A A A _ _ A A A A A A A A A A A A _ _ _ 假设我们要建立一个可以组装这些杯子叠的机器人。机器人将了解两条简单的指令来操纵这种结构: a:按照从左到右的阅读顺序在第一个可用位置添加一个新杯子(即,从上到下,从左到右扫描行,直到找到可用的位置,然后将杯子放在那里)。上面的示例将变为: A A A A A …

1
“填充网格”问题
具有简单规则但非平凡算法的挑战。:-) 任务 以空格分隔的整数形式输入: N A B S 其中N是2D正方形矩阵的边长,其中A和B之间(包括两端)填充有唯一数字(整数)。对于此矩阵中的每一行和每一列,总和始终相同:S。(换句话说,矩阵是一个半魔术正方形)。 注意: 所有数字均为正。例外是A,可以为0。 例子 对于 3 1 10000 2015 一个有效的解决方案是 对于 8 1 300 500 一个有效的解决方案是 输出量 您输出的应该是ASCII表。上面第一个示例的示例: 384 159 1472 1174 499 342 457 1357 201 用空格填充的右对齐整数。每列的宽度是该列中最大整数的宽度。 计分 这是代码高尔夫球,因此以字节为单位的最短代码获胜。存在标准漏洞(尤其是有关解决此问题的内置漏洞)。您不必担心错误或其他不可能的输入(包括负数)。请为上面的第二个示例在您的答案中(强制性)提供示例输出。
36 code-golf  math  grid 

30
加泰罗尼亚语数字
该Catalan数(OEIS)是自然数常常出现在组合的序列。 第n个加泰罗尼亚语数字是Dyck单词的数目(括号中的平衡字符串或方括号,例如[[][]];正式定义为使用两个字符a和b的字符串,这样从开头开始的任何子字符串的字符数都大于或等于number b个字符,整个字符串具有相同的a和b个字符),长度为2n。第n个加泰罗尼亚数字(对于n> = 0)也明确定义为: 从n = 0开始,前20个加泰罗尼亚数字为: 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190... 挑战 编写一个完整的程序或函数,该程序或函数通过STDIN或可接受的替代方法获取非负整数n,并输出第n个加泰罗尼亚数字。您的程序必须至少对输入0-19有效。 输入输出 输入值 您的程序必须根据此meta post接收来自STDIN,函数参数或任何可接受的替代方法的输入。您可以将输入的数字读取为标准的十进制表示形式,一进制表示形式或字节。 如果(且仅当)您的语言无法从STDIN或任何可接受的替代方法中输入内容,则它可能从程序中的硬编码变量或适当的等效语言中获取输入。 输出量 您的程序必须根据此meta post将第n个加泰罗尼亚编号输出到STDOUT,函数结果或任何可接受的替代方法。您可以以标准的十进制表示形式,一元表示形式或字节形式输出加泰罗尼亚数字。 输出应包含适当的加泰罗尼亚语数字,并可以选择后面跟着一个或多个换行符。除了无法避免的语言解释器的恒定输出(例如问候语,ANSI颜色代码或缩进​​)以外,无法生成其他任何输出。 这并不是要找到最短的语言。这是关于寻找每种语言中最短的程序。因此,我不会接受答案。 在此挑战中,只要具有实现方式,就可以接受比挑战新的语言。允许(甚至鼓励)自己为以前未实现的语言编写此解释器。除此之外,必须遵守所有代码高尔夫球的标准规则。大多数语言的提交都将以适当的预先存在的编码(通常为UTF-8)以字节计分。另请注意,允许使用内置函数来计算第n个加泰罗尼亚语数字。 目录 这篇文章底部的Stack Snippet会根据答案a)生成目录,a)作为每种语言最短解决方案的列表,b)作为整体排行榜。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language Name, N bytes …

4
成功导航小行星场
介绍 每个人都知道,成功导航小行星场的可能性约为3,720:1。但是尽管有您的警告,Han Solo仍然愿意尝试自己的运气。 出于对人造生活的恐惧,您决定使用飞船特有的方言(请参见:首选的“高尔夫语言”)进行编码,避免使用小行星程序,该程序将决定采用小径ASCII迷宫的路径。 输入值 Millenium Falcon拥有一个小行星场制图程序,该程序提供类似于以下数据: | ##### ######### | | ###### # ### # | | # # # # #### # | @ ## #### |# # # ### ## | |## ## #### # # | |#### ##### # ## | 顶部排在猎鹰的左边,底部排在猎鹰的右边,而列代表船前的东西。 每个#都是障碍。 每个空间都是飞船可以飞入的空白空间。 输入始终为7个字符高。这是小行星映射宽度限制。 输入始终为32个字符长(字段本身为30个字符,开始和结束限制为2个字符)。这是小行星映射深度限制。竖线|标记映射的开始和结束。 …
36 code-golf  maze 

18
直观地解释勾股定理
勾股定理的常见视觉解释如下: 正方形用来表示边长的平方,以及的面积a + b = c,就像毕达哥拉斯定理所说的那样。 这部分是您必须显示的。 你的任务 您将获得两个整数作为输入,表示整数a和b直角三角形(例如3, 4)。 然后,您将方块出长度a,b以及c走出的#人物。例如这里是3: ### ### ### 然后,将它们格式化为一个数学方程式,以解释特定的毕达哥拉斯三联体: ##### #### ##### ### #### ##### ### #### ##### ### + #### = ##### 请注意=和+符号在两边都留有空格,而所有内容都在底部。 你永远不会了解get值a和b使c非整。 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 测试用例 (一旦我有时间,就会有更多东西来,这些真的很难手工制作) 3, 4 ##### #### ##### ### #### ##### ### #### ##### ### + #### = ##### …

24
重新映射ASCII
挑战 编写一个对ASCII字符重新排序的程序! 它应该只输出一个包含所有可打印ASCII字符的字符串。该字符串的第一个字符被赋值为1,第二个字符被赋值为2,依此类推。 如果两个字符通常彼此相邻(它们的字符代码之差为1),则它们可能不会在输出中彼此相邻出现。 计分 您的分数将是源代码中所有字符的值之和,这取决于程序的输出。 请查看验证部分以计算您的分数。 最低分获胜! 规则 “可打印的ASCII”定义为表示字符代码32-126(含)。 您可以编写完整的程序或函数。 您的代码只能包含可打印的ASCII字符和换行符。 您的程序可能不接受任何输入。 换行符始终为1。程序的输出不应包含换行符。 验证 使用此堆栈片段来验证您的代码输出是否有效,并计算您的代码得分! var result = document.getElementById("result");document.getElementById("submit").onclick = function() {var code = document.getElementById("code").value;var output = document.getElementById("output").value;var values = [];for (var i = 0; i < output.length; i++) {var c = output[i];var v = c.charCodeAt();if (v < 32 …

10
告诉我我必须做多少数学问题!
我的老师总是给我做作业中最复杂的数学问题。像:pg. 546: 17-19, 22, 26, pg. 548: 35-67 odd, 79, 80-86 even。我想提前知道有多少时间留给我的家庭作业,但我不想弄清楚所有这些。这就是为什么要为我编程的任务。 技术指标 您将得到一个字符串,详细说明我必须以args,stdio等形式完成的问题。 它们将以逗号分隔(可能comma-space分隔) 它将仅以数字形式包含单个问题(例如79) 和形式的范围17-18(同样,您必须处理可选空格) 范围包括两端 该范围可以选择加odd或后缀even,您必须考虑这些范围。 一组范围/页面将以格式的页码开头pg. 545:,再次必须处理可选的空格。您可以放心地忽略这些,因为您需要在所有页面上都解决问题 文本可以大写或小写,但不能同时使用。 Return,stdout等我必须做的家庭作业的数量。 由于这是代码高尔夫球,因此以字节为单位的最短代码将获胜! 测试用例 pg. 546: 17-19, 22, 26, pg. 548: 35-67 odd, 79, 80-86 even -> 27 pg. 34: 1 -> 1 PG. 565: 2-5,PG.345:7 -> 5 pg. …

7
数字作为圆形图形
首先,研究这个难题以了解您将要产生的东西。 您面临的挑战是编写一个程序或函数,该程序或函数将输出一个圆形图形(类似于拼图中的图形),并给出(以10为基数)介于1和100(含)之间的数字。这类似于此挑战,除了您将生成图形而不是罗马数字。以下圆圈从左到右代表数字1-10: 作为对谜题状态的答案,您的图形应该从内到外看起来像罗马数字,其中线条粗细代表罗马数字符号,整个图形代表数字。供您参考,这是您需要的线宽。每行和下一行之间应有3px的填充。 Number Roman Numeral Line Width 1 I 1px 5 V 3px 10 X 5px 50 L 7px 100 C 9px 请发布您的输出中的一两个示例。假设输入正确,标准漏洞等等。这是代码高尔夫,所以最少的字节获胜。如果出现平局,大多数选票将获胜。祝好运!

9
以正确的顺序吃糖果
说到吃糖果,我比一般的外行人坚持更高的标准。在“混合使用”与“保存最佳结果到最后”之间存在微妙的平衡。 在此挑战中,您将获得一个字符串,其中每个字符代表一块糖果。不同的字符(区分大小写)代表不同类型的糖果。然后,您的程序必须根据以下步骤确定正确的糖果消费顺序。您可以编写一个完整的程序(STDIN / STDOUT)或一个命名函数来完成此任务。 假设我的糖果藏起来了oroybgrbbyrorypoprr。首先,我使用较低的ASCII字符值作为平局,将糖果分成相同类型的堆,顶部数量较大。 rrrrrr oooo bbb yyy pp g 然后,我拿走每一排糖果,并按一定间隔将它们等距放置。例如,如果有3块糖果,则将1个放置在方式的1/3处,将2/3的方式放置在末尾。 .r.r.r.r.r.r ..o..o..o..o ...b...b...b ...y...y...y .....p.....p ...........g 然后,我逐列向下创建最终的糖果订单rorbyroprbyorrobypg。 输入值 包含糖果存放区的字符串。上面示例的输入可能是: oroybgrbbyrorypoprr 输出量 包含糖果的细绳重新组织成正确的食用顺序。 rorbyroprbyorrobypg 计分 这是代码高尔夫。以字节为单位的最短答案将获胜。适用标准代码高尔夫球规则。

1
多米诺电路
计分板 这是VisualMelon提交的原始分数(即多米诺骨牌数)。当有更多答案出现时,我将把它们变成下面描述的归一化分数。现有解决方案现在可以解决基准测试中的所有电路: Author Circuit: 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 28 29 30 31 32 33 34 35 36 37 38 39 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- VisualMelon 39 45 75 61 307 …

3
绘制静物(或移动的静物)-在“生命游戏”中绘制图像
输入的是灰度图像。您的任务是在Conway的《生命游戏》中找到与输入图像尽可能相似的静态或循环模式。 您的输出可以是任一个静止图像或在一些格式可以被转换成GIF一个循环动画。输出图像的尺寸应与输入的尺寸相同,并且必须仅包含黑白像素。 如果输出是动画,则必须根据“生命游戏”规则从上一帧生成每个帧,每个像素一个单元。动画必须循环播放,第一帧是根据相同规则从最后一帧生成的。 如果输出是静态图像,则对其应用生命周期规则必须产生相同的图像。这意味着没有一个“活动”单元可能具有三个以上或少于两个“活动”邻居,并且没有“死”单元可能恰好具有三个“活动”邻居。(请注意,这基本上与上述动画相同,但只有一帧。) 额外的规则和说明: 您(或您的程序)可以选择将“活动”单元格表示为白色,将“无效”单元格表示为黑色,反之亦然。也就是说,您可以对此进行硬编码,或者您的程序可以根据输入图像进行选择。(但是动画的每一帧都必须相同。) 边界条件应该是周期性的,这意味着最右边一列的单元格在最左边一列具有邻居,依此类推。 对于动画,帧频取决于您(或您的程序);我认为快速帧速率可以很好地近似于灰色像素。 请在您的答案中至少嵌入两个结果。如果您可以从下面所有输入的图像中发布结果,那是可取的。 如果需要这样做,可以按比例缩小测试图像,以便以足够小的文件大小获得GIF。如果您也想链接到更大的文件,那很好。如果要炫耀,请随时查找一些更高分辨率的源文件。 请尝试避免代码中包含太多可控制的参数-最好是程序的唯一输入是图像。唯一的例外是,如果您想使用一个参数来控制动画帧的数量,因为这会影响文件的大小。 您可以使用外部程序来更改输入和输出文件的格式,和/或根据需要将输出帧编译为动画。(这不是文件格式处理方面的挑战。) 这是一场人气竞赛,因此得票最多的答案将获胜。 这是一系列测试图像,主要来自本网站的其他问题。(以后我可能会添加其他“奖励”输入图像。) 刚开始时,这是Python 2中非常笨拙的参考尝试,它利用了一个事实,即四个正方形的块在生命游戏中是稳定的结构。它只是将输入图像缩放4倍,如果对应的像素比0.5暗,则会绘制一个块。 from skimage import io from skimage import transform import sys img = io.imread(sys.argv[1],as_grey=True) source = transform.resize(img, [i/4 for i in img.shape]) img[:]=1 for x in xrange(source.shape[0]): for y in xrange(source.shape[1]): if source[x,y]<0.5: img[x*4, y*4] …


9
编写赛车程序
恭喜@kuroineko。以优异的速度赢得悬赏赛(672步),在Gauntlet赛道上。 领导者:* Nimi为轻量级2129得分。其他条目较大,但显示出一定的速度。 *领导者可能会因以后的参加而发生变化。 您的任务是编写一个小程序,该程序可以快速驾驶赛车。 规则 您的程序将读取曲目的图像。您可以在任何黄色像素处启动汽车,并且必须通过交叉任何黑色像素来完成。您的汽车的行驶路线只能在灰色((c,c,c),其中30 <= c <= 220)轨道上。 您的汽车每转一圈将以直线速度移动,速度v由整数vx和vy组成(从(0,0)开始)。在每个回合开始时,您的程序可以更改vx和vy,以便: abs(vx2-vx1) + abs(vy2-vy1) <= 15 更新:最大加速度增加到15。 然后,您的程序将以白色从当前位置到(位置+ v)绘制一条直线,并在开始处带有一个蓝点。如果此线下方的像素为黑色,则说明您已经完成比赛。否则,如果该行下的所有像素均为灰色或黄色,则可以继续下一轮。 您的程序必须输出轨道图像,并以白色和蓝色添加路径。 附加输出(2015年1月15日新增): 如果您想竞争获胜或奖金,您的程序还应该分别输出城市或护手的点数列表(蓝点)。在答案中包括点列表(用于验证)。的问题应该是这样的:(x0,y0), (x1,y1), ... (xn,yn)。您可以自由使用包含'\n'字符的空白以适合页面上的数据。 您可以使用第三方图像读取和写入,线条绘制和像素访问库。您不能使用路径查找库。如果需要,可以根据需要将PNG图像转换为其他图形格式(例如GIF,JPG,BMP)。 继续前进的几条路 一个简单的开始: 赛道: 障碍课程: 城市: 噩梦之路:护手(如果其他都太容易了) 计分 您的分数将基于您在“城市”赛道上的成绩。积分等于您的程序长度(以字节为单位),加上赛车每转一圈要获得10积分。最低分获胜。请在答案中附上您的城市田径跑步图片-我们希望了解您的驾驶风格。 请使用以下格式的标题作为答案: <Racing Driver or Team Name> <Language> <Score> 例如:Slowpoke Perl 5329 您的程序必须能够按照上述规则在任何轨道图像上行驶。您不得对最佳路径或测试轨迹的任何参数进行硬编码。其他标准漏洞也适用。 类似的挑战 这与马丁提出的难题类似:致Vectory!– Vector …

28
Java对JavaScript就像汽车对地毯一样
标题被盗灵感来自格雷格Hewgill的回答到什么是JavaScript和Java之间的区别? 介绍 Java和JavaScript是程序员常用的语言,并且是Stack Overflow上最流行的标签。然而,众所周知,除了名字相似外,两者几乎没有共同之处。 为了纪念编程界最臭名昭著的辩论之一,并受到我最近对标记搜索的不满启发,我提出以下建议: 挑战 编写一个将字符串作为输入的程序。返回car如果字符串开头的“Java”和不包括“的JavaScript”。否则,返回carpet。 输入和输出示例 汽车: java javafx javabeans java-stream java-script java-8 java.util.scanner java-avascript JAVA-SCRIPTING javacarpet 地毯: javascript javascript-events facebook-javascript-sdk javajavascript jquery python rx-java java-api-for-javascript not-java JAVASCRIPTING 笔记 输入匹配不区分大小写 输出的唯一可能性应该是car或carpet 如果您的答案使用Java,JavaScript或Regex,则可获得虚构的奖励积分 备用标题:Java是JavaScript,就像火腿是仓鼠

5
字母,数字,符号,空格,重复
人们经常会遇到97个ASCII字符。它们分为四类: 字母(共52个) ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 数字或数字(共10个) 0123456789 符号和标点符号(共32个) !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 空格(共3个) 空格 ,制表符\t和换行符\n。(我们会将换行符\r\n视为一个字符。) 为简洁起见,我们将这些类别分别称为L,N,S和W。 选择LNSW您想要的字母的24个排列中的任意一个,然后无限重复,以形成自己的编程模板。 例如,您可以选择permutation NLWS,因此您的编程模板为: NLWSNLWSNLWSNLWSNLWS... 您需要基于此模板编写程序或函数,其中: 每个L字母都替换为任何字母(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz)。 每个数字N都替换为任何数字(0123456789)。 每个S符号均替换为任何符号(!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~)。 每个W都将替换为任何空格字符( \t\n)。 基本上,您的代码必须遵循以下模式 <letter><number><symbol><whitespace><letter><number><symbol><whitespace>... 如问题标题所建议的那样,除非您可以根据需要选择四个字符类别的不同顺序。 注意: 类别的替换可以是不同的字符。例如,9a ^8B\t~7c\n]有效地符合模板NLWSNLWSNLWS(\t和\n将它们的字面字符)。 没有代码长度限制。例如1A +2B -and 1A +2B和1A and 1都符合模板NLWSNLWSNLWS...。 符合模板的代码必须执行的操作是接受一个未扩展的ASCII字符,并根据其在上述分类中所属于的类别,输出一个介于0到4之间的数字。也就是说,1如果输入是字母,2数字,3符号和4空格,则输出。输出0如果输入是没有这些(一个控制字符)。 对于输入,您可以选择输入0到127之间的一个数字(包括0和127),代表输入ASCII字符的代码。 您的代码必须具有的输入(作为char代码)和输出对如下所示: in out 0 0 1 0 2 0 3 0 4 0 5 …

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.