编程拼图和代码高尔夫

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

14
破碎的凯普斯基凯·菲亚斯科
您的一些员工的Capslock键已损坏,而您更换它们太便宜了。通过创建最短的程序来纠正他们的工作来帮助他们!只需将给定字符串中的每个字符从大写字母转换为小写字母,反之亦然...但这是有误的! 您也对圣诞节感到非常兴奋!因此,您将留下一个微小的“错误”,该错误无法纠正Christmas(不区分大小写)序列中的字母。 输入项 对于输入,您将使用一个单个字符串(或字节数组),其中可能包含0x20和0x7e(- ~)之间的换行符和ascii 。您无需担心回车符或字符串中是否包含其他任何字符。 输出量 输出应仅包含提供的字符串,并且将大写和小写字符互换(当然还有圣诞节错误!)。它最多可以包含一个额外的尾随空白。 圣诞虫 让我们用一个例子来解释一下: Input: i CAN HARDLY WORK LIKE THIS please GET ME A NEW KEYBOARD FOR cHRISTMAS Output: I Can HaRdly work lIke thiS PLEASE geT Me A new keyboard for ChriStmas can包含“ c”,这是圣诞节的首个字母,因此不会更改。in中的下一个字母Christmas是“ h”,它在in中hardly(也包含“ r”),因此不会更改,依此类推。Christmas本身只有一个字母不变,因为到代码到达那里时,它实际上正在寻找“ s”,而不是“ c”。 一旦找到序列,它应该从“ c”重新开始,并再次开始迭代Christmas。因此ChristmasChristmas将保持不变。 测试用例 Input: …
25 code-golf  string 

9
HexaGolf:字词
另见:Rotatagons 挑战 给定一个字符串作为输入,输出其字形。 字角 字形是表示六边形字符串的一种方式。现在,让我们从字符串创建一个wordagon hexa: 首先,从字符串中的第一个字符开始,然后将其放置在中心: h 然后,将字符串中的下一个字符添加并添加一个六边形层: e e e h e e e 然后,添加下一层: x x x x e e x x e h e x x e e x x x x 最后,添加最后一层: a a a a a x x x a a x e e …

30
阶乘和
挑战在于计算数字阶乘的数字总和。 例 Input: 10 Output: 27 10!= 10×9×...×3×2×1 = 3628800,数字10的数字总和!是3 + 6 + 2 + 8 + 8 + 0 + 0 = 27 您可以期望输入是大于0的整数。输出可以是任何类型,但是答案应以编码语言的标准为基础。 测试用例: 10 27 19 45 469 4140 985 10053 注意:某些语言不能支持32位以上的整数;对于这些语言,您将不需要计算大量的阶乘。 OEIS链接在此感谢Martin Ender 这是代码高尔夫球,因此字符中最短的代码将获胜!

8
排列鸽洞原理
在数独游戏中,许多玩家喜欢“铅笔”每个方格中可能出现的数字: 上面的行可以表示为数组: [[1,2,9], [6], [5], [7], [1,2,9], [1,2,9], [3], [1,2,4], [8]] 现在,请注意只有一个地方4可以去。这有效地使我们将上面的列表简化为: [[1,2,9], [6], [5], [7], [1,2,9], [1,2,9], [3], [4], [8]] 这项挑战的目的是列出排列中可能的数字,并推断出可以消除的可能性。 再举一个例子,假设您具有以下可能性: [[0,1,3], [0,2,3], [1,2], [1,2]] 最后两个位置必须用1和2填充。因此,我们可以从数组的前两个元素中删除那些可能性: [[0,3], [0,3], [1,2], [1,2]] 再举一个例子: [[0,1,2,3], [0,2], [0,2], [0,2]] 它不可能从上述可能性构造排列,因为只有1两个位置1和3,和你想返回一个空数组。 您需要输入可能性列表,并在消除最大可能性之后输出其余可能性。 如果不可能使用特定的数组,则需要返回一个空数组,或者返回其中一个子数组为空的数组。 您可能会假设数组的格式正确,并且至少包含1个元素。 给定大小数组N,您可以假设子数组中的数字始终在范围内[0:N),并且N <= 10 您可能无法假设从0到的每个数字N-1都会出现 您可以假设单个子数组中的数字是唯一的。 如果子数组仅包含一个可能性,则可以在数组中或单独表示该可能性。 [[1],[2],[0]],[1,2,0],[[1,2],0,[1,2]]都是有效的。 您可以以合理的字符串格式或列表/数组格式接受数组。 子数组可以按任何顺序排列。 …

