编程拼图和代码高尔夫

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

16
减少科拉科斯基
总览 你们中有些人可能知道Kolakoski序列(A000002),这是一个众所周知的具有以下属性的自指代序列: 它是一个仅包含1和2的序列,对于每组1和2,如果将游程的长度相加,则它等于自身,仅为长度的一半。换句话说,Kolakoski序列描述了序列本身的游程长度。这是唯一执行此操作的序列,只是删除了开头的1的序列相同。(仅当您将自己限制为由1和2组成的序列时才如此-Martin Ender) 挑战 面临的挑战是,给定一个整数列表: 输出-1如果列表不是Kolakoski序列的工作前缀。 在序列变为之前输出迭代次数[2]。 解决的例子 以提供的图像为例: [1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1] # Iteration 0 (the input). [1,2,2,1,1,2,1,2,2,1,2] # Iteration 1. [1,2,2,1,1,2,1,1] # Iteration 2. [1,2,2,1,2] # Iteration 3. [1,2,1,1] # Iteration 4. [1,1,2] # Iteration 5. [2,1] # Iteration 6. [1,1] # Iteration 7. [2] # Iteration 8. 因此,所得数字8用于的输入[1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1]。 9 …

30
画一个S链
背景 小时候,我被教导一种绘制奇怪的“ S”形的方法,使我(和同学们)着迷。今天,我重新发现了它,并且由于它采用公式化的方式绘制它,因此认为它可能会引发一个有趣的挑战:P 画“ S” 可以通过以下简单步骤绘制S: 首先,像这样绘制2行,每条垂直的三个直线 | | | | | | 接下来,将左上方的线与底部的中线连接,并将上方的中线与右下方的线连接以产生 | | | \ \ | | | 最后,在当前绘制的图像上绘制顶部和底部,使其最终看起来像 ^ / \ | | | \ \ | | | \ / v 如您所见,这将导致“ S”形。但是,当扩展时(绘制超过2行),它会产生一个非常有趣的图案。您的任务是重现此有趣的模式。 任务 给定一个整数where n >= 2,输出S及其n要制成的行。输出可以从函数返回,输入可以采用标准方法。整个图像以及每行的尾随/前导空格都很好。但是,前导空格必须保持一致,以免破折号。您可以输出为行列表。 测试用例 input output --- 2 ^ …

1
查找困难游戏
如果您感到无聊,可以玩的有趣游戏是Diffy Game。这是一款非常简单的单人游戏,可能会消耗大量时间。 Diffy游戏的工作方式如下:从一个非负整数列表开始,在本示例中,我们将使用 3 4 5 8 然后取相邻数字之间的绝对差 (8) 3 4 5 8 5 1 1 3 然后重复。重复直到您意识到自己已经进入循环。通常,游戏会从头开始。 3 4 5 8 5 1 1 3 2 4 0 2 0 2 4 2 2 2 2 2 0 0 0 0 0 0 0 0 游戏通常没有目标,您只是在脑海中进行算术而浪费时间。但是,当我乐于玩这款游戏时,我的目标始终是尝试选择一个时间段,并尝试构建一个在该特定时间段内循环的游戏。 并非所有游戏都是周期性的,例如,上面的示例不是周期性的,因为它最终会到达一个全零的游戏,因此永远无法使其回到初始位置。实际上,似乎绝大多数游戏都不是周期性的,因此很少有游戏是稀有的宝石。 给定一个具有特定周期循环的游戏,只需将序列加倍即可制作另一个具有相同周期循环的游戏。例如游戏: 1 …

