编程拼图和代码高尔夫

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

20
我可以重新堆放水桶吗?
我的小孩有这样的玩具: 这个玩具包含10个可叠放的小桶,我们将把它从1个(最小的一个)编号为10个(最大的一个)。有时他会堆成小堆,玩具最终变成这样: 我们可以像这样示意地表示堆: 1 6 4 9 2 7 5 10 3 8 ---------- <-- Floor 1 2 3 4 <-- Pile # 或者,换一种说法: [[4,5],[9,10],[1,2,3],[6,7,8]] 通过将较小的水桶堆连续放置在较大的水桶堆中,可以轻松地重新堆叠这组水桶堆以重建原始集(第一个图像): 1 1 6 2 2 7 1 6 3 6 3 8 4 9 2 7 4 9 7 4 9 5 10 3 …

7
生长缓慢的奎因
做个Quine。 看起来容易吧?那么,这个quine必须输出自己加上第一个字符,然后输出自己加上第二个字​​符,依此类推。 这样,木盒可以几代输出两个副本。 示例:让您的代码为x。运行它应该输出x + x[:1]。运行生成的程序应输出x + x[:2],依此类推... 如果您的代码是foobar,运行此应输出foobarf。运行这个应该输出foobarfo。依此类推,依此类推: foobar foobarf foobarfo foobarfoo foobarfoob foobarfooba foobarfoobar foobarfoobarf 您的程序必须长于2个字节,并且每次迭代只能输出自己代码的一个额外字符。
30 code-golf  quine 

14
用火杀死它
免责声明:这个问题中讲的故事完全是虚构的,仅出于介绍目的而发明。 我是一个邪恶的农民,为了提高我所在地区的小麦价格,我决定烧掉我周围所有农民的田地。我真的很想看到田野起火(这样我就可以用邪恶的笑容和欢乐地揉搓我的手),但是我也不想被观察到,所以我需要您模拟田野为我焚化。 你的任务: 编写一个程序或函数,将某个字段作为输入,并返回其燃烧的阶段,直到整个字段变成灰烬为止。着火的特定区域用代表火焰强度的整数表示。火从“ 1”开始,然后继续前进到“ 2”,然后是“ 3”,依此类推。一旦大火达到“ 4”,它将着火的任何直接(非对角线)相邻区域都着火。一旦达到“ 8”,它将在下一次迭代中耗尽,并变成灰烬,以“ A”表示。当尚未被火触及的区域时,以“ 0”表示。例如,如果该字段如下所示: 100 000 您的程序应输出以下内容: 100 000 200 000 300 000 410 100 520 200 630 300 741 410 852 520 A63 630 A74 741 A85 852 AA6 A63 AA7 A74 AA8 A85 AAA AA6 AAA AA7 AAA AA8 AAA AAA …

29
那些贪婪的罗马人!
给定一个严格的正整数,请仅使用加法则返回最短的罗马数字。输出必须MDCLXVI按该顺序包含零个或多个每个字符。14因此,该数字必须为XIIII而不是XIV。 字符的数值为M= 1000,D= 500,C= 100,L= 50,X= 10,V= 5,I= 1。 例子 3 → III 4 → IIII 9 → VIIII 42 → XXXXII 796 → DCCLXXXXVI 2017 → MMXVII 16807 → MMMMMMMMMMMMMMMMDCCCVII

30
对角数!
我们有很多数字的水平轴,但是老实说,我觉得它们很无聊。今天的任务是在输入的两个不同的非负整数之间建立对角轴的一部分。 如何建立对角线轴? 让我们以输入为例0, 5。我们的轴应如下所示: 0 1个 2 3 4 5 但是,对于具有更多数字的数字,我们的轴也应该看起来不错!例如0, 14,如果输入为,则新轴应为: 0 1个 2 3 4 5 6 7 8 9 10 11 12 13 14 这个想法是,轴上下一个数字的第一位必须始终准确地放在前一个数字的最后一位之后。为了更好地理解这个想法,下面是另一个示例997, 1004: 997 998 999 1000 1001 1002 1003 1004 规则 您可以假定输入是升序还是降序(可以在5,3和之间进行选择3,5)。 您还可以假定两个整数之间的差小于100。 您可能有一个换行符开头或一致的空格(在每行上)。尾随空格/换行符也很好。 默认漏洞是禁止的。 您可以采用任何标准均值进行输入并提供输出。 这是代码高尔夫球,因此每种语言中以字节为单位的最短代码胜出! 其他测试用例 1, 10: 1个 2 3 …

