编程拼图和代码高尔夫

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

7
三角计数的二进制图像
我的挑战往往有点艰巨和缺乏吸引力。所以这里有些简单而有趣的事情。 阿尔金序列 Alcuin的序列 A(n)是通过计算三角形来定义的。A(n)是具有整数边和周长的三角形的数量n。这个顺序被称为约克·阿尔库恩。 此序列的前几个元素从以下开始n = 0: 0, 0, 0, 1, 0, 1, 1, 2, 1, 3, 2, 4, 3, 5, 4, 7, 5, 8, 7, 10, 8, ... 举例来说A(9) = 3,因为整边和周边唯一的三角形9是1 - 4 - 4,3 - 3 - 3和2 - 3 - 4。您可以在下面看到3个有效三角形。 此序列中有一些非常有趣的模式。例如A(2*k) = A(2*k - 3)。 有关更多信息,请参阅OEIS上的A005044。 …

3
系一条珍珠项链
总览 Pearls(或Masyu)是在网格上玩的逻辑游戏。网格上放置了黑白珍珠。目的是形成单个闭合回路,该回路仅使用直线段和直角穿过每个珍珠。 有一些规则可以控制环与珍珠的相互作用: 白色珍珠必须直行,但环必须在其路径中的上一个和/或下一个单元格中转动。 必须打开黑色珍珠,但是回路必须直接穿过路径中的下一个和上一个单元。 回路不得交叉或以其他方式相交。所有单元格都具有完全零个或两个循环入口/出口。 维基百科的一个示例难题(及其解决方案): 您的目标是解决给定的难题。如果有多种可能的解决方案,那么给出哪种解决方案都没有关系。 输入值 输入将是一个未解决的正方形网格。上面显示的示例如下所示: ..w.w..... ....w...b. ..b.b.w... ...w..w... b....w...w ..w....w.. ..b...w... w...b....w ......ww.. ..b......b w是白色珍珠,b是黑色珍珠,并且.是一个空单元。 假设输入有效。这意味着其结构良好,并且至少有一种解决方案是可能的。所有有效的拼图至少为3x3,并且至少包含一颗珍珠。 输出量 输出是代表路径的坐标字符串。网格的左上角是0 0,右上角是n-1 0,其中n是网格的宽度。 路径只是一系列有序坐标: x1 y1 x2 y2 x3 y3 ... 假定路径是封闭的,所以您无需在末尾重复第一个坐标,但是这样做不会有任何损失。 输出应至少包含路径中的所有角。如果没有转弯,则不必输出路径上的每个像元。例如,示例的输出可以以以下内容开头: 1 0 5 0 5 1 ... 要么 1 0 2 0 3 0 …

2
字符串到图像
一点背景: 当我第一次了解Brainf * ck时,我做的第一件事就是编写一个Java应用程序,该程序将接收一个字符串并创建一个经过某种程度优化的程序来打印该字符串。 最近,我一直在和Piet玩耍,并且一直在做同样的事情。我已经认识到Piet是一种相当有趣的语言,为这项挑战增添了一些力量。 因此,我想向SE的朋友们挑战。让我们看看您可以用这种语言做什么。 挑战 编写一个程序或函数,该程序或函数需要一些非空的ASCII字符字符串。处理该字符串,以便生成一个Piet程序,该程序将打印该字符串并终止。 输出是最适合您的任何格式的Piet源图像。PNG是首选,但不是强制性的。 Piet功能可以在这里进行测试。 Piet代码必须自己生成输出字符串。不允许用户输入。 只能使用Piet认可的颜色,如下所示: 由于这是一次人气竞赛,因此优胜者将通过投票选出。领带将被源代码的大小打破。 我将根据输出图像的创造力酌情授予奖励积分。这些毕竟是图片。