30
删除空间,保持大写
您输入的内容将为英语句子,短语或单词。它只会包含a-zA-Z' -,.!?。您的任务是获取输入,删除空格,然后重新分配大写字母,以使之前被大写的索引中的字母(并且只有之前被大写的索引中的字母)被大写。 例如,如果输入为A Quick Brown Fox Jumped Over The Lazy Dog,则大写字母的(从0开始)索引为0, 2, 8, 14, 18, 25, 30, 34, 39。接下来,从输入中删除空格:AQuickBrownFoxJumpedOverTheLazyDog。接下来,将所有字母都小写,但在0, 2, 8, 14, 18, 25, 30, 34, 39:处将AqUickbrOwnfoxJumpEdovertHelazYdog其大写。 输入项 您输入的内容将为英语句子,短语或单词。它只能包含小写字母,大写字母,连字符,撇号,逗号,句点,问号,感叹号和空格。 输出量 输入的空格已删除,小写字母d,大写字母d中的字母位于大写字母的索引处。 注意:您的程序不会因IndexOutOfRange或类似错误而崩溃(此类执行终止错误)。 测试用例 Hi! Test! Hi!tEst! A Quick Brown Fox Jumped Over The Lazy Dog AqUickbrOwnfoxJumpEdovertHelazYdog testing TESTing TeStING testing …
27 code-golf  string 

19
画一个Reuleaux三角形!
该鲁洛三角形是由三个圆的交点所形成的形状,其中每个圈通过别人的中心。无论旋转,Reuleaux三角形的宽度始终等于圆的半径: 图片:Wolfram MathWorld 编写一个程序,将宽度r作为输入并显示该宽度的Reuleaux三角形(以像素为单位)。 您必须单独显示形状,即实心填充,未描边并在实心填充背景上显示。 code- golf-以字节为单位的最短程序获胜。

30
她w口渴了!
给定一个列表或定界字符串,输出一个列表或定界字符串,其中每个单词的第一个字符一个单词。 对于此挑战,“单词”仅包含所有可打印的ASCII字符,空格,换行符和制表符除外。 例如,使用字符串“世界下午好!”。(以空格分隔): 1. String "Good afternoon, World!" 2. Get the first characters: "[G]ood [a]fternoon, [W]orld!" 3. Move the characters over. The character at the end gets moved to the beginning. "[W]ood [G]fternoon, [a]orld!" 4. Final string "Wood Gfternoon, aorld!" 这是代码高尔夫球,所以最短的代码获胜! 测试用例: Input -> output (space-delimited) "Good afternoon, World!" -> …
27 code-golf  string 

6
希尔团队!
这项挑战的灵感来自@HelkaHomba出色的挑战,即Red vs. Blue-Pixel Team Battlebots。这一挑战可能是我在本网站上看到的最好的挑战。曾经 我的挑战仍然很大,但是@HelkaHomba的灵感值得称赞。 总览 这是一个团队之王,您的团队通过让所有玩家都存活在团队中而获胜。换句话说,最后一支球队获胜。抽奖将被重做。 您在董事会上。您知道自己在第一轮的位置(打勾0)。您还知道周围的人是谁: 在这种情况下,您一个人(或者您认为)独自一人,周围没有人。您可以在ontick处理程序的第一个参数中看到周围的项目。稍后会更多有关API的信息。 你的团队 您的团队由您的用户ID决定。要找出答案,请单击您的个人资料图片: 然后在地址栏中找到您的用户ID: 如果很奇怪,那么您就是蓝队。 如果是偶数,则说明您是红色团队。 手绘圈欢迎您。 您(机器人的)名字 您的漫游器名称以团队的第一个字母(“ r”或“ b”)开头。它必须匹配正则表达式/^(r|b)[A-Za-z_-]$/。除此之外,您还可以选择机器人的名称。请不要使用已经存在的一个。 开始 红色玩家将从地图顶部附近开始,蓝色玩家将从底部附近开始。environment在ontick函数的参数的第一个刻度(转弯)上会给您特殊信息。我建议将其存储。有关详细信息,请参见API。 轮到你了 回合顺序最初是随机的,但随后保持不变。 转身动作 您每回合只能做一个动作。 移动 当您想移动时,可以调用this.move(num)API。num您想移至的单元格: 可以移动到的数字的相对位置存储在全局常量中threeByThree: [ [0, 1, 2], [3, undefined, 4], [5, 6, 7] ] 如果您进入墙壁或其他播放器,则什么也不会发生。 旋转 要旋转,请致电this.rotate(num)。Num是您要旋转的方向: 旋转是绝对的。 杀 如果您所面对的牢房中有另一个玩家(来自另一个团队),则可以呼叫this.kill()并杀死他们。如果那里没有人,或者他们在您的团队中,则无济于事。例: 如果转到0,您可以杀死绿色。如果将其设置为1,则可以杀死蓝色。如果转到2,则可以杀死橙色。如果转到3,则可以杀死黄色。 炸弹 爆炸会杀死您周围9个方格中的所有玩家,包括您和队友。例: 您为什么要这样做? …