22
PKCS#7填充验证
在密码术中,PKCS#7填充是一种填充方案,它添加了字节数N≥1,其中每个添加字节的值等于N。 例如,Hello, World!具有13个字节的,以十六进制表示如下: 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 如果我们选择将PKCS#7填充长度为16,则结果为: 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 03 03 03 如果我们选择填充长度为20,则结果为: 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 07 07 07 …

1
域名评估
域名交易是一项大生意。自动评估工具是域名交易中最有用的工具之一,因此您可以轻松估算给定域名的价值。不幸的是,许多自动评估服务要求使用会员资格/订阅。在此挑战中,您将编写一个简单的评估工具,可以大致估算.com域的值。 输入输出 作为输入,您的程序应采用域名列表,每行一个。每个域名都将与正则表达式匹配^[a-z0-9][a-z0-9-]*[a-z0-9]$,这意味着它由小写字母,数字和连字符组成。每个域的长度至少为两个字符,并且都不能以连字符开头或结尾。在.com从每个域被省略,因为它是隐含的。 作为输入的另一种形式,只要指定所需的字符到整数的转换,就可以选择将域名接受为整数数组而不是字符串。 您的程序应输出一个整数列表,每行一个,它给出了相应域的评估价格。 互联网和其他文件 只要您提供这些文件作为答案的一部分,您的程序就可以访问其他文件。您的程序也被允许访问字典文件(无需提供有效单词的列表)。 (编辑)我已决定扩展此挑战,以允许您的程序访问Internet。有两个限制,即您的程序无法查询任何域的价格(或价格历史记录),并且它仅使用预先存在的服务(后者掩盖了某些漏洞)。 总大小的唯一限制是SE施加的答案大小限制。 输入示例 这些是一些最近出售的域。免责声明:尽管这些站点似乎都没有恶意,但我不知道是谁控制了它们,因此建议不要访问它们。 6d3 buyspydrones arcader counselar ubme 7483688 buy-bikes learningmusicproduction 示例输出 这些数字是真实的。 635 31 2000 1 2001 5 160 1 计分 计分将基于“对数差异”。例如,如果某个域名的售价为300美元,而您的程序将其评估为500美元,则该域名的分数为abs(ln(500)-ln(300))= 0.5108。任何域的价格都不会低于1美元。您的总体分数是该组域名的平均分数,分数越低越好。 为了弄清楚您应该得到的分数,只需猜测36以下训练数据的常数即可得出大约的分数1.6883。成功的算法得分低于此分数。 我选择使用对数,因为这些值跨越几个数量级,并且数据将充满异常值。使用绝对差异而不是差异平方将有助于减少评分中异常值的影响。(另外,请注意,我使用的是自然对数,而不是以2为底或以10为底。) 数据源 我已经从域名拍卖网站Flippa上浏览了最近出售的1400多个.com域名列表。该数据将构成训练数据集。提交期结束后,我将等待另外一个月的时间来创建测试数据集,并对提交的数据进行评分。我可能还会选择从其他来源收集数据,以增加训练/测试集的大小。 培训数据可在以下要点获得。(免责声明:尽管我使用了一些简单的过滤方法来删除了一些公然的NSFW域,但该列表中仍可能包含一些域。此外,我建议不要访问您不认识的任何域。)右侧的数字是真实的价格。 https://gist.github.com/PhiNotPi/46ca47247fe85f82767c82c820d730b5 这是训练数据集的价格分布图。x轴是价格的自然对数,y轴是计数。每个条的宽度为0.5。左侧的峰值分别对应$ 1和$ 6,因为来源网站要求出价至少增加$ 5。测试数据的分布可能略有不同。 这是条形图宽度为0.2的同一图形的链接。在该图中,您可以看到峰值分别为11美元和16美元。