8
经典证明谬误[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 3年前关闭。 的背景 因此,我们都知道像这样的经典证明: A = B A²= AB A² -称b²= AB -称b² (AB)(A + B)= B(AB) (A + B)= B B + B = 2B = B 2 = 1(呵呵!) 中当然,错误是您不能被0除。由于a = b,a-b = 0,所以存在被0除的隐藏除法。 挑战 您必须复制此证明。首先,声明两个相等的整数a和b(不管它们叫什么)。然后将aMod和bMod声明为a和b的可修改版本,并分别最初等于a和b。您必须将它们都乘以a,然后从两者中减去b * b。然后必须除以a-b,然后除以b(或a)才能得到。然后,打印出aMod和bMod之间带有等号。 人手不足 当然,由于您声明a和b相等,所以a-b = 0,然后除以0会导致错误。因此,您必须创造性地伪造它。另外,由于您要复制证明,因此打印时aMod和bMod上所有操作的结果均不得相等。他们不必精确地等于2和1,只要两个数字不相等即可。 …

3
寻找唯一的一场比赛
挑战在于编写代码以解决以下问题。 给定两个字符串A和B,您的代码应输出具有以下属性的A子字符串的开始和结束索引。 A的子字符串还应该与B的某些子字符串匹配,最多可以替换字符串中的单个字符。 不再有满足第一个属性的A子字符串。 例如: A = xxxappleyyyyyyy B = zapllezzz apple带有索引4 8(索引从1开始)的子字符串将是有效的输出。 得分了 答案的分数将是代码长度(以字节为单位)加上在长度分别为一百万的字符串A和B上运行时在我的计算机上花费的时间(秒)之和。 测试与输入 我将在从http://hgdownload.cse.ucsc.edu/goldenPath/hg38/chromosomes/中的字符串中提取的长度为100万的两个字符串上运行您的代码 输入将是标准输入,将只是两个字符串,并用新行分隔。 语言和图书馆 您可以使用具有免费编译器/解释器/等的任何语言。适用于Linux以及任何开源的且可免费用于Linux的库。 我的机器 计时将在我的机器上运行。这是在AMD FX-8350八核处理器上的标准ubuntu安装。这也意味着我需要能够运行您的代码。因此,请仅使用易于使用的免费软件,并请提供有关如何编译和运行代码的完整说明。

15
从0到2 ^ n-1(按POPCORN顺序)
...抱歉,这里没有爆米花,只有POPCNT。 编写最短的程序或函数,该程序或函数接受一个数字,n并以数字的二进制表示形式(popcount)以1位数字的升序输出从0到2 n -1的所有整数。不允许重复。 具有相同popcount的数字的顺序是实现定义的。 例如,对于n = 3,所有这些输出均有效: 0, 1, 2, 4, 3, 5, 6, 7 [0, 4, 1, 2, 5, 3, 6, 7] 0 4 2 1 6 5 3 7 输入和输出格式是实现定义的,以允许使用语言功能进一步修改代码。对输出有一些限制: 数字必须以十进制格式输出。 输出必须在数字之间包含合理的分隔符(允许使用尾随分隔符,但不能使用前导符)。 换行(\n),标签(\t),空间,,.,;,|,-,_,/是相当合理的分隔符。我不介意额外的空格来进行漂亮的打印,但不要使用字母或数字作为分隔符。 中的数字和隔板可以通过包围[ ],{ }或任何数组或列表符号。 不要打印上面没有提到的其他内容。 奖金 如果您的解决方案可以即时生成数字,则将您的分数乘以0.5。这种好处的实质是,如果您要将打印解决方案直接转换为生成器,则生成器最多仅使用O(n)内存,其中n是如上定义的位数。(您不必实际将解决方案转换为生成器)。请注意,尽管我施加n <= 28,但存储所有数字所需的内存仍呈指数增长,并且一个幼稚的排序解决方案将在n = 28时占用至少4 GB的内存。 在申请此奖金之前,请添加一些关于您的解决方案工作原理的简单说明。
18 code-golf 

4
画雪花
乔住在巴哈马。现在是冬天。他的孩子对没有雪感到失望。乔需要为他的孩子们造雪。幸运的是,他有一台3D打印机。他计划用它制作雪花。不幸的是,他不知道雪花会是什么样。实际上,他从未见过雪花!让我们通过创建一个为他自动生成雪花的2d图像的程序来帮助他。 输入值 图片的直径(以像素为单位),实际上是雪花的图片的百分比。 输出量 雪花的图像具有所需的直径。它可以保存到文件或显示给用户。 技术指标 创建一个具有30度角的楔形。用楔形点的初始种子创建布朗树。将楔形围绕图像中心反射12次,以生成其余图像。雪花的颜色为白色。背景颜色为黑色。 计分 由于存在生成布朗树的方法不同,因此得分为10 *投票数-高尔夫得分。 高尔夫球成绩定义为程序中具有以下奖励的字节数: -20%可以任意指定雪花的对称性。 -50%可以指定雪花的形状。(通过能够指定楔形边的长度之比。) 最高分获胜。 这是一张图片,楔形的比例约为2: 计分板: 马丁·巴特纳:10 * 14-409 = -269 妮米(Nimi):10 * 1-733 * .5 = -356.5 优化器:10 * 5-648 = -598 获胜者是得分为-269的马丁!

6
预测落石
在此挑战中,您将获得从侧面看的二维地形图。不幸的是,地形的某些部分漂浮在空中,这意味着它们会坠落。您的工作是预测它们的降落位置。 输入 您的输入是一个或多个等长的换行符分隔的字符串,仅包含以下字符#(数字符号,表示一块岩石)或.(一个句点,表示空白)。 输出 您的输出具有与输入相同的格式,但具有以下修改。让我们将输入字符串视为岩石的二维网格。输入中通过相邻岩石的路径连接到网格底部的每个岩石都是牢固的 ; 其他岩石松动。对角相邻的岩石不视为相邻。所有松散的岩石都将直线下落,最后以一堆堆叠的形式固定在坚硬的岩石或底行上。松散的岩石彼此不相连,因此它们是单独坠落的,而不是大地层。输出是结果网格。 例子 输入 ..###. .##.#. .#.... .##.#. 不含松散的岩石,因此输出与此相同。 输入 ...#.. .#..#. .#..## .#...# .##### .#...# 顶部包含一块松散的岩石,然后掉落在其下方的坚硬岩石上。输出是 ...... .#..#. .#..## .#.#.# .##### .#...# 输入 .#####.... .#....#### ###.###..# #.#...##.. .####..#.# ......###. ..#...#..# ..#...#..# 左侧有一大堆松动的岩石。该组随着岩石的下落而分解,因此输出为 .......... ....###### ..#.###..# . #...##.. .##....#.. .##...#### ####..#..# #####.#..# 澄清说明 您可以从STDIN接收输入并输出到STDOUT,也可以编写函数。 这是代码高尔夫球,因此最短的程序(以字节为单位)是赢家。 …
18 code-golf  grid 

9
求和持续时间
挑战 编写最短的代码,可以对标准输入中出现的所有持续时间求和。程序必须仅考虑与以下模式之一匹配的字符串,而忽略其余模式。 HH:MM:SS (it will be interpreted as HH hours, MM minutes and SS seconds) H:MM:SS (it will be interpreted as H hours, MM minutes and SS seconds) MM:SS (it will be interpreted as MM minutes, SS seconds) M:SS (it will be interpreted as M minutes, SS seconds) 与枚举模式匹配的字符串示例: 12:00:01 …

1
给我理发!
这是我的头: \ /-- -| / -\ | | | \ \ \ \ | --\ | \ | | / |--| / / | /|- //--| / | | | || //\ | | \ /| // \ | 它正好由八根头发组成。我的头发太长了。请把每根绞线切成我指定的长度。 输入值 此部分的主要吸引力是实际的头发。这是懒惰的图形化,彩色编码的表示形式以及动画: 这是一组头发的完整规格: 每根头发,我们称之为股,将被做出来的的/,\,|,和-ASCII字符,从此被称为原子。 整个听音头(所有线段的总和)将是c逐行的r,其中c≥1和r≥2。 每条线将... 从头的最后一行开始(行r-1)。 具有长度l,其中l≥2。 可以使用以下方法解析子线: 从链的底部开始。这将是一个/,|或\原子,其中我们将调用根。(从左到右,按根顺序对链进行解析。) …

1
你能把点连接起来吗?
这项挑战基于Flow Free。可以在这里找到在线版本:http : //www.moh97.us/ 您将得到一个谜题,1如果该谜题可以解决,0则必须返回。 为了解决难题,玩家必须创建一条路径,以使用每个空正方形恰好一次连接每对数字。 传递正方形的尺寸,然后传递每个点的x,y,c(其中c是代表颜色的数字)。例如: 如果5,5 0,0,0 3,0,1 1,1,2 1,2,2 4,2,1 4,4,0传递给您,则表示: 0..1. .2... .2..1 ....0 并应返回1。 这里还有一些测试问题: 5,2 2,0,1 0,1,2 4,1,2 代表: ..1.. 2...2 并且是不可解的,因为只有1 1。 4,2 0,0,0 3,0,0 0,1,0 3,1,0 代表: 0..0 0..0 并且不可解决,因为它包含超过2 0s的时间。 8,6 0,0,1 7,5,1 代表: 1....... ........ ........ ........ ........ .......1 并且无法解决(因为您不能使用每个正方形)。 …

4
三角战舰(计算几何问题)
你是一艘战舰的船长。工程部门今年一直在偷工减料,因此您所乘坐的船采用简单三角形的形状。 您走到甲板上享受海风……虽然时间不长。敌人向您开火!—但是会击中镜头吗? 输入值 您可以为此挑战编写函数或完整程序。 您的程序将使用11个整数,其中十个是成对的: 前三对整数(x 1,y 1),(x 2,y 2),(x 3,y 3)将指定您的飞船的顶点。形成的三角形将具有非零面积。 下一对整数(e x,e y)指定敌人的大炮的位置。敌方加农炮永远不会躺在您的飞船上或飞船的边界内。* 之后的对(a x,a y)指定了敌人的瞄准目标。这将不同于(e x,e y)。 最后的正整数R指定敌人的射程 *如果您甚至没有注意到发生的事情,您将是一个可怕的队长! 输出量 如果将要击中战列舰,则必须打印/返回真实值(例如,true,1),否则必须打印/返回虚假值(例如,false,0)。 什么是热门? 敌人的射击是从(e x,e y)开始沿(a x,a y)的长度为R的直线段。如果此线段与三角形战舰内部的任何部分重叠,则视为命中。否则,它不会受到打击。 沿三角形边界或仅达到三角形边界的镜头不算是命中。 例子 0 0 0 1 1 0 1 1 0 0 2 击中:敌人已从您的船中央射中了! 2 0 0 2 4 4 …

6
电子配置
电子配置 您的任务是接受元素的原子序数作为输入,并输出其电子构型(例如2,8,8,2钙)。 输入值 原子序数从1到118。您可以假设输入有效。原子不带电(它的电子与质子一样多)。您可能不希望输入存储在变量中,因此必须编写完整的程序。 输出量 每个非空电子壳中的电子数。我会对输出格式很宽容;以下所有条件都是可以接受的,即您可以使用任何标点符号或空格来分隔数字,并且可以使用任何类型的方括号。请指定使用哪个。 2,8,8,2 2.8.8.2 2, 8, 8, 2, [2,8,8,2] 2 8 8 2 ([2 [8]] [8] 2) 电子如何工作 在原子中,电子有序进入“壳”,即能级。每个壳都有一定的容量,即它能够容纳的最大电子数。贝壳从内向外填充,但不均匀。根据此消息来源,您的任务是确定给定原子序数,每个壳中有多少个电子。 直至并包括钙(原子序数为20),壳均匀地填充。内壳首先填充至容量2,第二至8,然后第三至8,最后至2。钙的电子构型为2,8,8,2。 补钙后,事情变得复杂了。进一步的电子进入第三个壳,而不是最后一个。更糟的是,钒为(23)2,8,11,2,而铬(24)为2,8,13,1和锰(25)为2,8,13,2。 但是,存在一些一致的模式:稀有气体及其之前的七个元素将始终使外壳中的电子数量从1增加到8。例如: 金(79): 2,8,18,32,18,1 汞(80): 2,8,18,32,18,2 ... (85): 2,8,18,32,18,7 (86): 2,8,18,32,18,8 规则 禁止出现标准漏洞。 允许在此挑战之前存在的图书馆。 禁止任何专门处理原子,分子或化学的内置或库功能。 以字节为单位的最低代码长度为准。 在链接的源中,元素103-118的配置如所预测的那样用(?)标记,并且元素太不稳定而无法检查。对于这个挑战,假设它们是正确的。 您可以对部分或全部数据进行硬编码。 [新规则]如果您在文件中使用控制字符,则请提供文件的base64或xxd转储(许多答案似乎正在这样做) 获胜者:丹尼斯的CJam答案为80字节!

14
检查数字是否为连续整数的乘积
一些数字,例如:6、12、20、30、42、56、60、90、120等,可以表示为连续整数的乘积,如下所示。 6 = 2 * 3 12 = 3 * 4 30 = 5 * 6 60 = 3 * 4 * 5 90 = 9 * 10 120 = 4 * 5 * 6 编写一个程序或函数,输出连续的整数列表,其乘积等于指定的数字。 不适合此逻辑的数字示例为: 99 = 9 * 11 (Product of non-consecutive numbers) 121 = 11 * …
18 code-golf 

6
让我们进行一场坦克大战!
让我们进行一场坦克大战! 部分受到激光摧毁他们的启发 目的 您的任务是控制坦克。四处移动并射击2D战场中的其他坦克和障碍物。最后的坦克站将是赢家! 地图格式 您的战车将位于2D字段,该字段基于单位正方形的nby n网格。我将n根据提交的数量决定什么。每个方块只能包含以下一项: 一辆战车 一颗树 一块石头 一堵墙 没有 所有的障碍物和坦克完全填满了它们的空间,它们阻挡了所有击中它们的镜头,从而不会进一步破坏物体。 这是带有#= tank 的字段的示例;T= tree; R= rock; W= wall; .=没有n= 10 .....#.... ..T....R.. WWW...WWWW W......T.. T...R...Ww W...W..... W....W...T WWWWWW...R W......... WWWWWWRT.. 坐标格式x, y,其中x从左向右增加,并y增加下到上。左下角的坐标为0, 0。每个坦克可以移动到任何空白处并向任何方向射击。 地图动力学 您的战车不仅仅需要射击其他战车!如果它在地图上拍摄了东西,则可能会发生。 如果击中墙壁,则经过几次射击(从1到4不等),它将被摧毁 如果射中一棵树,它将立即被摧毁 如果向岩石开枪,则枪击将越过它并损坏其撞击的下一件事 一旦某物被破坏,它就不再在地图上(它将被替换为空)。如果击球摧毁障碍物,它将被阻挡并且不会进一步破坏其前进路线。 坦克动力学 每个坦克以life= 100 开头。坦克每次射击会life根据距离减少20-30 。可以使用delta_life=-30+(shot_distance*10/diagonal_map_length)(其中diagonal_map_length是(n-1)*sqrt(2))进行计算。此外,每个坦克life每回合可再生1 次。 转弯 将进行一些回合(一旦提交,我将决定)。在每个回合开始时,将随机生成一张地图,并将坦克放置在随机的空白位置。在每一回合中,每个战车都会以任意顺序转过一圈。在将每个战车转过一圈之后,将以相同的顺序再次进行转弯。这一回合一直持续到只剩下一辆坦克为止。该坦克将是赢家,他们将获得1分。然后,游戏将继续进行下一轮比赛。 …

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.