30
寻找遗失的信件
指导方针 任务 编写一个方法,该方法将一个连续(递增)的字母数组作为输入,并返回该数组(某些语言的列表)中缺少的字母。 规则 这是代码高尔夫球,所以最短答案以字节为单位! 您将始终获得有效的数组 总是会丢失一个字母 数组的长度将始终至少为2。 数组将始终仅在一种情况下(大写或小写)包含字母 您必须输出与输入相同的大小写(大写或小写) 该数组一次总是只发送一个字母(跳过丢失的字母) 数组长度在2到25之间 数组的第一个或最后一个元素将永远不会丢失 例子 ['a','b','c','d','f'] -> 'e' ['O','Q','R','S'] -> 'P' ['x','z'] -> 'y' ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','w','x','y','z'] -> 'v'

10
用(几乎)任何您喜欢的数字解方程
给定一串+=-至少包含一个字符的字符串,请=在所有符号之间以及在开头和结尾处插入正整数,以便满足数学方程式。 例如,给定输入 +-=-= 您需要像这样插入正整数A到F A+B-C=D-E=F 这样等式都满足,即A + B - C和D - E和F都是相同的数字。 有许多可能的方法可以执行此操作,因为只要等式成立,就可以使用任何正整数集。这里的每一行都是可能输入的有效输出+-=-=: 2+3-4=6-5=1 1+1-1=2-1=1 4+2-4=4-2=2 100+1-10=182-91=91 89+231-77=1024-781=243 请注意,表达式的值不需要像插入的数字一样为正整数。例如,给定输入-=-的输出1-10=8-17(从eval到-9)和10-1=17-8(从eval到9)都同样有效。当然,对于某些输入(例如,=不可能有负数的表达式),因为只能5=5插入正数之类的。 还要注意,零不是正整数。 以字节为单位的最短代码获胜。 您可以将数字输出为列表,而不是将其直接插入字符串中。如果确实输出字符串,则可能会有空格分隔符号和数字。因此,对于输入+-=-=,输出 2, 3, 4, 6, 5, 1 要么 2 + 3 - 4 = 6 - 5 = 1 相当于输出 2+3-4=6-5=1 测试用例 Input | One Possible Output = | …