18
转换为Bibi-binary
Bibi-binary是由Boby Lapointe发明的一种数字系统,用于以字母表示数字,发音听起来很有趣。 您的任务是将十进制数转换为Bibi-binary! 转换次数 一个数字将转换为基数16(十六进制),并且每个字符都用其Bibi二进制名称代替: 0 = HO 1 = HA 2 = HE 3 = HI 4 = BO 5 = BA 6 = BE 7 = BI 8 = KO 9 = KA A = KE B = KI C = DO D = DA E = DE …

24
计算袋鼠序列
背景故事 免责声明:可能包含有关袋鼠的虚假信息。 袋鼠穿越了几个发展阶段。随着年龄的增长和力量的增强,他们可以跳得更高和更长,并且在饥饿之前可以跳更多次。 在第1阶段,袋鼠很小,根本无法跳跃。尽管如此,还是不​​断需要营养。我们可以这样表示第1阶段袋鼠的活动模式。 o 在阶段2中,袋鼠可以跳一点,但饿之前不能超过2跳。我们可以代表一个阶段2这样袋鼠的活动模式。 o o o o o 在第2阶段之后,袋鼠会迅速改善。在随后的每个阶段,袋鼠都可以跳得更高一点(在图形表示中为1个单位),并且是原来的两倍。例如,第3阶段袋鼠的活动模式如下所示。 o o o o o o o o o o o o o o o o o 所有这些跳跃都需要能量,所以袋鼠在完成每种活动模式后都需要营养。所需的确切数量可以如下计算。 在阶段n袋鼠的活动模式中为每个o分配高度,即从1到n的数字,其中1对应地面,n对应最高位置。 计算活动模式中所有高度的总和。 例如,阶段3袋鼠的活动模式包括以下高度。 3 3 3 3 2 2 2 2 2 2 2 2 1 1 1 1 1 …

