编程拼图和代码高尔夫

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

10
限制跑步次数
自我限制清单 考虑包含非负整数的非空列表L。甲运行在大号是相等的元素,这是不能进行长的连续子列表。例如,[0,0,1,1,3,3,3,2,1,1]的游程为[0,0],[1,1],[3,3,3],[2 ],[1,1]。列表大号是自限性的,如果对于每个整数Ñ≥1 ,的出现次数Ñ小于或等于的运行数N-1 。上面的列表不是自限性的,因为有4次出现1,但只有一次运行0 s。 这是一个自限制列表的示例:[0,0,3,4,1,0,2,1,1,0,2,1,0,0,0,1,0]。它有 5个的运行0和5所出现的1, 4次运行1次和2次出现2次, 2个的运行2和1次的出现3, 1运行3和1出现4, 1次运行4次,未出现5次, 没有其他整数的出现。 任务 您的任务是确定列表是否是自限制的。更明确地说,您的输入应为非负整数的非空列表。如果列表是自限性的,则您的输出应为真实;否则,将是虚假的。输入和输出可以采用任何合理的格式。 每种编程语言中最少的字节数是获胜者。适用标准代码高尔夫球规则。 测试用例 真实实例: [0] [1,0] [0,1,1,0,2] [3,1,1,0,0,2,0,0] [5,0,4,1,3,0,2,2,0,1,1,1,0] [0,0,1,1,0,0,1,1,0,0,2,2,0,0] [6,0,0,0,2,2,1,0,5,0,3,4,0,1,1,1] [5,0,1,0,0,0,0,4,0,3,1,1,1,2,2,0,0,0,0,0] [4,5,1,3,2,0,5,2,0,3,0,1,0,1,0,0,0,1,0,0,1,0,3,4,4,0,2,6,0,2,6] [0,4,1,3,10,6,0,1,3,7,9,5,5,0,7,4,2,2,5,0,1,3,8,8,11,0,0,6,2,1,1,2,0,4] 虚假实例: [2] [1,1,0] [0,0,1,1,1,0,0,2] [0,1,0,1,1,2,2,3,0,0,4,6] [1,1,2,1,2,0,2,0,3,0,0,2,2,1,2,3,2,0,1,1,1,0,0,3,3,0] [3,4,1,0,0,0,5,5,0,2,2,0,0,0,0,0,2,0,1,1,0,4,3,5,4,3] [1,0,0,0,2,5,3,1,1,0,3,3,1,3,5,4,0,4,0,0,2,0,2,1,1,5,0,0,2,4,4,0,2,0,1,4,4,2,3,3,5,3,4,0,2,0,5] [4,3,1,0,0,4,6,6,1,0,1,2,1,3,0,1,0,2,0,3,4,0,2,1,1,3,0,2,2,2,0,5,5,0,5,2,5,5,0,4,3,2,3,1,1,3,5,1,4,1,6,2,6,2,4,0,4,0,4,5,3,3,0,0,6,1,0,0,0,6,2,1,0,1,2,6,2,4] [5,1,1,1,0,2,0,6,1,0,2,1,2,2,5,3,1,0,0,0,3,2,3,0,1,1,0,1,0,1,1,2,0,6,4,1,2,1,1,6,4,1,2,2,4,0,1,2,2,1,3,0,1,2,0,0,0,2,0,2,2,0,1,0,0,1,3,0,0,0,6,2,0,1,0,1,2,1,1,1,0,4,0,0,5,2,0,0,0,4,1,2,2,2,2,0,5,3,2,4,5,0,5]

