编程拼图和代码高尔夫

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

1
数学Metagolf疯狂!
Mathemania规格: Mathemania的每个代码都以数字开头2。从中2,您可以执行以下操作: e:求幂。此命令的默认值是平方。 f:阶乘。该命令的默认值是在数字(using f on 2 = 2! = 2)上使用单阶乘。 r: 根。该命令的默认值是将数字平方根。 c:天花板功能。 l:发言权功能。 要在Mathemania中生成数字,您必须将这些命令串在一起,这些命令在number上从左到右执行2。 例子: ef = (2^2)! = 4! = 24 rl = floor(sqrt(2)) = floor(1.4...) = 1 er = sqrt(2^2) = sqrt(4) = 2 efrrc = ceil(sqrt(sqrt((2^2)!))) = ceil(sqrt(sqrt(24))) = ceil(sqrt(4.89...)) = ceil(2.21...) = 3 的e,f和r命令可以通过额外Mathemania命令(这也与开始被改变2为“碱基”号)通过将括号中的改变的功能后,并把它里面的Mathemania命令以生成不同的求幂,阶乘和根。 …
12 math  metagolf 

2
教授的基地楼号转换器
这位坚果数学教授希望使用一种系统来对他们的所有研究进行编码,该系统可以欺骗甚至最灵活的竞争对手! 为此,教授决定不仅改变他们正在写的数字的基数,而且改变该数字中的每个数字,根据数字所处的位置(从右边开始,从1开始)。例如: 数字0有一位数字,因此以基数1:0表示 数字1的底数为10,但是在我们教授的系统中无效。第一位仅保留基数1的位数!这意味着必须将其撞到允许以2为底的第二位置:10 数字2要求至少以3为底数:100 但是现在可以通过更改第二位的数字来写数字3:110 和4这样:200 这里有一些更多的例子可以帮助您理解: 5:210 6:1000 7:1010 8:1100 9:1110 10:1200 11:1210 12:2000 13:2010 14:2100 15:2110 16:2200 17:2210 18:3000 使用这个系统,教授的笔记对除了他们之外的任何人都没有意义,他们最终可以掌控整个世界!!!晚上睡得好。 当然,编码方法必须尽可能模糊。 您的任务是编写10个代码段,每个代码段代表基数10的一位 0 1 2 3 4 5 6 7 8 9 当按要转换的数字的顺序组合时,将产生一个写在教授的医学编号系统中的数字(输出方法可以选择,但必须是人类可读的数字,仅使用数字0-9) 例如,如果我的片段是: 0 =猴子1 =示例,2 =代码,3 =高尔夫,9 =测试 然后 19 =示例测试-> 3010 20 = CODEMONKEY-> …

3
自然派#2-河
目标 给定一个带有一列哈希的字符串,计算其总长度并除以从开始到结束的距离。 模拟 我们在模拟什么?根据本文,河流的长度与起点和终点之间的距离之比约为Pi!(这可能在经验上得到了证明,但是我可以找到数据,对于这一挑战,我们认为它是正确的)。 我们如何模拟这一点? 接受空格和哈希的字符串输入 每个哈希将与其他两个相邻 除了第一个和最后一个散列,该散列只有1个 每个字符都位于格点上 (x, y) x 是字符在其行中的索引 例如c,第四个字符是0123c567 y 是字符的行号 例如c在第三行: 0line 1line 2line 3c... 求和相邻散列之间的距离,将其称为 S 取第一个和最后一个哈希之间的距离,称为 D 返回 S/D 规格 输入值 灵活,可以采用任何标准方式(例如,函数参数,STDIN)和任何标准格式(例如,字符串,二进制)进行输入 输出量 灵活,以任何标准方式(例如退货,打印)提供输出 可以使用空格,尾随空格和前导空格 精度,请提供至少4位小数位数(即3.1416) 计分 最短的代码胜出! 测试用例 这些是我对河流的近似值。我的估算值可能很差,或者我对河流人口的估算值很差。另外,我是手动进行计算的。我本来想念的。 黄河 ### #### # # # # # # # # # …

