编程拼图和代码高尔夫

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

19
序数字符串检查
说明: 给定一个字符串作为输入,请检查它是否是英文的有效序数。如果有效,则返回真实值,否则返回虚假值。(由@Arnauld建议。谢谢。也由@JoKing提供) 对于想了解序数的用户,请点击此处: https://www.mathsisfun.com/numbers/cardinal-ordinal-chart.html(建议:qwr) 可能的输入: 21st ---> true 12nd ---> false 1nd ---> false .... 这是一场高尔夫挑战赛代码,因此每种语言中最短的代码将成为赢家。 例子 : console.log('12th' , true) // This evaluates to true console.log('1st' , true) // also evaluates to true console.log('21nd' , false) // returns false console.log('11st' , false) // returns false console.log('111199231923819238198231923213123909808th' , true) // …

26
万能药水句法糖
在药剂,(链接)的列表格式中的[head | tail]其中头可以是任何东西,和尾是列表的其余部分的列表,以及[]-空列表-是唯一的例外。 列表也可以写成[1, 2, 3]等价于[1 | [2 | [3 | []]]] 您的任务是按照说明转换列表。输入将始终是有效列表(在Elixir中),仅包含与regex匹配的数字\[(\d+(, ?\d+)*)?\]。您可以使用带空格的输入(每个逗号后一个空格)或不带空格的输入。输出可以带空格(每个空格前后一个空格|)或不带空格。 对于带前导零的输入,您可以不带零或带零输出。 输入必须与输出一样作为字符串(如果编写函数)。 例子 [] -> [] [5] -> [5 | []] [1, 7] -> [1 | [7 | []]] [4, 4, 4] -> [4 | [4 | [4 | []]]] [10, 333] -> [10 | [333 …

4
跨字母字符
背景 我在维基百科上看到了这个非常有趣的维恩图:https ://simple.wikipedia.org/wiki/Alphabet#/media/File: Venn_diagram_gr_la_ru.svg 它显示了俄语,希腊语和拉丁语字母之间常见的不同字母的字母(物理形状)。 挑战 给定显示的三个脚本中任何一个的输入字符串(即大写的希腊字母,西里尔字母或拉丁字母),请输出与每种语言匹配的字符串百分比。重复的字母每次都会计数。 例如,FFLURS所有字符都是拉丁字符,因此输出为FFLURS is 100% Latin, 0% Cyrillic and 0% Greek。 相反,TOX BEAM PHP完全由所有三种语言中出现的字符组成,因此输出为TOX BEAM PHP is 100% Cyrillic, 100% Greek and 100% Latin。 查找表 维恩图是以下字母的来源: 仅限拉丁文: J,G,S,D,Q,U,V,W,F,L,R 拉丁文和西里尔文: C, С 拉丁文和希腊文: I,Ι, N,Ν, Z,Ζ 希腊文和西里尔文 Φ,Ф, Π,П, Γ,Г, Λ,Л 三个都: A,B,E,O,M,K,T,X,Y,H,P (and equivalents in …

23
排序拼写清楚的序列号
给定两个或两个以上长度相等且大于2的拼写完整序列号的列表,例如 [[ "three" , "one" , "four" ], [ "one" , "five" , "nine" ], [ "two" , "six" , "five" ], [ "three" , "five" , "eight" ]] 按单词代表的数字对列表进行排序: [[ "one" , "five" , "nine" ], [ "two" , "six" , "five" ], [ "three" , "one" , "four" …

7
一维跳跃阵列迷宫
受我们启发,我们跳塔,并且与2D Maze Minus 1D相关 介绍 您的任务是找到遵循指定规则的最短路径,以摆脱阵列迷宫。 挑战 具有n个元素的一维数组a可以看作是由n个点组成的迷宫,其中索引k的点与k + a [ k ]和k - a [ k ]的点以单向方式连接。换句话说,可以向前或向后跳恰好一个 [ ķ从与索引点]步骤ķ。索引超出数组范围的点被视为迷宫之外。 为了说明这一点,请考虑以下数组, [0,8,5,9,4,1,1,1,2,1,2] 如果我们现在位于第5个元素,则由于元素为4,我们可以将第4步向前跳到第9个元素,或者将第4个步向后跳到第一个元素。如果执行后者,我们将以元素0结束,这表明不可能进一步移动。如果执行前者,由于第9个元素为2,因此我们可以选择跳到第11个元素,它又是2,然后我们可以再次跳至“第13个元素”,这超出了阵列,并认为是迷宫的出口。 因此,如果我们从中间的元素开始,一种摆脱迷宫的方法是向后跳1步,向前4步,向前2步,再次向前2步,这可以表示为array [-1,4,2,2]。另外,您也可以使用数组来表示它,该数组[4,8,10,12]记录所有中间点和最终点的从零开始的索引(也可以从1开始的索引),也可以只是符号[-1,1,1,1]。 从低折射率端逃脱迷宫也可以。 使用第一种表示法并从同一元素开始[1,1,1,2,2]也是一种解决方案,但由于不是5步而是4步,所以它不是最佳的。 该任务是找出最短路径以走出阵列迷宫并输出该路径。如果有多个最佳路径,则可以输出其中的任何一个或全部。如果没有解决方案,则应输出从有效路径中可以辨别的,由您选择的虚假值(完全不产生任何输出也是可以的)。 为了简单起见,数组中的元素数始终是奇数,我们总是从中间的元素开始。 测试用例 测试用例说明了各种形式的输出,但是您不限于这些。 Input Output [0,8,5,9,4,1,1,1,2,1,2] [-1,4,2,2] [2,3,7,1,2,0,2,8,9] [2,9] (or [2,-5] or [[2,9],[2,-5]]) [0,1,2,2,3,4,4,4,3,2,2,3,0] [1,-1,1,1] [0,1,2,2,4,4,6,6,6,6,6,4,2,1,2,2,0] [] 眼镜 您可以编写函数或完整程序。 该数组仅包含非负整数。 您可以通过任何标准格式进行输入和输出,但是请在您的答案中指定使用的是哪种格式。 这是代码高尔夫球,赢得的最低字节数。 …

14
我们跳塔
任务 给定一个非负整数数组a,请确定从数组0处“跳出”数组所需的向右跳转的最小次数,从位置0开始,或者如果不可能,则返回零/空值。 从索引的跳转i定义为最多将数组索引增加a[i]。 甲跳跃外面是一个跳转,其中从跳转结果的索引i是外的边界为阵列,所以对于基于1的索引i>length(a),以及用于基于0的索引,i>=length(a)。 例子1 考虑Array = [4,0,2,0,2,0]: Array[0] = 4 -> You can jump 4 field Array[1] = 0 -> You can jump 0 field Array[2] = 2 -> You can jump 2 field Array[3] = 0 -> You can jump 0 field Array[4] = 2 -> You can …

8
共轭排列
大小为n的排列是对前n个正整数的重新排序。(意味着每个整数出现一次且恰好出现一次)。排列可以像更改大小为n的项列表的顺序的函数一样对待。例如 (4 1 2 3) ["a", "b", "c", "d"] = ["d", "a", "b", "c"] 因此,排列可以像函数一样构成。 (4 1 2 3)(2 1 3 4) = (4 2 1 3) 这带来了许多有趣的属性。今天,我们专注于共轭。如果存在置换g和g -1(也为n),则置换y和x(均为n)是共轭的。 x = gyg-1 和GG -1等于身份置换(第一Ñ以正确的顺序编号)。 您的任务是通过标准输入法获取大小相同的两个排列,然后确定它们是否为共轭形式。您应该输出两个一致值之一,如果它们是共轭,则输出一个,如果不是,则另一个。 这是代码高尔夫球,因此答案将以字节计分,而字节越少越好。 关于共轭置换,有许多定理可供您使用,祝您好运和高尔夫愉快。 您可以将输入作为表示上述排列的值的有序容器(1-n或0-n),也可以作为接受有序容器并执行排列的函数。如果选择采用函数,则应将其作为参数,而不要使用预定义的名称。 测试用例 (1) (1) -> True (1 2) (2 1) -> False (2 …

9
清洁高尔夫技巧
您在Clean中打高尔夫球有哪些一般秘诀?请仅发布可用于一般性编码高尔夫球问题的想法,至少应针对清洁运动。 如果您从未听说过Clean,可以在这里找到更多信息。 或者,您可以加入聊天室。
17 code-golf  tips 

27
快速重新整理清单
分组会得到一个列表,并将其拆分为相等的相邻元素的新列表。例如 [1,1,2,1,1] -> [[1,1],[2],[1,1]] 如果再用这些组的长度,则会得到一个新的整数列表 [1,1,2,1,1] -> [2,1,2] 您的任务是编写一个程序,该程序采用一个正整数列表,并在结果列表包含单个元素之前找到可以对其分组和加长的次数。例如,列表[1,2,3,3,2,1]可以重新组合4次 [1,2,3,3,2,1] [1,1,2,1,1] [2,1,2] [1,1,1] [3] 这是 代码高尔夫球,因此答案将以字节计分,而字节越少越好。 测试用例 [1,2,3,3,2,1] -> 4 [1,2,3,4,5,6,7] -> 2 [1,1,1,1,1,1] -> 1 [2] -> 0 [1,2,4] -> 2 [1,2,2,1,1,2] -> 4 [1,2,2,1,1,2,1,2,2] -> 5 [1] -> 0

23
从字符串中删除重复项
受到这个朴素的StackOverflow问题的启发。 这个想法很简单;给定一个String和一个String数组,请从输入String中移除除第一个字符串之外的所有单词实例(忽略大小写),以及可能会留下的其他空白。单词必须匹配输入字符串中的整个单词,而不是单词的一部分。 例如 "A cat called matt sat on a mat and wore a hat A cat called matt sat on a mat and wore a hat", ["cat", "mat"]应该输出"A cat called matt sat on a mat and wore a hat A called matt sat on a and wore a hat" …
17 code-golf  string 

1
数Mo环
循环是一个非常简单的代数结构。它是一个元组(G,+),其中G是一个集合,+是一个二元运算符G×G→G。即+从G中获取两个元素并返回一个新元素。还要求操作员满足两个属性 取消:对于每一个和b在ģ存在唯一的X和ÿ在ģ使得 a + x = b y + a = b 身份:有一个ê在摹使得对于每一个在摹 e + a = a a + e = a 如果您熟悉组的概念,您可能会注意到循环只是一个没有关联属性的组。 循环非常简单,因此人们喜欢添加更多规则以制作更有趣的新结构。一种这样的结构是穆方循环是一个循环,还满足以下四个标识的forall X,ÿ和ž在G ^ z + (x + (z + y)) = ((z + x) + z) + y ((y + z) + x) + z = …

15
帮助我的儿子找到他的信
背景 基于我四岁的孩子从他的拉比那里得到的游戏。 “目标”是按给定顺序(例如)“查找”字母aecdb。会给您一堆字母卡片,例如daceb。您只能按给定的顺序搜索堆栈,尽管是循环的。遇到需要的信件时,可以将其取出。 目的 给定一个顺序和一个堆栈(彼此无重复排列),找到在玩游戏时看到的最高堆栈字母的序列(都是可打印的ASCII)。 分步示例 aecdb给定堆栈,我们需要找到订单daceb: 栈顶d:不是我们想要的(a),因此我们将其添加到序列:中d并旋转以获取栈:acebd。 堆栈顶部a:是的!因此我们将其添加到序列中:da并将其从堆栈中删除:cebd。 栈顶c:不是我们想要的(e),因此我们将其添加到序列:中dac并旋转以获取栈:ebdc。 堆栈顶部e:是的!因此我们将其添加到序列中:dace并将其从堆栈中删除:bdc。 栈顶b:不是我们想要的(c),因此我们将其添加到序列:中daceb并旋转以获取栈:dcb。 栈顶d:不是我们想要的(c),因此我们将其添加到序列:中dacebd并旋转以获取栈:cbd。 堆栈顶部c:是的!因此我们将其添加到序列中:dacebdc并将其从堆栈中删除:bd。 栈顶b:不是我们想要的(d),因此我们将其添加到序列:中dacebdcb并旋转以获取栈:db。 堆栈顶部d:是的!因此我们将其添加到序列中:dacebdcbd并将其从堆栈中删除:b。 堆栈顶部b:是的!因此我们将其添加到序列中:dacebdcbdb并将其从堆栈中删除:。 我们完成了。结果是dacebdcbdb。 参考实施 def letters(target, stack): string = '' while stack: string += stack[0] if stack[0] == target[0]: stack.pop(0) target = target[1:] else: stack.append(stack.pop(0)) return string print letters('aecdb', list('daceb')) 在线尝试! 测试用例 try,yrt→yrtyry 1234,4321→4321432434 ABCDEFGHIJKLMNOPQRSTUVWXYZ,RUAHYKCLQZXEMPBWGDIOTVJNSF→RUAHYKCLQZXEMPBWGDIOTVJNSFRUHYKCLQZXEMPWGDIOTVJNSFRUHYKLQZXEMPWGIOTVJNSFRUHYKLQZXMPWGIOTVJNSRUHYKLQZXMPWIOTVJNSRUYKLQZXMPWOTVNSRUYQZXPWOTVSRUYQZXPWTVSRUYQZXWTVSRUYZXWTVSUYZXWTVUYZXWVYZXWYZXYZ …

23
二进制子串
受到BMO2 2009中第四个问题的启发。 给定正整数n作为输入或参数,请返回其整数表示形式作为正整数n的块形式出现的正整数的数量。 例如13-> 6,因为二进制中的13是1101并且它具有子字符串1101, 110, 101, 11, 10, 1。我们不计算以零开头的二进制数,本身也不计算零。 测试用例 13 -> 6 2008 -> 39 63 -> 6 65 -> 7 850 -> 24 459 -> 23 716 -> 22 425 -> 20 327 -> 16 您可以输入n作为以下任意一项: 一个整数 二进制表示形式的真假值列表 二进制表示形式的字符串 以10为基数的字符串(尽管我不确定为什么有人会这样做) 使您的代码越短越好。
17 code-golf  binary 

6
删除第一个数字
我们都知道,只要有理数以十进制表示,结果要么是终止的,要么是(最终)周期性的。例如,以十进制表示41/42时,结果为 0.9 761904 761904 761904 761904 761904 761904 761904 ... 初始数字序列,0.9然后是761904一遍又一遍的序列。(对此0.9(761904),一种方便的表示法是括号括在重复数字的块中。) 您在此挑战中的目标是采用正有理数,删除重复序列中的第一个数字,然后返回结果有理数。例如,如果对41/42执行此操作,则得到 0.9 61904 761904 761904 761904 761904 761904 761904 ... 或0.9(619047)简称为101/105。 如果有理数具有一个终止的十进制扩展,例如1/4 = 0.25,则什么也不会发生。您可以将1/4 0.250000000...或视为1/4 ,0.249999999...但无论哪种情况,删除重复部分的第一位数字都不会改变数字。 细节 输入是一个正有理数,可以是代表分子和分母的一对正整数,也可以是(如果您选择的语言允许并且想要)某种有理数对象。 输出也是有理数,也可以是两种形式。如果结果是整数,则可以返回整数而不是有理数。 如果以一对数字作为输入,您可能会认为它们是相对质数的。如果产生一对数字作为输出,则必须使它们相对质数。 请注意,您要找到开始重复块的第一个数字。例如,可以将41/42写为,0.97(619047)但不会使2041/2100(带小数点扩展名0.97(190476))成为有效答案。 您可以假设在输入中,第一个周期数字在小数点后,使120/11= 10.909090909...无效输入:(其第一个周期数字可以视为0in 10)。您可以在此类输入上执行任何您喜欢的操作。 这是代码高尔夫:最短的解决方案获胜。 测试用例 41/42 => 101/105 101/105 => 193/210 193/210 => 104/105 104/105 => 19/21 1/3 …

7
电子配置
在原子物理学和量子化学的电子组态是分布的电子的的原子中原子轨道。例如,氖原子的电子构型为1s 2 2s 2 2p 6。(来自维基百科) 挑战 您面临的挑战是获取一个表示元素原子序数的数字,并输出根据Aufbau原理定义的该元素的电子构型。 铁(26)具有电子构型。但是,上标是不必要的。26的输出应该沿着1s2 2s2 2p6 3s2 3p6 3d6 4s21s2 2s2 2p6 3s2 3p6 3d6 4s2。 规格 您不必处理超出范围的任何输入1 <= n <= 118。 你的输出应该是这个样子的测试用例,但你可以(从侧面使用任何非数字字符/字符s,p,d,和f)来分隔不同的轨道。 您必须返回/打印一个包含轨道名称/值/定界符的字符串;您不能简单地返回/打印数组。 您无需处理Aufbau原则的任何例外情况;在有例外的情况下,可以打印“不正确”的配置。 例子: Input -> Valid output -> Invalid output 16 -> 1s2 2s2 2p6 3s2 3p4 -> 1s22s22p63s23p4 16 -> 1s2, …

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.