15
拼写单词算术
我们都已经看到过这些在线“算术”,如下所示: Think of a number, divide by 2, multiply by 0, add 8. 而且,通过魔术,每个人最终都得到8! 语言 让我们定义一种使用上面文本的语法的编程语言,称为“ WordMath”。WordMath脚本遵循以下模板: Think of a number, <commandlist>. 这基本上意味着:将一个数字(作为来自STDIN的输入)作为初始累加器,对其执行所有命令,然后输出结果。 这些命令由定界符,(逗号+空格)分隔。有效的命令是(注意,它#代表一个非负整数:): add #/ subtract #-添加/减去累加器的值。 divide by #/ multiply by #- floordiv /乘累加器由给定的值。 subtract from #-与相似subtract,但acc = # - acc代替acc = acc - # repeat-再次执行最后一个命令。这不能是第一个命令,但是您必须支持多个连续的重复。 挑战 你的任务是创建一个程序或功能,这需要一个有效WordMath脚本作为输入和 …

17
ASCII大金字塔
介绍 公元前2600年,人们正在建造金字塔。他们已经成为金字塔的基础,但不知道如何继续。因此,他们打电话给您寻求帮助。 建造金字塔的规则非常简单。对于上一层以上的层,您需要做的就是遵循此分步指南: 切掉上一层的边缘。 在/角色上方,必须有一个\角色,反之亦然。这适用于除边缘以外的每个字符。 最左边的字符始终是a /,最右边的字符始终是\。 让我们以金字塔的基础为例: //\/\/\\ 我们切掉边缘,留下: /\/\/\ 我们将正斜杠更改为反斜杠,反之亦然: \/\/\/ 最左边的字符始终是a /,最右边的字符始终是a \,因此我们将其更改为: //\/\\ 我们将此层放在上一层: //\/\\ //\/\/\\ 我们继续进行操作,直到到达顶部(看起来像/\)。因此,最终我们得到: /\ //\\ //\/\\ //\/\/\\ 这是您需要输出的。 任务 给定金字塔的基础(长度大于3),输出整个金字塔。您可以放心地假设最左边的字符是/,最右边的字符是\。您还可以假设基础的长度始终是偶数。允许使用尾随空格。只要金字塔保持原位,也可以使用前导空间。允许使用1个尾随和1个前导换行符。 测试用例 Input: /\\\ Output: /\ /\\\ Input: //\\///\/\ Output: /\ /\\\ /\///\ ///\\\/\ //\\///\/\ Input: /////////////\ Output: /\ /\\\ /////\ /\\\\\\\ /////////\ …

8
打高尔夫球
小时候,我经常玩纸牌游戏“ 高尔夫 ”。您应该选择接受的挑战是计算高尔夫球手的得分。由于此纸牌游戏1有9000多种版本,我们将遵循我记得玩的规则。 游戏规则) 您以6张牌结束一轮比赛,并且希望获得尽可能少的积分。 不使用小丑。 A和2分别得-1和-2分。 杰克和国王都得0分。 3到10张卡片的面值是值得的。但是,当您将它们配对时,它们将被取消。例如,一个5代表5分,但是两个5代表零。三个5代表5分(因为前2个配对,但第3个不是。),四个5代表0(因为共2个配对)。 皇后区值15分。皇后不能取消,例如2个皇后价值30分。 规则(挑战) 输入将是一个整数数组,或6个单独的整数。您更喜欢哪一个。1代表一张ace,2-10代表2-10,Jack,Queen和King代表11、12和13。输出是根据上述规则的一手牌得分。您可以放心地假设所有输入均有效,例如,没有数字出现超过4次,并且所有数字都在范围内[1, 13]。输入和输出可以采用任何合理的格式。 测试IO: [11, 10, 3, 1, 2, 2] --> 8 [4, 5, 5, 3, 8, 7] --> 22 [2, 2, 2, 2, 1, 1] --> -10 (The lowest score possible) [12, 12, 12, 12, 10, 9] --> 79 …

28
#Hashtag_or_not
在此代码高尔夫挑战赛中,您将验证标签! #What_your_code_should_do 输入是一个字符串。如果它是有效的标签,则输出一个真实值,否则输出一个虚假值。 如果...,我们将字符串定义为有效的标签。 它以井号(#)开头。 井号后面没有数字(例如#2016USElection,不是有效的井号)。 它没有任何“特殊字符”(即,不是字母,下划线(_)或数字的任何字符)。 您可以假定输入仅包含ASCII字符。(如果我们也执行Unicode,那将是不公平的。) #规则 基本的代码高尔夫球规则适用。 #例子 真相: # #e #_ABC #thisisanunexpectedlylongstringxoxoxoxo #USElection2016 虚假: Hello, World! #12thBday #not-valid #alsoNotValid! #!not_a_hash

30
霍夫施塔特Q序列
定义 a(1)= 1 a(2)= 1 对于n> 2的a(n)= a(na(n-1))+ a(na(n-2))其中n是整数 任务 给定正整数n,生成a(n)。 测试用例 n a(n) 1 1 2 1 3 2 4 3 5 3 6 4 7 5 8 5 9 6 10 6 11 6 12 8 13 8 14 8 15 10 16 9 17 10 18 11 …

