编程拼图和代码高尔夫

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

29
输出金字塔(或公路)
给定长度为偶数的非空字符串s和代表其高度的正整数n,使用以下规则构成金字塔: 金字塔应包含n条非空行;尾随换行符是允许的。对于每个1 <= i <= n,第i行应包含该字符串,其中每个单独的字符在位置重复i次;abcd重复了3次,因此变成aaabbbcccddd。每条线应以填充空间居中,以使每条线的中间垂直对齐。每行末尾都可以使用空格。在第一行之前,您最多可以有一个换行符,但没有其他空格。 输入的字符串不能保证是回文。 测试用例 s = 'o-o o-o', n = 10: o-o o-o oo--oo oo--oo ooo---ooo ooo---ooo oooo----oooo oooo----oooo ooooo-----ooooo ooooo-----ooooo oooooo------oooooo oooooo------oooooo ooooooo-------ooooooo ooooooo-------ooooooo oooooooo--------oooooooo oooooooo--------oooooooo ooooooooo---------ooooooooo ooooooooo---------ooooooooo oooooooooo----------oooooooooo oooooooooo----------oooooooooo

3
辅助工具高尔夫
塔斯高尔夫 在风格TAS竞速一个代码高尔夫扭曲,这一挑战的目标是完成世界1-1原来的超级马里奥兄弟中的几个字节尽可能游戏在你选择的编程语言中的NES,仅使用我将在下面描述的格式的游戏内控制器输入。您的程序必须以stdout这种格式输出到专门为此挑战创建的行列表: up down left right start select A B 从第一帧开始,每条换行符代表特定帧的Controller 1输入。每帧按钮的顺序无关紧要,它们可以用任意数量的非换行空格分隔。每行可以包含全部或不包含或包含一些按钮名称。例如,一个简单的Python程序向右按D-pad 3帧,然后按A可能看起来像这样: for _ in range(3): print('right') print('A') 其输出(我将输入我的仿真器进行验证)将是: right right right A 在这里,我们将“成功”定义为到达上图所示的世界1-1末尾的旗帜。此示例Python提交的得分(如果成功)(如果没有成功),将为44字节,即Python程序的原始长度。 有关基于当前最快的TAS创建的示例工作输入文件,请参见以下Github要点:https : //gist.github.com/anonymous/6f1a73cbff3cd46c9e1cf8d5c2ff58e1注意,此文件可以完成整个游戏。 无法输入子帧输入。也没有办法在Player 2的控制器中输入输入,但是这对于完成关卡或游戏也不是必需的(或有用的)。 使用的SMB版本将是原始的美国/日本iNES ROM(md5sum 811b027eaf99c2def7b933c5208636de-美国版本与日语版本完全相同,因此可以使用,通常使用ROM标记Super Mario Bros (JU) (PRG 0)或相似)。 为了测试提交的内容,我将运行程序,将它们通过管道stdout输入到input.txt文件中,然后使用mario.lua我为该挑战编写的Lua脚本将其加载到FCEUX中: for line in io.lines('input.txt') do local t = {} for w …
39 code-golf  game 

13
579085261是CRAZY,725582是GOLF,10757494是…?
您的任务是使用以下描述的方法将103平滑数字转换成英文单词。 怎么样? 生成输入数字的主要因子列表(重复)。 排序列表: 如果2不是主要因素之一,请按升序对列表进行排序。 如果2是主要因素之一,请从列表中将其删除,然后按降序对其余因素进行排序。 使用下表将每个因子转换为字母: 3 = S 13 = L 29 = X 43 = O 61 = Z 79 = H 101 = K 5 = P 17 = Q 31 = N 47 = R 67 = T 83 = V 103 = Y 7 …

