编程拼图和代码高尔夫

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

3
彼得(蒙德里安)的谜题
有关更多信息,请观看此视频,并转到A276523以获得相关序列。 蒙德里安难题(对于整数n)如下: 将非全等矩形拟合到一个 n*n正方形网格中。最大和最小矩形之间的最小差异是多少? 为6,对于最佳差M(6)就是5,并且可以表现出像这样: ___________ | |S|_______| | | | L | | |_|_______| | | | | | |_____|___| |_|_________| (fig. I) 最大的矩形(L)的面积为2 * 4 = 8,最小的矩形(S)的面积为1 * 3 = 3。因此,差异为8 - 3 = 5。 请记住,目前n > 44尚未找到最佳解决方案。 您的任务是创建一个程序,该程序生成一个Mondrian网格,其中包含一个(非最佳)解决方案(给定整数)n。 您将接受100到150的数字测试。每次测试的得分将是最大和最小矩形之间的差。您的总分是所有100到150项测试的总分。 您必须像这样显示输出: {number} {grid} number分数在哪里(最大和最小之间的差),并且grid为: 多行字符串,或 二维列表。 网格必须清楚地显示矩形的开始和结束位置。 规则: …

11
找到酋长国!
一个反质数是一个非回文素这,逆转的时候,也是素数。 可以在OEIS上找到基于10个emirps的列表。前六个是: 13, 17, 31, 37, 71, 73 但是,由于有逆转规则,每个基地的延期都不相同。例如,前六个二进制事件是: Bin | 1011, 1101, 10111, 11101, 101001, 100101 Dec | (11 , 13 , 23 , 29 , 37 , 41 ) ...以十六进制表示,它们是: Hex | 17, 1F, 35, 3B, 3D, 53 Dec | (23, 31, 53, 59, 61, 83) 有趣的事实:一元没有小事,因为每个数字都是回文。 挑战 …

30
强盗:破解正则表达式-做蛇
这是强盗的线索。在警察的线程是在这里。 蛇形矩阵是遵循此模式的正方形矩阵: 3乘3: 1 2 3 6 5 4 7 8 9 和4比4: 1 2 3 4 8 7 6 5 9 10 11 12 16 15 14 13 您的任务是编写一个代码,该代码将使用输入n并创建这样的矩阵,并使用与警察职位相同的语言,并使用与警察的正则表达式匹配的代码。您代码的输出格式必须与警察代码的输出格式匹配。 请在警察的帖子下发表评论,表明您已破解它。 获奖标准: 获胜者将是提交量最多的用户。如果是平局,那么将有多个获胜者。

24
围绕画布的8位弹跳球
受《 Commodore 64用户指南》中此清单的启发: 10 PRINT "{CLR/HOME}" 20 POKE 53280,7 : POKE 53281,13 30 X = 1 : Y = 1 40 DX = 1 : DY = 1 50 POKE 1024 + X + 40 * Y, 81 60 FOR T = 1 TO 10 : NEXT 70 POKE 1024 …

8
可视化排序
假设我有一个列表,例如[3, 0, 4, 2, 1],并且使用选择排序对其进行排序,则可以像这样可视化它: 3,0,4,2,1 |-| 0,3,4,2,1 |-----| 0,1,4,2,3 |-| 0,1,2,4,3 |-| 0,1,2,3,4 挑战在于如何可视化排序。 输入值 您的输入将是一个正整数列表,可以使用任何您喜欢的格式。 任务 您的提交应通过一次仅交换两个元素来对输入列表进行排序,并且每次交换时,提交应显示该列表,并在要交换的每个元素下显示一个字符。如果交换的数字多于一个数字,则该字符可以位于其下方的任何位置。最后,提交内容应显示排序列表。 其他规定 排序必须使用少于n 4的交换,其中n是列表的长度。 排序不必是确定性的。 交换下的字符可以是除空格以外的任何字符。