23
哪些鬼不见了?
在此挑战中,给定吃豆人的鬼魂列表,您必须输出缺少的鬼魂。您必须尽可能地减少字节数 输入项 输入将由字符串或列表组成,其中将包含数字重影,可能包括; 眨眼 墨黑 小指 克莱德 但是,输入也可能包括吃豆人(带有标点符号)。因此,列表中的最大项目数将为五个,以任何顺序排列。可以假设列表中没有无效项 输出量 输出将包含一个字符串或列表。这将以任何顺序包括所有不在输入中的幻影。但是,如果输入中包含吃豆人,则所有鬼影都将被视为丢失(因为他吃掉了它们)。 测试用例 input: Clyde output: Blinky, Inky, Pinky alternate output: Inky, Pinky, Blinky or one of the other 4 permutations input: Clyde, Blinky # or however you delimit it output: Inky, Pinky alt: Pinky, Inky input: Pac-Man, Clyde Output: Blinky, Inky, …
25 code-golf  string 

7
找到奶酪
更新:有6个迷宫。它们包含在控制器中。还有就是迷宫的一个tar.gz和他们的.bmp文件在这里(Dropbox的)。还有一个实用程序,可在该链接上产生更多的迷宫(maze_4.txt文件在存档中不正确)。此时,请随时运行您自己的条目并更新您的分数。底部包含有关操作方法的详细信息。如果您有任何疑问或麻烦,请在聊天中ping我。 你是老鼠 你在迷宫中。找到奶酪。 概念 您处于矩形网格上存在的迷宫中。网格的每个空间都包含以下几项之一: ! -不可逾越的墙 -一个可遍历的空白空间 O -你,老鼠 + -奶酪,您的目标 请使用相同的字符,这样我就不必修改控制器。 在每个回合中,您将获得当前位置的北,南,东和西瓷砖。然后,您必须输出想要行驶的方向。拿到奶酪,您就赢了。步骤越少越好。 输入项 您将通过stdin通过以下方式获得输入:nesw,其中每个字母代表该罗盘点处的图块。例如,如果当前状态看起来像 ! <--- Wall !O <--- You + <--- Cheese 然后您将得到字符串! +!。 在游戏结束时,控制器将向您发送四个零的字符串:0000。收到此字符串后,您的程序应终止。给定的其他任何输入都不会包含该0字符。 请忽略所有其他输入。 输出量 你要输出一个字母n,s,e,或w,以表明你想往哪个方向行驶,接着换行字符。 计分 您在每次测试中得到的分数是找到奶酪所需的步骤数。 您的总体得分将是一系列大小可变的迷宫中每个迷宫的平均得分的总和,所有这些迷宫都可以放入长度为50的正方形内。 例如,如果您的漫游器需要100次移动才能完成6个迷宫中的每一个,那么您的得分就是600。 如果您的漫游器不确定,请尝试每个迷宫10次,并使用平均值作为该迷宫的分数。您的最终分数将是所有平均值的总和。 规则 每个迷宫都可以容纳50x50的正方形。 从迷宫到奶酪,每个迷宫都有至少一条有效路径。 每个迷宫都将完全围起来,但奶酪将始终位于外壁上,因此它实际上是迷宫的出口。 如果碰壁,您的提交将被取消参赛资格。 如果您提交的时间过长(由我确定,我开始测试的时间),则会被取消参赛资格。这在很大程度上是为了防止无限循环。尽管我保留随时在任一方向上更改此设置的权利,但每个迷宫的软限制为一分钟。 参赛作品不一定是确定性的,但是如果您太随意,则以上几点可能会取消参赛资格。 在某些时候,迷宫将被释放,未来的答案可能无法针对它们进行优化,并且它们可能会发生变化。 提交内容: 您的提交是一个完整的程序,它通过stdin输入,通过stdout输出。这很重要,因为提交将与迷宫控制器进行交互。我不会禁止不免费提供的语言,但是我知道如果我无法使用该语言,则其他人将不得不花时间来运行测试。 请附上有关如何运行提交的说明。 请说明您的提交是否具有确定性,以便我知道是否需要多次运行。 测试迷宫 在测试迷宫中,.角色概述了到达奶酪的最短路径。它们与(空格)字符相同。它们对您的提交不可见。控制器将它们替换为空格。 …

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.