14
多面体的欧拉-庞加莱特征
给定多面体的表面的三角剖分p,请计算其Euler-Poincaré-Characteristic χ(p) = V-E+F,其中V的数量是顶点E的数量,边F的数量和面的数量。 细节 顶点被枚举为1,2,...,V。三角剖分以列表形式给出,其中每个条目都是一个面的顶点的列表,以顺时针或逆时针顺序给出。 尽管有名称,但三角剖分还可以包含具有3个以上边的面。可以假定这些面是简单连接的,这意味着可以使用一个闭合的非自相交环路绘制每个面的边界。 例子 四面体:这个四面体是凸面的,具有凸面χ = 2。可能的三角剖分是 [[1,2,3], [1,3,4], [1,2,4], [2,3,4]] 立方体:这个立方体是凸的并且具有χ = 2。可能的三角剖分是 [[1,2,3,4], [1,4,8,5], [1,2,6,5], [2,3,7,6], [4,3,7,8], [5,6,7,8]] 甜甜圈:这种甜甜圈/环形形状具有χ = 0。可能的三角剖分是 [[1,2,5,4], [2,5,6,3], [1,3,6,4], [1,2,7,9], [2,3,8,7], [1,9,8,3], [4,9,8,6], [4,5,7,9], [5,7,8,6]] 双甜甜圈:这种双甜甜圈应该有χ = -2。它是通过使用上面两个甜甜圈的副本[1,2,5,4]并将第一个甜甜圈的侧面[1,3,6,4]与第二个甜甜圈的侧面标识来构造的。 [[2,5,6,3], [1,3,6,4], [1,2,7,9], [2,3,8,7], [1,9,8,3], [4,9,8,6], [4,5,7,9], [5,7,8,6], [1,10,11,4], [10,11,5,2], [1,10,12,14], …

3
语言金字塔
编写代码,以尽可能多的编程语言运行或编译,并打印以换行符分隔的先前和当前编程语言名称的列表。 每种使用的语言的名称都必须比以前的名称长1个字符;例如 C#,C++,Ruby,Jelly,Python... 每种语言都必须输出用换行符分隔的语言名称列表,并按长度排序。 输出必须为金字塔:列表只能包含使用的语言名称,该名称要比运行脚本语言名称+运行脚本语言名称短。 允许使用换行符开头和结尾。 禁止出现标准漏洞。 不允许仅仅为了增加分数而创建自定义编程语言。 版本号不计入语言名称,但是如果该语言的新版本中存在任何不兼容的更改,则可以在帖子中指定版本号。 您可以决定是要使用快捷方式来表示语言名称还是使用全名,但是您不能在一个答案中同时提交这两种形式。您可以使用ex。无论是SPL或Shakespeare Programming Language。 语言名称长度中仅包括字母,数字,ASCII符号和单个空格(不包括开头和结尾)。 例子 C,C#和C ++的示例输出: C C C# C C# C++ C C# C++

13
在那里,我用剪刀把它弄碎了
挑战 给定描述切割规则的字符串和另一个字符串,请使用第一个字符串描述的规则从第二个字符串中切出部分。 这两个字符串都将由字母a-z或组成A-Z,无论您选择哪种字母(都不必以相同的方式表示)。下面介绍了第二个字符串的修改方式: 算法 取第一个字符串,并想象用;填充不相邻(递增)字母之间的间隙=。例如abcfg=> abc==fg。然后,将两个字符串对齐,并返回第一个字符串中不等号以上的所有字符。例如,给定abcfg和qrstuvw作为输入: qrstuvw - Modify abc==fg - Modifier qrs--vw -> qrsvw 如果用等号填充后修饰符变短,则应包括第二个字符串中的所有尾随字符。如果修饰符较长,则忽略尾随字符。 不能保证修饰符会被排序。 测试用例 abcfg, qrstuvw -> qrsvw abqrs, qwertyuiopasdfghjklzxcvbnm -> qwjklzxcvbnm za, qr -> qr azazaz, qwertyuioplkjhgfdsazxcvbnmnbvcxzasdfghjklpoiuytrewq -> qmn 参考实现(用于生成测试用例)-> TIO 规则 适用标准漏洞 您可以将输入作为两个字符串,两个字符列表,一个字符矩阵等(其他可接受的合理格式) 您可以输出为字符串或字符列表(或其他一些字符串标准格式) 这是代码高尔夫球,因此每种语言的最短答案(以字节为单位)被宣布为该语言的赢家。没有答案将被接受。 任一字符串都可以为空。 高尔夫快乐! 受凯文·克鲁伊森(Kevin Cruijssen)最近的两个挑战的启发,“在那里,我用胶带 / 绳子固定了它”
15 code-golf  string 

12
这个挑战是关于递归的(警察的线程)
警察的线 在此线程中,您的任务是制作一个基于递归的程序/函数以生成任何整数序列。强盗将尝试在强盗的线程中找到较短的非递归解决方案。 挑战简介 在许多语言中,递归函数可以大大简化编程任务。但是,适当递归的语法开销可能会限制其在代码高尔夫球中的可用性。 的警察将创建一个程序或函数采取一个整数n,这将产生所述第一n整数系列的条目,只使用递归1。他们还应确保以较短的非递归方式生成序列,以将其输入标记为安全。 的 劫匪将试图找到一个更短的程序或功能相同的语言,产生相同的整数系列,不使用递归2。 如果警察在十天之内(240小时)未破解提交的文件,则警察将通过公开自己的解决方案来证明实际上有可能采用较短的非递归方法。然后,他们可以将提交的内容标记为安全。 警察挑战赛的获胜者将是最短的(根据code-golf)基于递归的标记为安全的提交。 强盗挑战的赢家将是破解最多解决方案的强盗。 1:只需要递归语法即可;您无需担心例如尾部呼叫优化。 2:同样,语法不是递归的;因此,由于尾部调用优化,您无法发布递归解决方案并将其编译为循环。 提交要求 每个提交都将使用一个整数n(从零开始或从一个开始)。然后,提交的内容将输出或返回第一个n整数选择系列项。(请注意,此整数系列不能依赖n)。输入和输出方法在递归和非递归方法之间可能有所不同。整数序列可以是长度至少为5的任何确定性序列。应该对序列进行适当的说明。 您提交的内容不必花大价钱就能工作n,但至少应该能工作n=5。非递归方法必须至少能够n与递归方法相同,或者达到n=2^15-1,以较小者为准。 递归 对于这一挑战的缘故,递归定义为创建使用所期望的序列的功能(或类似函数的构建体),其调用自身(或调用的功能的序列结束调用本身;这包括如Y组合的构建体)。递归深度应达到无穷n大。非递归的方法是什么,是不是递归的。

4
回文压缩
挑战 编写一个无损压缩和解压缩ASCII文本的程序。它应该专门用于与回文症(包括不区分大小写和标点符号不敏感的回文)一起使用。以最小的源获得最好的压缩效果。 计分 total_bytes_saved / sqrt(program_size) -最高分获胜 total_bytes_saved压缩后的字符串比原始字符串小多少字节,在下面的测试用例中总计。program_size是压缩和解压缩程序的源代码的字节大小。两者之间共享的代码只需计算一次。 例如,如果有10个测试用例,并且一个100字节的程序在7个测试用例上保存了5个字节,而在其中2个上每个保存了10个字节,但是最后一个测试用例长了2个字节,则该解决方案的得分为5.3。((7 * 5 + 10 * 2 - 2) / sqrt(100) = 5.3) 测试用例 tacocat toohottohoot todderasesareddot amanaplanacanalpanama wasitacaroracatisaw? Bob IManAmRegalAGermanAmI DogeeseseeGod A Santa at NASA Go hang a salami! I'm a lasagna hog. 规则 有标准漏洞。 压缩必须适用于所有可打印的ASCII(包括32-126字节,包括字节)文本字符串,而不仅仅是回文。但是,它实际上不必节省任何输入的空间。 输出可以是任何字节或字符序列,无论其实现方式或内部表示形式如何(例如,字符串,列表和数组都是公平的游戏)。如果编码为UTF-8,请计算字节数,而不是字符数。除非可能使用的唯一代码点在0到255之间,否则不允许使用宽字符串(例如UTF-16或UTF-32)。 不允许使用压缩/解压缩内置函数。 为了我们自己的乐趣,请将压缩的字符串与您的源代码一起发布。 更新1:将得分从更改total_bytes_saved / …

15
模数平价方
你给出的阵列甲的Ñ严格为正整数,Ñ≥2 。 您的任务是将每个条目A i映射到: 1如果甲Ĵ MOD甲我是奇数每个Ĵ使得1≤Ĵ≤Ñ和Ĵ≠我 2,如果阿Ĵ MOD甲我是即使针对每个Ĵ使得1≤Ĵ≤Ñ和Ĵ≠我 否则为0(混合奇偶校验) 例 对于A = [73,50,61],我们有: 50模73 = 50,61模73 = 61 →混 73模50 = 23,MOD 61 50 = 11 →所有奇数 73模61 = 12,50 MOD 61 = 50 →所有偶数 因此,预期输出为[0,1,2]。 规则 您可以使用任何三个不同的值(任何类型),而不是0,1和2,因为他们是一致的,只要。如果您未使用挑战中所述的映射,请指定映射。 如果对此有任何疑问,则零为偶数。 这是代码高尔夫球,因此最短答案以字节为单位! 测试用例 [ 1, 2 ] --> [ 2, 1 ] …

6
字符串复制器
在Vim中,您可以在命令前加上一个数字来重复该命令,例如3dd等效于dd dd dd。嗯,这种重复模式不限于Vim命令。字符串也可以用这种方式复制。 规格: 给定一个仅包含数字,字母字符(大写和小写)和空格的字符串,并带有可选的尾随换行符作为输入,编写一个程序来完成以下任务: 每个“单词”由数字和字母组成。如果字母前面带有数字(数字中可能有多个数字,或者数字为零),请在给定的时间重复该字母。例如: a2bc -> abbc 3xx1yz -> xxxxyz 10ab0c0d0e -> aaaaaaaaaab # No 'cde' because there's a zero 2A2a2A2a -> AAaaAAaa 单词之间用空格隔开。每两个相邻的词之间最多有一个空格。 容易吧?这是其他东西: 如果空格前有数字,请在给定的时间重复下一个单词。该数字将始终附加在前一个单词的末尾或字符串的开头。例: a2bc3 2d -> abbc dd dd dd 3 3a -> aaa aaa aaa 33a -> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0 abcd0 efgh3 2x -> xx …
15 code-golf  string 

6
赫斯基打高尔夫球的秘诀
Husk是由PPCG用户Leo和Zgarb创建的一种非常新的高尔夫语言。它已经开始变得越来越有竞争力,经常保持紧密甚至击败那些非常简洁的语言,例如Jelly和05AB1E。 让我们列出一些特定于Husk的高尔夫技术。与往常一样,请为每个答案发布一个提示。
15 code-golf  tips 

19
从第一个“ n”数字取零
挑战 面临的挑战是编写一个代码,该代码以正整数“ n”作为输入,并显示所有可能的方式来写入从1到n的数字,并在两者之间使用正号或负号,以使它们的总和为等于零。请记住,您只能使用加法或减法。 例如,如果输入为3,则有两种方法使总和为0: 1+2-3=0 -1-2+3=0 请注意,数字是有序的,从1到n(在这种情况下为3)开始。从示例中可以明显看出,第一个数字的符号也可以为负,因此请小心。 现在,3非常简单。让我们在考虑数字7时列出所有方式。 1+2-3+4-5-6+7=0 1+2-3-4+5+6-7=0 1-2+3+4-5+6-7=0 1-2-3-4-5+6+7=0 -1+2+3+4+5-6-7=0 -1+2-3-4+5-6+7=0 -1-2+3+4-5-6+7=0 -1-2+3-4+5+6-7=0 因此,在这里,我们总共有8种可能的方式。 输入输出 如前所述,输入将为正整数。您的输出应包含所有可能的方法,使数字总和为零。万一没有办法做同样的事情,您可以输出任何您喜欢的东西。 另外,您可以按自己喜欢的任何格式打印输出。但是,这应该是可以理解的。例如,您可以按照上面的示例进行打印。或者,您可以只按顺序打印数字的符号。否则,您也可以按顺序打印“ 0”和“ 1”,其中“ 0”显示负号,“ 1”显示正号(反之亦然)。 例如,您可以使用以下方式表示1 + 2-3 = 0: 1+2-3=0 1+2-3 [1,2,-3] ++- 110 001 但是,为简单起见,我建议使用前三种格式中的任何一种。您可以假定所有输入均有效。 例子 7 -> 1+2-3+4-5-6+7=0 1+2-3-4+5+6-7=0 1-2+3+4-5+6-7=0 1-2-3-4-5+6+7=0 -1+2+3+4+5-6-7=0 -1+2-3-4+5-6+7=0 -1-2+3+4-5-6+7=0 -1-2+3-4+5+6-7=0 4 -> 1-2-3+4=0 …

1
战略消失者
这篇帖子是从此mathoverflow帖子大致上受到启发的。 消失是Conway人生游戏中任何一种模式,只要经过一步,它就会完全消失。例如,下面的图案是9号Vanisher。 Vanishers的一个有趣特性是,只需添加更多活细胞,任何图案都可以变成一个消失的图案。例如,以下图案可以完全像这样消失在图案中 但是,我们可以通过添加更少的活细胞来将该图案制作成Vanisher。 您的任务是编写一个为我们完成此任务的程序。给定一个模式作为输入查找,并输出一个包含输入的消失模式。您不必仅找到有效的模式就找到最佳模式。 计分 要对您的程序评分,您将必须在所有大小为6的息肉小程序上运行该程序(不能对相等的对称情况进行两次计数)。 这是一个在每个行中包含每个倍增子的pastebin。一共有524个。它们表示为六个坐标的列表((x,y)元组)每个是活动单元的位置。 您的分数将是为使所有这些息肉变成Vanishers而添加的新细胞总数。 领带 对于平局,我将提供要运行的程序的大小为7的息肉列表。 IO 我希望IO非常灵活,可以采用合理的格式进行输入和输出,但是您可能希望采用与我提供的原始输入数据相同的格式进行输入。您的格式在多次运行中应保持一致。 定时 您的程序应在合理的时间内在合理的计算机上运行(大约<1天)。我并不会真正执行太多,但是我希望我们都玩的很好。

17
或者移动2D阵列的列和行
目的 给定任意大小的2D数组,编写程序或函数以交替移动列和行 例 a b c d e f g h i j k l m n o 第一列中的所有元素向下移动一行,第二列中的所有元素向上移动一行,第三列中的所有向下移动一行,依此类推,当它们到达边缘时会自动换行。 k g m i o a l c n e f b h d j 在所有元素第一行移位到右侧时,第二向左侧,所述第三至右等,包装,当他们到达边缘。 o k g m i l c n e a j f b h d …

9
寻找我最喜欢的时间
我真的很喜欢遵循特定模式的时代。特别是,我喜欢所有数字都相同的时间,或者所有数字从左到右算术增加一个的时间。此外,当人们在我的时代写信时,我会感到内心的憎恨,因此所有AM / PM的废话对我来说都是死的。因此,我最喜欢的时间是: 0000 0123 1111 1234 2222 2345 为了让我省心,我需要您编写一个程序,以当前时间作为输入,两个程序都必须:(A)如果现在不是我最喜欢的时间之一,请告诉我两个程序(i)这是多少分钟从我上次最喜欢的时间开始算起,以及(ii)从现在开始我下一个最喜欢的时间发生了多少分钟;和(B)如果是现在我最喜欢的一个时代,提供了一个单一的“信号值”。 输入值 您的程序应采用以下任何一种stdin格式接受(通过任何方法:函数参数,命令行参数等)当前时间。 四位数的时间作为字符串 可以在左边补零的整数,以字符串形式表示四位数的时间 四个(或更少)整数的序列,其顺序使得该序列中的第一个整数是时间输入中最左边的(有效)数字(例如,0951可以有效地表示为[0, 9, 5, 1]或[9, 5, 1]) 表示0000为零长度序列是可以接受的 对于字符串输入,它只能包含数字,不能包含冒号或其他标点符号。 可以假定输入始终是24小时有效时间: HHMM,0 <= HH <= 23和0 <= MM <= 59。忽略of秒的可能性。 输出量 您的程序必须根据输入的值是否是目标时间stdout来提供(A)或(B)(功能返回等都可以)。 为一个): 提供任何合理格式的两个数值,例如: 具有合适分隔符的单字符串输出 顺序整数/字符串输出,例如,将bash两行打印到stdout: 49 34 长度为2的有序返回值,例如Python列表,C数组等: [49, 34] 值可以以任何顺序出现。例如,以下两个都是输入的有效输出1200: 49 34 34 49 但是,所有输入值的顺序和分隔符必须相同! 对于(B): …
15 code-golf  date 