1
麦卡锡的LISP
麦卡锡的1959 LISP 1959年初,约翰·麦卡锡(John McCarthy)撰写了一篇具有开创性的论文,其中仅定义了9种原始函数,这些函数组合在一起仍然构成了当今所有LISP类语言的基础。该文件可在此处数字化: http://www-formal.stanford.edu/jmc/recursive.pdf 你的任务是全面落实正是在1960年的论文中描述McCarthy的LISP解析器和解释:也就是说,功能QUOTE,ATOM,EQ,CAR,CDR,CONS,COND,LAMBDA,和LABEL都应该发挥作用。考虑到答案的正确性,本文将优先于本挑战性文章,但我尝试总结以下九个功能。请注意,该语言将为ALL CAPS,并且无需进行错误检查,所有输入均应假定为有效。 种类 麦卡锡的LISP中只有两种类型:原子和链表,它被递归地定义为头(可以是列表或原子),以及头连接到(尾)的列表。NIL具有既是原子又是列表的特殊属性。 根据论文,原子名称将仅由大写字母,数字和空格字符组成,尽管连续空格的字符串应仅视为一个空格,而所有前导和尾随空格字符均应删除。实施例等效原子名称(替换空格字符下划线): ___ATOM__1__ = ATOM_1。示例不等效的原子名称:A_TOM_1 != ATOM_1 列表用括号表示NIL,每个列表的末尾都包含一个隐含符号。列表中的元素用逗号隔开,而不是像大多数现代Lisps一样用空格隔开。因此,清单(ATOM 1, (ATOM 2))将是{[ATOM 1] -> {[ATOM 2] -> NIL} -> NIL}。 QUOTE: 接受一个参数,该参数可以是一个原子(单个元素)或一个链表。精确返回参数。 测试用例: (QUOTE, ATOM 1) -> ATOM 1 (QUOTE, (ATOM 1, ATOM 2)) -> (ATOM 1, ATOM 2) ATOM: 接受一个参数,该参数可以是一个原子(单个元素)或一个链表。T如果参数是原子,则返回(true),如果参数不是原子,则返回(NILfalse)。 测试用例: (ATOM, …