25
空格编号
给定一个N非负整数列表,输出这些数字,每个数字用空格左填充,长度为N。(或者,返回一个字符/字符串列表。)您可以假定该N数字大于或等于列表中最大数字的位数。输出中允许尾随空格。 您也可以使用包含这些数字N的字符串,但不是字符串的长度,而是列表中元素的数量。同样,您可以获取字符串列表,例如["1", "2", "3"]。 这是一个代码高尔夫球,因此以字节为单位的最短程序获胜。 测试用例 input => 'output' 0 => '0' 1 => '1' 2 3 => ' 2 3' 2 10 => ' 210' 4 5 6 => ' 4 5 6' 17 19 20 => ' 17 19 20' 7 8 9 10 => ' 7 8 …
20 code-golf  string 

20
查找列表的“递归大小”
启发自查找列表的“展开大小”。 将RS不包含任何列表的列表的“递归大小”定义为其长度(包含的项目数),将包含任何列表的列表的“递归大小”定义为其长度与这些列表的递归大小之和。 挑战 编写一个程序或函数,以尽可能少的字节输出任何给定列表的递归大小。 输入是一个列表,可以包含数字,字符串(如果您的语言中有字符串)和类似列表。 例如: RS([]) = 0 RS([[]]) = 1 RS([4, 5, 6]) = 3 RS(["four", "five", "six"]) = 3 RS(["[[[[]]]]", "[][][][][]", "][][[[]]][]["]) = 3 RS([[4, 5, 6]]) = 4 RS([["four", "five", "six"]]) = 4 RS([["[[[[]]]]", "[][][][][]", "][][[[]]][]["]]) = 4 RS([[4], [5], [6]]) = 6 RS([["four"], ["five"], ["six"]]) …

30
显示数字时钟
显示数字时钟 (我看到时钟挑战很多,我已经尝试阅读所有挑战,我敢肯定这是独一无二的) 写一些代码,不断更新的格式显示一个数字时钟h:m:s,其中h,m和s可以占据每1个或2个字符。简单的限制如@BlueEyedBeast所说的,我基本上希望它代替显示的时间。 不允许换行 允许尾随空格 不允许其他尾随字符 不应错过任何秒数(不允许57-> 59) 允许以“ 0”开头的数字,只要它们不超过2个字符 该代码不得接受任何输入 如果您的语言在没有输入的情况下无法获取当前时间,则可以使用标准允许的方式,最多输入8个字节 输出必须是stdout 这是codegolf,所以最短的答案就是成功! 例 我正在使用一种名为*> <>(海星)的语言,因为在> <>中(例如,等待文件I / O)无法使用此类程序。这是其中一个正在工作的数字时钟程序(已取消存储)。该程序用*> <>编写: s":"m":"hnonon" "ooo88888888888ooooooooooo1S 注意:除了s =秒,m =分钟,h =小时,S =睡眠(100ms * x)之外,其他所有内容均与> <>相同。 输出: 14:44:31 每100ms更新一次,直到终止。 不允许的例子 不允许以下内容: 1: 14:44:3114:44:32 2: 14:44:31 14:44:32 3: 14:44:31 14:44:32 时间必须保留在输出的第一行上,并且没有可见的尾随字符。但是,清除终端将被允许,因为它仍然没有任何尾随字符。
20 code-golf 