7
编写藜的技巧
甲喹是产生输出这等同于程序的源代码的程序。在此网站上,我们通常只关心适当的奎因(在撰写本文时,当前定义是“输出的某些部分由程序的不同部分编码”)。 您对编写适当的quines或具有quine类特性的程序有什么建议?像往常一样,每个提示都应使用不同的答案。
30 tips  quine 

30
torrent UI的ASCII艺术
问题 从Torrent程序重新创建UI 在没有输入的情况下,输出以下内容: +----------+----------+----------+ |a.exe |##########|seeding | +----------+----------+----------+ |b.exe 10% |# |leeching | +----------+----------+----------+ |c.exe |##########|seeding | +----------+----------+----------+ |d.exe 20% |## |leeching | +----------+----------+----------+ |e.exe |##########|seeding | +----------+----------+----------+ |f.exe 30% |### |leeching | +----------+----------+----------+ |g.exe |##########|seeding | +----------+----------+----------+ |h.exe 40% |#### |leeching | +----------+----------+----------+ |i.exe |##########|seeding | +----------+----------+----------+ |j.exe 50% …

18
N维身份“矩阵”
给定一个正整数n,输出- N维标识“ matrix”,这是其中索引的所有分量均相等的N^N数组1,0否则为相等。N^N表示N个N个N个... 1 -> [1] 2 -> [[1,0],[0,1]] 3 -> [[[1,0,0],[0,0,0],[0,0,0]],[[0,0,0],[0,1,0],[0,0,0]],[[0,0,0],[0,0,0],[0,0,1]]] 4 -> [[[[1,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]],[[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,1,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]],[[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,1,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]],[[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,1]]]] 例如,如果a是4维同一性“基质”,然后用仅条目1会是a[0][0][0][0],a[1][1][1][1],a[2][2][2][2],和a[3][3][3][3]。 这是代码高尔夫球。以字节为单位的最短答案将获胜。有标准漏洞。

