Questions tagged «code-golf»

Code-golf是在最小的源代码字节中解决特定问题的竞赛。

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], …

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大。非递归的方法是什么,是不是递归的。

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 …

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 * …

17
XOR排序数组
给定一个键和一个字符串数组,请对该数组进行混洗,以便在每个元素与该键进行XOR运算时将其排序。 对两个字符串进行异或 要通过键对字符串进行异或,请将该键对中的每个字符值通过键中的对进行异或,以使该键永远重复。例如,abcde^123如下所示: a b c d e 1 2 3 1 2 -------------------------------------------- 01100001 01100010 01100011 01100100 01100101 00110001 00110010 00110011 00110001 00110010 -------------------------------------------- 01010000 01010000 01010000 01010101 01010111 -------------------------------------------- P P P U W 排序 排序应始终按XOR字符串的顺序进行。也就是说,1 < A < a < ~(假设ASCII编码) 例 "912", ["abcde", "hello", "test", "honk"] …

14
一条线穿过的象限
任务 给定线的表示形式,输出该线通过的象限数。 线的有效表示 您可以将一行表示为 三个有符号整数A,B和C,它们不共享公因数,其中A和B都不为零,代表行Ax + By = C, 四个符号整数,,,和,表示通过点线和,或X1Y1X2Y2(X1, Y1)(X2, Y2) 一种描述行的数据类型(如果您的语言有一种)(它必须支持垂直线)。 您可能无法采用不允许竖线的任何格式的输入(例如,截距形式)。如果你选择采取整数作为输入,你可以假设它们位于包容范围内[-127, 128]。 技术指标 输出将始终为0、2或3(一条线永远不能穿过所有四个象限,也不能只穿过一个象限)。 轴上的直线被认为不通过任何象限。穿过原点的线被认为仅穿过2个象限。 您不必返回正在通过的象限(尽管为清楚起见,测试用例包括它们)。 这是代码高尔夫球,因此最短的有效答案(以字节为单位)获胜。 测试用例 使用它们之前,您必须将它们转换为合适的格式。 1x + 1y = 1 -> 3 (quadrants I, II, and IV) -2x + 3y = 1 -> 3 (quadrants I, II, and III) 2x + -3y = …

15
“早起的鸟儿”广场
定义 如果采用正整数平方的序列并将它们连接成一串数字(即149162536496481100...),则“早起的鸟儿”平方是可以在此字符串中超出其自然位置的位置。 例如,尽管自然位置在偏移量10处,但是在字符串的偏移量2处可以找到7 2(数字49)。因此7是第一个“早起的鸟儿”正方形。 请注意,要使其被视为“早起的鸟儿”正方形,正方形中的所有数字必须出现在自然位置开始之前。与自然位置部分重叠的匹配不算在内。 a(n)是第n个正整数k,使得k 2是“早起的鸟儿”正方形。 任务 给定一个正整数n,输出a(n)。 您可以使用基于1或基于0的索引,但是如果您使用基于0的索引,请在回答中说明。 您的解决方案应至少能够处理a(53)(或如果您使用的是基于0的索引a(52))。 测试用例 n a(n) 1 7 2 8 3 21 4 25 5 46 6 97 7 129 8 161 9 196 10 221 ... 13 277 ... 50 30015 51 35000 52 39250 53 46111 参考文献 OEIS A181585

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.