3
将样本转换为索引
我们将球放入固定数量的垃圾箱中。这些垃圾箱开始为空。 Empty bin (a=4): 0 0 0 0 然后我们一一将球加到垃圾箱中。 0 0 0 1 or 0 0 1 0 or 0 1 0 0 or 1 0 0 0 我们需要一种快速的方法来循环遍历垃圾箱的所有可能状态,没有重复且没有任何遗漏,并且我们不想列举所有可能的垃圾箱。因此,我们改为为每个bin配置分配一个索引。 我们通过以特定方式对可能的配置进行排序来分配索引: 按总和升序排序:因此,首先0 0 0 0添加可能的配置,然后添加1个球,然后添加2个,依此类推。 然后,从第一个容器到最后一个容器,以升序对每个和进行排序: 0 0 0 2 0 0 1 1 0 0 2 0 0 1 0 …

11
负阶整数挑战,但这是黄金时间!
我在谈论这个问题,如果您有点困惑,请看一下。 主要任务 您的任务是按降序输出级联整数,但每次击中时都增加最大整数1 (对于此问题,1将被视为质数)。尽管这听起来与第一个问题没有什么不同,但棘手的是:所有输出的数字可能只是质数。将这些字符串串在一起,没有空格或换行符。您的输入也将是质数。 例: 1 21 321 5321 75321 1175321 Valid output: 1213215321753211175321 输入值 您的代码只能输入一个:要打印的最高质数。此输入可以来自任何地方(图形,STDIN)。您可以确保输入的是质数。 输出量 您将必须输出结果编号。您可以通过递减计数来获得该数字,仅当其为质数时才计算该数字,然后将所有结果连接到一个数字上。最后一个数字“行”(例如7, 5, 3, 2, 1)必须完整打印。只要可读,输出就可以是任何东西(数字,字符串,图形)。适用于检查测试用例的相同Regex模式: ^(\D*(\d)+\D*|)$ 如果您的输出与此模式不匹配,则您的代码无效。 规则 除非您希望/需要输入,否则请确保输入是素数,不包括错误处理。 输出可能只是一个全连接的数字,因此不会被任何东西分割,甚至不会换行。 您的算法不应检查N出现的第一个实例(例如17in 1175321),而应检查的第一个实例N作为实际数字。 确保您的输入是肯定的,除非您需要/不要添加处理。 测试用例 Input: -2, 0 Output: Any, or none (number isn't positive) Input: 9 Output: Any, or none (number isn't prime) …

8
给定目标日期和星期几,找到最近的日期
查找给定星期几中与TargetDate最接近的日期。 例如,给定日期20161219和星期几Friday (6),答案为20161216。 另一个例子,给定日期20161219为星期几Wednesday (4),答案为20161221。 最后一个例子,给定日期20161219为星期几Monday (2),答案为20161219。 规则: 输入和输出的日期格式必须匹配。在示例中,我使用yyyymmdd,但是您可以使用任何格式,只要年份(至少两位数),月份和月份中的“可读”即可。 星期几以整数形式输入。在我的示例中,星期日是星期几,因此它是星期几1。您可以使用“星期几”中的任何编号,只要您在与示例不同的地方注明即可。 必须容纳1970年到2030年。 允许使用通用语言的日期工具和库,但对那些选择不使用它们的人则赋予了信誉。 最少的字节数获胜。
12 code-golf  date 

4
帮我解开这些电线!
我的电线都纠结了! 电线缠在一起不是很烦吗?好吧,这只是发生在我身上,所以我想帮助我解开他们!为了方便起见,我已将所有设备与设备断开连接,但它们仍连接到电源插座。您的挑战是弄清楚如何解开它们! 输入值 输入将包含空格,管道和Xs(两种情况)。输入将如下所示: | | | | X | | | | x | X | | | | | 大写字母X表示左导线与右导线相交,小写字母x表示相反。第一行和最后一行将始终为| | | |...。您可以将输入作为逗号分隔的字符串,字符串数组等。格式并不严格,只要它有意义并且不包含任何其他信息即可。 输出量 对于这个挑战,我不仅需要知道需要多长时间,而且还需要确切地知道该怎么做。因此,输出一个整数对的列表,其中的字符R或L不区分大小写,表示要解开哪两条线以及哪种方式(R表示从右到左,反之亦然)。您需要告诉我哪种方式可以穿越他们;我自己不知道这一点。只要您以正确的顺序输出所有整数对+字符并且不输出任何多余的废话(括号,逗号等都可以),输出也非常灵活。导线可以为零或一索引,但索引必须从左侧开始。请注意,您必须从底部而不是顶部解开角度。输出样式必须一致,如果不明显,请指定输出方式。字符的大小写不一致 样本输出 对于上面的示例输入,输出将类似于: 2 3 R 3 4 L 1 2 R 这里的输出格式是用换行符分隔的值列表。这是1索引的。 进一步的规格 X和x沿任一方向垂直堆叠在一起是有效的。由于我很懒,所以我不想不必要地切换电线,因此在这种情况下不要输出任何内容。如果发现该问题,我将轻轻拉动电线使其伸直。 将多个X和x垂直堆叠也是有效的,并且只要两条导线都没有参与其他交叉,我就不需要任何额外的移动(因为我很懒)。因此,如果字符X X x X x x显示在没有任何其他交叉的列中,则输出应仍为空白! 如果不清楚,则R消除X,L消除x。 同一行中可能有两个导线交叉,在这种情况下,这两个交换的顺序无关紧要。您将永远不会得到类似的东西| X …
12 code-golf  string 