21
查找最接近的大数
任务 给定任何整数数组,例如: [-1,476,578,27,0,1,-1,1,2] 和该数组的索引(此示例使用基于0的索引,尽管您也可以使用基于1的索引。): index = 5 v [-1,476,578,27,0,1,-1,1,2] 然后返回大于该索引处元素的最接近数字。在该示例中,大于1的最接近数字是27(相距2个索引)。 index = 5 v [-1,476,578,27,0,1,-1,1,2] ^ Nearest greater number Output = 27 假设条件 最近的不包括包装。 永远不会给程序一个长度为1的数组(例如[55])。 您将假定总有一个大于给定元素的数字。 如果等距离处的元素大2个数字,则可以返回任意一个。 I / O对 Input: Index = 45 Array = [69, 43, 89, 93, 62, 25, 4, 11, 115, 87, 174, 60, 84, 58, …

18
数字三角形翻转
假设您在三角形中列出了正整数,然后将其从左向右翻转。给定一个数字,输出它发送到的数字。这是一个自逆映射。 1 1 2 3 3 2 4 5 6 <---> 6 5 4 7 8 9 10 10 9 8 7 11 12 13 14 15 15 14 13 12 11 这是A038722的第n个元素,已被索引: 1, 3, 2, 6, 5, 4, 10, 9, 8, 7, 15, 14, 13, 12, 11, ... 此序列以递增的长度反转正整数的连续块: …

30
生成长度为N的随机字母数字字符串
生成具有给定长度且仅允许字母数字字符的随机字符串的最短方法是什么? 随机字符串的示例:如果N = 9,则输出为 aZua7I0Lk 给定的长度N可以假定始终大于0 如有必要,可以将N的最大值假定为256,但是最好使用N的上限更高但仍具有快速计算时间的解决方案 允许的字符:0-9,az和AZ 一个字符可以在输出字符串中出现多次 每个可能的字符串应具有同等的可能性(以您的语言的随机数生成器的准确性为准)

8
我们应该成为朋友吗?
请注意,这是一个主要关注数据结构的问题 介绍 Bacefook希望人们变得更加友好!因此,他们正在实施一个新系统来推荐朋友!您的任务是帮助Bacefook实施新的建议系统。 规格: 你的程序必须是支持3种类型的命令的一个REPL(读取-求值-输出循环): FRIEND,SUGGEST和KNOW。 FRIEND X Y-指定X和Y是社交网络中的朋友。 如果X是Y的朋友,那么Y是X的朋友 可以,但不必输出 X永远是X的朋友 KNOW X Y -如果X和Y是朋友,则输出真实值,否则输出虚假值 KNOW X X 将始终输出真实值 SUGGEST X Y-如果X和Y应该是朋友,则输出真实值,否则输出虚假值。如果满足以下条件,则X和Y应该是朋友: X和Y不是朋友 X和Y至少有1个共同的朋友 你被允许代替FRIEND,SUGGEST并KNOW用自己的字符串,但你必须谈不上什么串您更换每个命令。 您的程序可以以任何希望的方式接受输入/产生输出,只要可以相当容易地识别其工作方式即可。 社交网络中的人数N在1到100,000之间,但是可能有任意数量的“朋友链接”(边缘)。 如果您尚未注意到,这是一个图形搜索问题。实现此功能的(可能)最简单(可能最快)的数据结构将是邻接矩阵。 测试用例 FRIEND A B FRIEND A C FRIEND B D SUGGEST A B -> Falsy, as they are friends SUGGEST A …

30
单词反转
索娜(Sona)和她10岁的女儿在她的房子里。她需要去学校带另一个孩子放学,因为下午2点学校结束了。外面很热,所以她想把年幼的孩子留在家中。 她给孩子们串了一串绳子,以使她不在的时候保持忙碌。她要求她扭转字符串中的单词。字符串很多,因此您需要帮助她的女儿解决这个艰巨的任务。 因此,给定包含以单个空格分隔的单词的字符串,请反转字符串中的单词。您可以假定那里没有前导或尾随空格。 该字符串仅包含[a-zA-z ],因此您不需要处理标点符号。 将为您提供一个字符串作为输入,并且您应该输出一个字符串。 示例测试用例: Input: Man bites dog Output: dog bites Man Input: The quick brown fox jumps over the lazy dog Output: dog lazy the over jumps fox brown quick The Input: Hello world Output: world Hello 计分 这是代码高尔夫球。以字节为单位的最短答案将获胜。

4
旋转2D矩阵
假设我有以下(2D)矩阵: [[1, 2, 3, 4 ], [5, 6, 7, 8 ], [9, 10, 11, 12], [13, 14, 15, 16]] 旋转矩阵逆时针 R倍(未以90个增量,只是通过每次1号), 1 2 3 4 2 3 4 8 3 4 8 12 5 6 7 8 --> 1 7 11 12 --> 2 11 10 16 9 10 11 …

1
钓鱼立方网
立方体可以由六个正方形作为侧面。但是您也可以将三个2x1矩形对折,然后将它们粘合在一起以形成一个立方体。现在,在此挑战中,您将获得一组由正方形组成的零件,并且您必须确定是否可以选择零件来形成单位立方体。并非所有部件都必须使用,可能还剩下一些。 细节 这些片段以两个不同字符的字符串或黑白图像或任何方便的2D栅格格式给出。在下面的示例中,我假设形成碎片的像素为黑色,背景为白色。 共有一侧的两个像素被视为属于同一块。这些片段只能沿着分隔像素的网格线折叠,并且无法剪切。立方体的每一侧都有一个像素的大小,立方体的每一侧只能由一层构成。 输出必须为真或假值。 测试用例 在下面,空格是背景,哈希符号#代表片段。 (还有待添加) 有效 ## ## ## # #### # # # # # # # # # ## ## # 无效 ### ### # # #### ### ## #### 运行以下代码片段以获取更多测试用例。 显示代码段 document.getElementById("asdfasdf").style.display = "block"; <div id="asdfasdf" display="none"> <h3>Valid</h3> <pre><code> ## ## ## </code></pre> <hr> …

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.