5
一个显示咖啡馆分组营业时间的标志
您可能已经在各种商店的门上看到这些标志: 营业时间 周一至周五 0900-1800周日1100-1530 这里的任务是从整个星期的开放时间列表中生成一个类似的符号,将具有相同开放时间的连续天分组。请注意,一周被认为是连续的。 输入: 7个元素,代表每周从星期一开始的每天的开放时间。 每个元素都是一个字符串,格式为XXXX-XXXX 输入示例: 0900-1800 0900-1800 0930-1730 0930-1730 0900-1500 1100-1500 1100-1500 可以将输入作为数组发送(例如,如果您不从stdin中读取,则作为函数的输入) 输出: 营业时间列表,其中具有相同营业时间的连续天显示为一个范围。请注意,星期日(最后一天)和星期一(第一天)也是连续的几天。 一天的营业时间与之前或之后的日子没有类似的一天是自己打印的 将日期指定为三个小写字母:周一周二周三周四周五周日 请记住,输入中的第一个元素对应于mon,紧挨着tue等。 营业时间如输入所示 两个例子 mon-fri 0900-1800, sat-sun 1100-1500 mon-wed 1030-1530, thu 100-1800, fri-sun 1200-1630 应该对输出进行排序,以便范围按照星期几的顺序显示。最好将星期一放在首位,但由于一周结束,所以它可能不是分组中的第一位。因此,在这种情况下,周二是第一个范围。 tue-fri 0900-1800, sat-mon 1100-1500 除非连续,否则不要分组,这里星期三和星期五的开放时间相同,但是与星期四分隔开的开放时间不同,因此它们是自己列出的。 mon-tue 1000-1200, wed 0900-1500, thu 1000-1800, fri 0900-1500, sat-sun 1000-1500 …
20 code-golf 

12
KITT汽车ASCII艺术
80年代的电视连续剧《骑士骑士》采用了一种名为KITT的智能自我意识汽车。车上的一个独特的方面是安装在前部,允许KITT“看见”(这看上去扫描条形迹可疑熟悉的另一扇,早期的电视连续剧)。 如图所示,扫描仪有八盏灯: 灯光“移动”,如该动画图像所示。 正如您现在所猜到的,您的任务是使用ASCII艺术作品中的移动灯重新创建扫描仪栏。 挑战 给定一个整数t,输出该时刻扫描器栏的状态,定义如下: 扫描仪由八个灯组成。 在任何时刻,其中一个灯都处于活动状态,并显示为#。那名有时活性灯t-1和t-2现在变暗,并且被示出为+; 除非它们与当前活动的一致。其余指示灯熄灭,显示为-。 活动指示灯从左到右移动,然后从右到左移动。 每个的确切输出在t下面详细说明。 0 --> #++----- % The leftmost light is active, and it just came from the right. % The two neighbouring lights are dimmed 1 --> +#------ % The active light has bounced to the right, and it is covering …

6
进行ASCII扑克筹码堆栈安排
扑克有如何安排筹码的礼节,通常是在锦标赛中执行的-筹码可能不会因为落后于对手而被对手“隐藏”起来,主要是为了不隐藏某些大面额筹码。 挑战 我们将要使用ASCII玩扑克,因此我们需要编写一个函数或程序,给定其总值,该函数或程序将绘制ASCII芯片堆栈的排列n。 输入 -一个正整数,n(最多2**32-1应处理) 输出 -堆栈定义的ASCII表示,如下所示。 它可能在每行的右边包含空格,以使任何行都不能比最长(底部)行中可打印字符所使用的长度多一个字符。 它可能包含一条尾随的换行符;而 代表芯片的字符可以是小写,如果你喜欢。 堆栈安排将: 给定面额,包含尽可能少的筹码(请参见下文); 在“堆栈”(列)中将具有同等价值的筹码; 订购时,较短的烟囱在较高的烟囱的右边;和 进行订购,以使面额较大的筹码堆叠在等量的面额较低的堆叠筹码右边(表示它们对我们右边的对手是可见的) 芯片本身应以单独的字符表示,以标识其颜色: White : 1 = W Red : 5 = R Green : 25 = G Black : 100 = B Yellow : 500 = Y Pink : 1K = P Orange : 5K = …

4
有没有特别擅长ASCII艺术的语言?
我想知道是否有任何针对文本输出和ASCII艺术的深奥或高尔夫语言? 例如,05AB1E至少从定位基本转化开始。是否有任何针对文本输出和文本输出美术的高尔夫语言? 如果是这样,他们是否在这里有提示页,并且它们是常用的吗? 注意:我不是在寻找能够输出ASCII艺术的语言,而是在寻找一种有意设计成能够以相对简短的方式完成ascii艺术挑战的语言。