7
你有一本书要写!
您在虚拟的老式印刷机上工作。为了帮助您更快地排列等宽字母,您决定制作最短的程序来帮助您。给定文本字符串和页面大小,生成并输出文本的每一页。 例子 例如,页面宽度为14,高度7和一些文本的是您的书: 14, 7, "Fruits make an extremely good snack due to their utterly scrumptious sweetness. They are also very healthy for you." +------------+ | Fruits | | make an | | extremely | | good snack | | due to | +------------+ +------------+ | their | | utterly …

11
让我倒置一棵圣诞树!
挑战 我们都知道普通的圣诞树-但是倒挂的圣诞树呢!这是一个相当容易的圣诞节主题挑战。挑战的目的是使我成为一棵ASCII颠倒的圣诞树。以下是此挑战的规则: 接受一个奇数正整数。您可以假设它始终在7和之间51。 树的底部将由以下字符组成: ___ \ / | 树的顶部(星星)将由一个组成*。 树的每一行都将使用<?>其中?任意数量-s 的格式构造。例如,如果制作一条长度5为的线,则该线应为<--->。或者,如果要画一条长度的线,那条8线应该是<------>。 这是树体的构造方法: 以n给定的奇数为输入,并创建长度为该树的线。 减去4从n并创建一个行树长度。 减去2从n并创建一个行树长度。 递减n的2。此后,除非n等于5,否则返回步骤2。 底数(请参阅步骤2),星形(请参阅步骤3)和树的每一行(请参阅步骤4和5.)均应以原始奇数输入(请参阅步骤1)为中心。宽度。 示例/测试用例 odd number inputed: 7 ___ \ / | <-----> line length -> 7 <-> line length -> 7 - 4 = 3 <---> line length -> 7 - 2 = 5 * …

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.