14
让我们画蒙娜丽莎
2014年,演示者Jakub'Ilmenit'Debski 为Atari XL 发布了一个250字节(1)的程序图形演示,名为Mona。它绘制了以下图片(2张): 您的任务是使用您选择的语言生成完全相同的图片。 (1)细分:136个字节的数据+ 114个字节的代码。 (2)原始图片为128x96。上面的版本放大到256x192。几个像素与原始像素不同,但这是此挑战中描述的伪代码的预期输出。 怎么样? 这是代码高尔夫球。尽管您有权使用任何方法,但使用下面描述的原始算法很可能会获得最佳结果。 注意:本段不是说明,而是一般说明。有关算法的详细信息,请参考伪代码和参考实现。 该图像由64个伪随机笔触组成(请参见此视频),并循环显示以下颜色(以RRGGBB十六进制格式): COLOR = [ 0xFFE289, 0xE99E45, 0xA55A00, 0x000000 ] 最初,背景填充有第四种颜色(黑色)。每个笔画都比上一个笔画短。 伪随机数发生器在初始设置为0x7EC80000并与进行XOR 运算的32位整数上使用线性反馈移位寄存器(LFSR)0x04C11DB7。 每个笔画均以16位值初始化,该值将覆盖种子的最低字节: BRUSH = [ 0x030A, 0x37BE, 0x2F9B, 0x072B, 0x0E3C, 0xF59B, 0x8A91, 0x1B0B, 0x0EBD, 0x9378, 0xB83E, 0xB05A, 0x70B5, 0x0280, 0xD0B1, 0x9CD2, 0x2093, 0x209C, 0x3D11, 0x26D6, 0xDF19, 0x97F5, 0x90A3, …

21
数组对齐加法
介绍 考虑两个非空整数数组,例如A = [0 3 2 2 8 4]和B = [7 8 7 2]。要对其进行对齐添加,请执行以下操作: 重复每个数组足够的时间,使其总长度为lcm(length(A),length(B))。在这里,lcm代表最低公倍数。 A -> [0 3 2 2 8 4][0 3 2 2 8 4] B -> [7 8 7 2][7 8 7 2][7 8 7 2] 在重复的数组上执行逐元素加法,并在每个数组中都有剪切的位置处剪切结果。 A -> [0 3 2 2 8 4][0 3 …

22
自然派#0-摇滚
目标 创建一个接受输入的程序/函数N,检查N随机整数对是否相对质数,然后返回sqrt(6 * N / #coprime)。 TL; DR 这些挑战是仅需要自然和大脑(也许还有一些可重复使用的资源)才能逼近Pi的算法模拟。如果您在僵尸启示录期间确实需要Pi,那么这些方法不会浪费弹药!还有另外八个挑战。检出沙盒帖子以提出建议。 模拟 我们在模拟什么?好吧,两个随机整数是相对质数(即coprime或gcd == 1)的概率是6/Pi/Pi,因此计算Pi的自然方法是挖出两个桶(或少数几个)的岩石。数他们;看看他们的gcd是否为1;重复。这样做后,一对夫妇很多次,sqrt(6.0 * total / num_coprimes)会趋向Pi。如果计算世界末日后的平方根使您感到紧张,请不要担心!有牛顿法。 我们如何模拟这一点? 接受输入 N 请执行以下N次数: 均匀生成随机正整数,i并且j 用 1 <= i , j <= 10^6 如果gcd(i , j) == 1:result = 1 其他: result = 0 取N结果的总和,S 返回 sqrt(6 * N / S) 规格 输入值 …
39 code-golf  math  random  pi  approximation  popularity-contest  code-golf  sequence  number-theory  binary  coding-theory  code-golf  math  3d  code-golf  code-golf  math  number  code-golf  kolmogorov-complexity  code-golf  ascii-art  graphical-output  binary-tree  code-golf  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation  hexadecimal  code-golf  math  number  set-theory  code-golf  math  arithmetic  number-theory  integer  code-golf  string  kolmogorov-complexity  code-golf  math  sequence  arithmetic  decision-problem  code-golf  code-golf  ascii-art  code-golf  array-manipulation  parsing  code-golf  string  ascii-art  kolmogorov-complexity  code-challenge  code-golf  sequence  code-golf  number  array-manipulation  sorting  code-golf  string  function  code-golf  arithmetic  code-golf  math  sequence  number-theory  primes  restricted-source  javascript  code-challenge  polyglot  rosetta-stone  code-golf  code-golf  regular-expression  code-golf  math  code-golf  math  primes  code-golf  ascii-art  kolmogorov-complexity  binary  code-golf  math  sequence  code-golf  sequence  subsequence  code-golf  string  code-golf  parsing  music  code-golf  grid  game  path-finding  board-game  code-golf  string  binary  code-golf  array-manipulation  balanced-string  code-golf  code-golf  algorithm  code-golf  string  number  arithmetic  array-manipulation  code-golf  array-manipulation  binary-tree  tree-traversal  code-golf  code-golf  tips  code-golf  string  base-conversion  code-golf  tips  s.i.l.o.s  code-golf  string  ascii-art  code-golf  code-challenge  code-golf  game 

29
乘坐Reading,如果您通过Go,则可获得$ 200
垄断委员会 对于此代码高尔夫球挑战,我们将构建棋盘游戏Monopoly。 规则: 不输入任何内容。 输出一个11x11电路板,其中构成该电路板的每个ASCII字符是美国版Monopoly电路板每个空格的第一个字母。 字符必须用空格分隔。 Go 应该从右下角开始。 产生的确切字符串是 F K C I I B A V W M G N P T N C C S P P S V C S P E L S B J C V C O R I B C M G 请注意,从右下到左下的正方形如下: …

23
排队的圆圈,n点
在成对n排列的圆点的每对不同点之间绘制线,产生类似以下结果的结果。最短的代码(以字节为单位)获胜!您的线条不必透明,但是那样看起来更好。输出必须是矢量图形,或者是至少600像素乘600像素的图像(保存到文件或显示在屏幕上)。要完成挑战,您必须至少绘制20张。

30
字符串的分解图
您是否不喜欢将机器或物体分解成最小零件的那些分解图? 让我们来做一个字符串! 挑战 编写一个程序或函数 输入仅包含可打印ASCII字符的字符串; 将字符串分解为非空格等号字符组(字符串的“段”); 以任何方便的格式输出这些组,并在组之间使用一些分隔符。 例如,给定字符串 Ah, abracadabra! 输出将是以下几组: ! , 一种 aa bb C d H rr 输出中的每个组均包含相等的字符,并删除了空格。换行符已用作组之间的分隔符。以下是有关允许格式的更多信息。 规则 该输入应该是一个字符串或字符数组。它仅包含可打印的ASCII字符(包括从空格到波浪号的范围)。如果您的语言不支持,则可以采用代表ASCII码的数字形式的输入。 您可以假定输入至少包含一个非空格字符。 的输出应包括字符(即使输入是由ASCII码装置)。组之间必须有明确的分隔符,与输入中可能出现的任何非空格字符不同。 如果输出是通过函数返回,则它也可以是一个数组或字符串,或一个字符数组的数组,或类似的结构。在这种情况下,结构可提供必要的分隔。 每组字符之间的分隔符是可选的。如果有一个,则应用相同的规则:输入中不能出现非空格字符。此外,它不能与组之间使用的分隔符相同。 除此之外,格式是灵活的。这里有些例子: 组可能是用换行符分隔的字符串,如上所示。 这些组可以用任何非ASCII字符分隔,例如 ¬。上述输入的输出将是字符串: !¬,¬A¬aaaaa¬bb¬c¬d¬h¬rr 这些组可以用n > 1个空格分隔(即使n是可变的),每个组之间的字符也用一个空格分隔: ! , A a a a a a b b c d h r r …
39 code-golf  string 

30
删除字符串
许多语言都有内置的方法来消除重复项,或者“去重复”或“唯一化”列表或字符串。不太常见的任务是“删除”字符串。也就是说,对于每个出现的字符,都会保留前两次出现。 这是一个示例,其中应删除的字符用标记^: aaabcbccdbabdcd ^ ^ ^^^ ^^ aabcbcdd 您的任务是完全实现此操作。 规则 输入是单个(可能为空)字符串。您可以假定它仅包含ASCII范围内的小写字母。 输出应为一个字符串,其中已删除的所有字符至少已在字符串中出现两次(因此,保留了最左边的两个匹配项)。 您可以使用字符列表(或单例字符串)来代替字符串,但是输入和输出之间的格式必须一致。 您可以编写程序或函数,并使用我们的任何标准方法来接收输入和提供输出。 您可以使用任何编程语言,但是请注意,默认情况下,这些漏洞是禁止的。 这是代码高尔夫球,因此以字节为单位的最短有效答案为准。 测试用例 每对线都是一个测试用例,输入然后是输出。 xxxxx xx abcabc abcabc abcdabcaba abcdabc abacbadcba abacbdc aaabcbccdbabdcd aabcbcdd 排行榜 这篇文章底部的Stack Snippet会根据答案a)生成排行榜,a)是每种语言的最短解决方案列表,b)则是整体排行榜。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,则可以将旧分数保留在标题中,方法是将它们打掉。例如: ## Ruby, <s>104</s> <s>101</s> 96 bytes 如果要在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: ## Perl, 43 + 3 …