29
找到最大偏差
此问题是从最初在Quora上提出的问题(不是针对代码高尔夫球)“启发”而来的。我只想对你们挑战(这是我在这里提交的第一个问题)。 给定一个整数元素数组v和一个整数d(我们假设d小于或等于数组的长度),请考虑该数组中所有d连续元素的序列。对于每个序列,计算该序列中元素的最大值和最小值之间的差,并将其命名为偏差。 您的任务是编写一个程序或函数,以计算上述所有序列的所有偏差中的最大值,然后返回或输出该值。 解决的示例: v: (6,9,4,7,4,1) d: 3 The sequences of length 3 are: 6,9,4 with deviation 5 9,4,7 with deviation 5 4,7,4 with deviation 3 7,4,1 with deviation 6 Thus the maximal deviation is 6, so the output is 6. 这是代码高尔夫,所以最短的答案以字节为单位。

18
多键排序
给定一个索引列表和零个或多个整数列表,输出按升序排列的整数列表,键优先级来自第一个输入。 例 令键输入为[1, 0, 2],列表输入为[[5, 3, 4], [6, 2, 1], [5, 2, 1]]。这些列表需要按其第二元素,然后是第一个元素,然后是第三个元素,以升序排序: 首先,我们按index处的值排序1:[[6, 2, 1], [5, 2, 1], [5, 3, 4]] 接下来,我们使用index处的值打破第一个排序的关系0:[[5, 2, 1], [6, 2, 1], [5, 3, 4]] 最后,我们用索引处的vlues打破所有剩余的联系2(这实际上并没有改变任何东西,因为没有剩余的联系)。 细节 排序是稳定的:如果两个元素相对于给定的排序键比较相等,则它们必须在输出中保持相同的相对顺序。例如,在给定的排序键下,如果A和B相等,则输入was为[..., A, ..., B, ...],A必须放在B输出中。 排序键永远不会引用输入列表之一中不存在的元素。 不会重复排序键。因此,[1, 2, 1]不是排序键的有效列表。 排序键未引用的任何元素均不计入排序顺序。只有初始相对顺序和排序键引用的元素的值才能确定输出顺序。 您可以选择排序键是零索引还是一索引。 排序键中将没有负值。如果选择使用单索引,则排序键中也不会有零。 整数值不会超出您的语言的本机表示范围。如果您选择的语言具有本地固有的任意精度整数(例如Python)的能力,则输入整数可以存在任何整数值,但要受内存限制。 参考实现(Python 2) #!/usr/bin/env python …

25
爆炸后缀
给定一个ASCII字符串,输出它的爆炸后缀。例如,如果字符串是abcde,则有5个后缀,按从长到短的顺序排列: abcde bcde cde de e 然后,每个后缀都会爆炸,这意味着每个字符将被复制与其后缀中的一个索引位置一样多的次数。例如,展开后缀abcde, abcde 12345 abbcccddddeeeee bcde 1234 bccdddeeee cde 123 cddeee de 12 dee e 1 e 总之,的爆炸后缀abcde是 abbcccddddeeeee bccdddeeee cddeee dee e 规则 这是代码高尔夫球,因此最短的代码获胜。 输入将包含可打印的ASCII字符。(这不包括换行符,但包括空格。) 输出将每个字符串放在单独的行中。 每行都允许使用尾随空格,并且末尾可能会有多余的换行符。 测试用例 '' 'a' a 'bc' bcc c 'xyz' xyyzzz yzz z 'code-golf' coodddeeee-----ggggggooooooollllllllfffffffff oddeee----gggggoooooolllllllffffffff dee---ggggooooollllllfffffff e--gggoooolllllffffff -ggooollllfffff …
20 code-golf  string 

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.