2
2D迷宫减1D
这个挑战是关于将2D迷宫转换为1D迷宫。 总览 +-+-+-+-+-+-+ +-+-+-+-+-+-+ graph { | | | | |A| | B| A B A -- D + + + + +-+-+ + + + + +-+-+ \ | C -- D | | | | | | | | \ | D -- E +-+-+ +-+-+ + +-+-+ …

30
修剪数组!
给定一个整数数组和两个数字作为输入,请删除由数字指定的一定数量的第一个和最后一个元素。输入可以按照您想要的任何顺序。 您应该删除前x个元素,其中x是第一个数字输入,还应该删除最后y个元素,其中y是第二个数字输入。 保证结果数组的长度至少为2。 例子: [1 2 3 4 5 6] 2 1 -> [3 4 5] [6 2 4 3 5 1 3] 5 0 -> [1 3] [1 2] 0 0 -> [1 2]

16
更改代码,更改顺序:警察
这是警察和强盗的挑战。有关强盗线索,请转到此处。 这项挑战涉及警察选择的两个OEIS序列-S 1,S 2-以及对这些序列进行打高尔夫球和模糊处理的程度。 警察的挑战 作为警察,您面临的挑战是选择一种免费的语言和两个OEIS序列。然后,用输入n并产生S 1(n)的语言编写代码A。当该码是由经修饰的Levenshtein距离的X字符(其中X不超过),并变成代码乙以相同的语言,它必须继而产生小号2(n)的。您实际上必须编写此代码B,但是直到您的挑战安全后再将其透露(请参阅下文)。0.5 * (length A) 警察提交的材料必须包括语言名称,完整的代码一,的字节数一,在X的多少变化来得到他们的秘密值乙码,和所选择的小号1和小号2的序列号。您可以选择每个序列是0索引还是1索引,但是请在提交时指定。 要破解特定的提交内容,强盗必须提供使用相同语言(和版本)的程序C,该程序产生S 2(n),并且Y字符与A分开(带有Y <= X)。强盗不一定需要找到警察(秘密地)产生的完全相同的B代码。 获胜和得分 如果您的警察答案在7天内(168小时)没有被破解,则可以显示自己的B解决方案,这时您的答案被认为是安全的。只要您不公开解决方案,即使7天已经过去,它也可能会遭到强盗的破解。如果您的答案确实被破解,请在答案的标题中指出,并提供指向相应强盗答案的链接。 警察会以最短的A值提交完整的陈述来获胜。如果并列,则最小的X将用作决胜局。如果仍然并列,则较早的提交将获胜。 进一步规则 您不得使用任何内置函数进行散列,加密或随机数生成(即使您将随机数生成器植入固定值)。 允许使用程序或函数,但代码不得为摘录,并且不得假定为REPL环境。 您可以采用任何方便的格式输入并提供输出。两个序列的输入/输出方法必须相同。 Levenshtein距离这一挑战的权威计算器是Planet Calc上的该计算器。 除了作为一个CNR的挑战,这是代码高尔夫球因此所有往常一样打高尔夫球规则。

6
ASCII拼图
这是一个3x3ASCII拼图游戏: _____ _____ _____ | _| |_ | | (_ _ _) | |_ _|_( )_|_ _| | (_) |_ _| (_) | | _ _) (_ _ | |_( )_|_ _|_( )_| | _| (_) |_ | | (_ _) | |_____|_____|_____| 这也是一个3x3ASCII拼图游戏: _____ _____ _____ | |_ _| …

15
它是OVSF代码吗?
给定1s和-1s 的列表,请确定它是否是有效的OVSF代码(通过输出真值或假值)。 OVSF代码定义如下: [1] 是OVSF代码。 如果X是OVSF代码,则X ++ X和X ++ -X均为OVSF代码。 这++是列表串联,并-取反列表中的每个元素。 没有其他列表是有效的OVSF代码。 您可以假设输入列表仅包含-1和1,但是您必须正确处理空列表以及长度不是2的幂的列表。 最短的代码(以字节为单位)获胜。 测试用例 [] -> False [1] -> True [-1] -> False [1, 1] -> True [1, -1] -> True [1, 1, 1, 1] -> True [1, 1, 1, 1, 1] -> False [1, -1, -1, 1, -1, …

1
那是谁PRNG?
给定一个由625个32位无符号整数组成的序列(即在范围内[0, 2**32)),输出以下哪个伪随机数生成器生成了该序列: 线性同余生成器 Xorshift 梅森·扭转者 具体来说,用于此挑战的这三个生成器的C实现如下: #include <stdint.h> /* all code adapted from the sample implementations on the following Wikipedia pages: https://en.wikipedia.org/wiki/Linear_congruential_generator https://en.wikipedia.org/wiki/Xorshift https://en.wikipedia.org/wiki/Mersenne_Twister */ uint32_t lcg_seed; uint32_t xor_x, xor_y, xor_z, xor_w; void lcg_srand(uint32_t seed) { lcg_seed = seed; } uint32_t lcg(void) { lcg_seed = ((uint64_t) lcg_seed * 1103515245 + …

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.