29
伪析因
有时在数学问题或谜语中会出现一个相当奇怪的数字。伪因子(N)是数字1到N的最小(即最低)公倍数;换句话说,它是最低的数字,其中包含从1到N的所有数字。 例如pseudofactorial(7)= 3 * 4 * 5 * 7,与7相同!除了2和6已删除,因为它们包含在其他术语中。 编写一个程序来计算pseudofactorial(N),并且一如既往地以最短的代码为准。 这是供您使用的简短列表。可以在OEIS中的A003418下找到更多测试用例。 阶乘: 1个 2 6 24 120 720 5040 伪因子: 1个 2 6 12 60 60 420

30
可除性测试
任务 给定两个严格的正整数n和d作为输入,请确定n是否可被d 整除,即是否存在整数q使得n = qd。 您可以编写程序或函数,并使用我们的任何标准方法来接收输入和提供输出。 输出应该是真实值或虚假值;如果n可被d整除,则为真;否则为f。 您的代码只需要处理可以本机表示的整数,只要它适用于所有带符号的8位整数即可。但是,您的算法必须适用于任意大整数。 您可以使用任何编程语言,但是请注意,默认情况下,这些漏洞是禁止的。 这是代码高尔夫球,因此以字节为单位的最短有效答案为准。 测试用例 n, d output 1, 1 truthy 2, 1 truthy 6, 3 truthy 17, 17 truthy 22, 2 truthy 1, 2 falsy 2, 3 falsy 2, 4 falsy 3, 9 falsy 15, 16 falsy 排行榜 这篇文章底部的Stack Snippet会根据答案a)生成目录,a)作为每种语言最短解决方案的列表,b)作为整体排行榜。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language …

15
看天上!这是一个超级骗子阵列!
在Code Review中受到我们竞争对手朋友的这个问题的启发。 定义 甲超级阵列是一个阵列,其中阵列中的每个新的元件比以前的所有元素的总和大。{2, 3, 6, 13}是一个超级数组,因为 3 > 2 6 > 3 + 2 (5) 13 > 6 + 3 + 2 (11) {2, 3, 5, 11}是不是一个超级阵列,因为 3 > 2 5 == 3 + 2 11 > 5 + 3 + 2 甲骗子阵列是一个阵列,其中阵列中的每个新的元件比以前所有的元素的乘积大。{2, 3, 7, 43, 1856}是一个超级数组,但它也是一个双精度数组,因为 3 > …

21
密钥在哪一行上?
给定以下任何字符(或换行符): `1234567890-=~!@#$%^&*()_+qwertyuiop[]\QWERTYUIOP{}|asdfghjkl;'ASDFGHJKL:"zxcvbnm,./ZXCVBNM<>? 您的程序必须输出它在键盘上的行 由于我的键盘(几乎)没电了,因此您的代码必须尽可能短 您的程序应使用的键盘(用于行查找),应类似于: Row 1:~` !1@2 #3$4 %5^6 &7*8 (9)0 _-+= Row 2: Q W E R T Y U I O P {[ }] |\ Row 3: A S D F G H J K L :; "' ↵ return Row 4: Z X C V B …

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.