1
分组这些单元格!
该挑战基于游戏Layerz。 给定,在stdin上或作为函数参数,单元格的2D矩形数组,其中每个单元格包含一个空格(可以选择使用0代替空格,而不会受到任何惩罚),1、2、3或4 ; 找到一种方法将其划分为有效区域(如下所述),以使每个非空白单元格仅包含一个区域。然后,以任何合理的格式输出找到的解决方案。如果没有解决方案,则要么停止而不产生输出,要么输出一个假值,然后停止。 以下任何内容均构成有效区域: 包含1的单个单元格 包含2个且恰好是其非空白正交邻居之一的像元 包含3个和正好两个非空白正交邻居的像元 包含4个且恰好是其三个非空白正交邻居的像元 这是code-golf,因此以字节为单位的最短有效答案为准。 一些测试用例: 1.一个相当琐碎的: 这是解决方案,每个区域使用不同的颜色: 2.一个更有趣的 这是一个以上的解决方案,但这是其中之一: 3.较小的一个,包含空格,没有任何解决方案(取决于您是使用二进制之一来“捕获”这三个,还是使用三个来获取两者中的两个,要么留下一个一对不相邻的(因此不可分组的)对或单独一个对): 由于此网格没有解决方案,因此在指定该网格的情况下,您的程序应暂停而不产生任何输出。 4.这个(顶部2个向左移动一个单元格)确实有一个解决方案: 解: (右下角的2用于“捕获” 3) 5.因为我们需要一个包含四个方面的测试用例: 一种解决方案:

5
崩溃的艺术
挑战 给定一个可打印的ascii字符的矩形网格作为字符串或通过标准输入,编写一个将非空格字符折叠为底部的函数或程序。 规则: 输出具有与输入相同的尺寸和字符。 在非空格字符(row a,column b)不能有空格字符' '的(a-1, b),(a-1,b-1)或者(a-1,b+1),当行从最底层向上编号。结果是所有垂直桩都应向侧面倒塌。 非空格字符可以在大多数(initial height - final height)位置向左或向右移动(见图1)。 您可以假定图片有足够的空间折叠而字符不会掉出屏幕。 图1:分别@#$显示为的字符的最终位置x,y,z。 .............. ...@.......... ..xxx......... .xxxxx...#.... xxxxxxx.yyy.$. 字符折叠的顺序可以自由选择。尾随空格不行,但尾随换行符是可以的。 这是代码高尔夫球,因此最短答案以字节为单位! 例 (__) (oo) /------\/ / | || * /\---/\ ~~ ~~ ..."Have you mooed today?"... 一种可能的输出: --(_ /----|/|(o_) /|/~\---~\\/o) ..."Have*you~mooed~today?"...

1
我想看着你渴死
您是在两个城镇之间穿越沙漠的旅行者。您不能携带足够的水不停地穿越。这是经典拼图的变体。 规则 沙漠看起来像这样:一个WxH网格,其中大部分是空白空间。标S有空格的地方是您开始的地方,E是您要结束的地方,一个标有数字N的正方形容纳N单位水。标有.保持零水的方块。 ..................................... ........S............................ ..................................... .........7........................... ..................................... .......................3............. .....5............................... ................................2.... ..................................... ..................................... ..................................... ...............................E..... ..................................... ....................7................ ..................................... ..................................... 您以5单位水开始于S。 您最多可以携带5单位水。 每转你 向上,向下,向左或向右移动一个方块, 消耗1单位水, 拿起或放下一定数量的水。 这样会标出一个转弯:(direction)(+|-)(units of water),+表示您正在拿水,-正在放水。 示例变为: D+0 Move Down R+0 Move Right D+2 Move Down, pick up two units of water. U-1 Move Up, drop one unit …
12 code-golf  game  search 

1
证明2 + 2 = 2 * 2(和类似的)
输出此类陈述的完整正式形式,例如1+2=3,2+2=2*(1+1)等。 介入 如果您知道Peano Arithmetic,则可以跳过本节。 这是我们定义自然数的方法: (Axiom 1) 0 is a number (Axiom 2) If `x` is a number, the `S(x)`, the successor of `x`, is a number. 因此,例如S(S(S(0)))是一个数字。 您可以在代码中使用任何等效的表示形式。例如,所有这些都是有效的: 0 "" 0 () ! 1 "#" S(0) (()) !' 2 "##" S(S(0)) ((())) !'' 3 "###" S(S(S(0))) (((()))) !''' ... …

17
生成/ *行号注释* /
您的任务是编写一个程序(或函数),该程序将字符串作为输入并将文本追加到满足以下规则的每一行的开头: 附加的文本必须包含行号。您可以使用基于0或1的索引。 文字必须是您所用语言的注释。注释定义为语法上有效的一段代码,不更改程序状态。删除注释不应更改程序。 注释的末尾只能包含换行符。 您不必为仅包含空格和注释的行添加行号。 技术指标 您可以假定输入将是您所用语言的有效程序。 在缩进敏感的语言(如Python)中,您可以在所有缩进之后放置行号注释。您可以选择制表符或空格作为缩进字符,但必须在帖子中指定。 您可以假设代码中的每个语句最多占用1行的全部内容;即没有多行字符串或反斜杠继续。 测试用例 蟒蛇: #0 a = int(input()) #1 while a: #2 print(a) C :(老实说,我对此编译感到惊讶) /*0 */#include <stdio.h> /*1 */int main() /*2 */{ /*3 */ char c; /*4 */ c = getchar(); /*5 */ do /*6 */ { /*7 */ putchar(c); /*8 */ …

9
多边形数!
介绍 在数学中,多边形数是表示为以规则多边形形状排列的点或小卵石的数字。点被认为是alpha(单位)。这些是二维图形数字的一种类型。 例如,数字10可以排列成三角形: * ** *** **** 但是不能将10布置成正方形。另一方面,数字9可以是: *** *** *** 一些数字(例如36)既可以布置为正方形,也可以布置为三角形: ****** * ****** ** ****** *** ****** **** ****** ***** ****** ****** 按照惯例,1是任何数量的边的第一个多边形。将多边形放大到下一个尺寸的规则是将两个相邻的臂延伸一个点,然后在这些点之间添加所需的额外边。在下图中,每个额外的层都显示为红色。 三角数: 平方数: 尽管点不再像上面那样形成完全规则的晶格,但也可以根据此规则构造边数更多的多边形,例如五边形和六边形。 五角数字: 六角数: 资料来源:维基百科 你的任务 给定正整数N(1 <= N <= 1000),则打印每种类型的多边形N都是从三角数开始,直至包括余角(20角)数。 例如,数字10是一个三角数和一个十进制数,因此输出应类似于(您可以选择自己的输出格式,但看起来应该像这样): 3 10 测试用例 1 -> 3 4 5 6 7 8 9 …

9
绘制希尔伯特曲线
希尔伯特曲线是一种空间填充曲线,它基本上将一条线映射到一个平面。线中的每个点仅对应于平面中的一个点,而平面中的每个点仅对应于线上的一个点。显示的是希尔伯特曲线的迭代0到4: 迭代0到4: 该任务的目标:如上所述,编写绘制希尔伯特曲线第四次迭代的代码。您的代码应该完整-换句话说,如果您创建绘制希尔伯特曲线的函数,则您的代码必须调用该函数。输出可以直接显示在屏幕上,也可以将输出写入图像文件。曲线可以旋转或翻转,但直线必须相交成直角,并且输出不能拉伸。可以理解ASCII技术,但不会被接受。以字节为单位的最短代码胜出!

5
在Python脚本中添加注释,并使其成为双语的Python / C ++“程序”
给定以下Python 3脚本: def greet(): print("Hello, world!") greet() 前面加上一些行该文本文件,以便它可以同时作为一个Python程序执行以及编译和运行一个C ++程序产生相同的输出你好,世界!(包括末尾的换行符): $ python3 bilingual.py.cpp Hello, world! $ g++ bilingual.py.cpp && ./a.out Hello, world! 该解决方案将通过整个程序的非空白字符计数来评分,包括Python脚本: sed 's/\s//g' bilingual.py.cpp|wc -c

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.