编程拼图和代码高尔夫

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

15
自我识别坐标
编写一个程序或函数,给定一个整数n,该程序或函数构造一个长度为n维的数组n,其中每个元素都是其自身坐标的标识符。也就是说,从一个数组开始,向其中填充n数组,其中每个n数组包含更多数组,深度为n-1。最深数组的元素是描述它们在完整数组中的位置的坐标。 一些例子,以防我的解释令人困惑。 n = 1 ["1"] n = 2 [ ["11", "12"], ["21", "22"] ] n = 3 [ [ ["111","112","113"], ["121","122","123"], ["131","132","133"] ], [ ["211","212","213"], ["221","222","223"], ["231","232","233"] ], [ ["311","312","313"], ["321","322","323"], ["331","332","333"] ] ] 在此,“ 321”表示它是第三数组第二元素的第一元素。 规则: 坐标和尺寸(n)可以为0或1索引 您可以假设n两个索引选项的位数都为10以下,以防止产生歧义 IO是灵活的。 特别是,坐标可以是数组,字符串等,只要它们清楚即可。“ 321” => [3,2,1] 输出可以是以10为底的整数,带或不带前导零。 如果需要,坐标可以相反,只要一致即可。“ 321” =>“ 123” …
27 code-golf 

24
加-乘-加序列
(相关) 给定的整数n > 1, 1)构造号码的范围n, n-1, n-2, ... 3, 2, 1并计算出总和 2)取该数量的单独的数字和计算产品 3)采取的个别数字该数目并计算出总和 4)重复步骤2和3,直到达到一位数。该数字是结果。 该序列的前20个术语如下: 3, 6, 0, 5, 2, 7, 9, 2, 7, 9, 1, 9, 0, 0, 9, 6, 7, 0, 0, 6 注意:此序列不在OEIS中。 I / O和规则 数字将很快变得非常大,因此该解决方案必须能够处理多达100,000个输入数字而不会失败(如果您的代码可以处理超过此数量的情况就可以了)。 输入和输出可以通过任何方便的方法给出。 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常用的高尔夫规则都适用,并且最短的代码(以字节为单位)获胜。 例子 n output 1234 9 3005 …

20
转换为苏州数字
苏州数字(苏州码子;又称花码)是中文十进制数字: 0 〇 1 〡 一 2 〢 二 3 〣 三 4 〤 5 〥 6 〦 7 〧 8 〨 9 〩 它们几乎像阿拉伯数字一样工作,不同之处在于,当有连续的​​数字属于该集合时{1, 2, 3},这些数字在垂直笔划表示法{〡,〢,〣}和水平笔划表示法之间交替{一,二,三}以避免歧义。此类连续组的第一位始终以垂直笔划符号书写。 任务是将正整数转换为苏州数字。 测试用例 1 〡 11 〡一 25 〢〥 50 〥〇 99 〩〩 111 〡一〡 511 〥〡一 2018 〢〇〡〨 123321 〡二〣三〢一 1234321 〡二〣〤〣二〡 9876543210 …

30
输出音符列表
这个任务很简单:编写一个程序或函数,将所有音符列表(使用英语音符名称)从A♭输出到G♯。 所有没有名称由单个字母组成的音符(例如,音乐键盘上的黑色音符)都应打印其名称两次,一次为音符尖,一次为平面音。不能输出可以用单个字母描述的尖音或平音,例如B♯(C)或F♭(E)。 这是输出示例: Ab, A, A#, Bb, B, C, C#, Db, D, D#, Eb, E, F, F#, Gb, G, G# 技术指标 程序或功能不得输入任何内容。 注释可以按任何顺序打印,也可以按我们标准I / O规则允许的任何列表输出进行打印 尖锐而扁平的Unicode符号(♯/♭)可以用b 和代替# 与往常一样,标准漏洞是被禁止的。 因为这是代码高尔夫球,所以最小的程序(以字节为单位)将获胜。

16
当心矩阵龙卷风!
矩阵龙卷风就像其他任何龙卷风一样:它由围绕中心旋转的事物组成。在这种情况下,矩阵元素代替空气。 这是矩阵龙卷风的示例: 首先,我们将矩阵切成正方形环,每个部分由距离边界相同距离的元素组成。这些部分将围绕中心顺时针旋转。在真正的龙卷风中,严重程度朝中心方向增加,矩阵龙卷风中的旋转步骤也是如此:最外面的部分(红色的部分)旋转1步,下一个部分(黄色的部分)旋转2步,依此类推上。旋转步骤是围绕中心旋转90°。 任务: 您应该接受的任务是编写一个函数或程序,该函数或程序将一个方矩阵作为输入,对其施加龙卷风效果,然后输出结果矩阵。 输入: 输入应为n其中的阶方矩阵n >= 1。无需对矩阵元素进行任何假设,它们可以是任何东西。 输出: 相同阶数的方阵,这是对输入矩阵施加龙卷风效应的结果。 例子: 订单矩阵n = 1: [['Hello']] ===> [['Hello']] 订单矩阵n = 2: [[1 , 2], ===> [[5 , 1], [5 , 0]] [0 , 2]] 订单矩阵n = 5: [[A , B , C , D , E], [[+ , 6 , …
27 code-golf  matrix 

8
贪婪的刀
iBug最近获得了由复合材料但有价值的材料制成的长条。该栏太长了,以至于iBug不能轻易将其出售以换取积分,因此他想削减它。杆由易碎的魔术材料制成,如果零件断裂,则由相同材料制成的杆的所有部分也会断裂,从而难以任意切割。 iBug希望将标尺切成尽可能多的片段。他还喜欢很短的程序和代码编程,因此对他的问题进行了抽象分析。 iBug的魔力棒表示为字符串(或者,如果愿意,可以表示为数组或字符序列),如下所示: aaabbccccccbbbaaacccccaabbbaaaaa 字符串中的每个字母代表一种魔术材料。该条始终与RegEx相匹配^\w*$,因此条中最多可以包含63种材料。“部分”是由空格分隔的任何字符的连续序列。 iBug希望您编写一个程序,如果完全删除了零个或多个字符集(用空格代替),则可以计算出他可以得到的最大部分,并告诉iBug该数字。 范例1: In: aaabbccccccbbbaaacccccaabbbaaaaa Out: 4 说明:如果b将其从工具栏中完全卸下,则iBug可以分为4个部分。他还可以通过删除b和来获得4个部分c,如下所示 aaabbccccccbbbaaacccccaabbbaaaaa # Original string aaa cccccc aaacccccaa aaaaa # Remove 'b' aaa aaa aa aaaaa # Remove 'b' and 'c' 这就是iBug可以从该栏获得的最大零件数 范例2: In: 111aa___9999____aaa99111__11_a_aa999 Result: 111aa 9999 aaa99111 11 a aa999 Out: 6 说明:通过仅删除下划线,iBug可以从条中获得6个部分,这是最大数目。 范例3: In: __________ Out: …
27 code-golf  string 

30
钻石创作者+
挑战: 给定一个整数n作为输入。创建一个等于给定数字2倍的钻石n。 输入: 输入为整数n且2 <n≤3000。 输出: 输出将是一个字符串,并且将以菱形的形式出现+,在开始时带有加法线,显示n使用+ 例子 : D(3): +++ + +++ +++++ +++++ +++ + D(5): +++++ + +++ +++++ +++++++ +++++++++ +++++++++ +++++++ +++++ +++ + D(6): ++++++ + +++ +++++ +++++++ +++++++++ +++++++++++ +++++++++++ +++++++++ +++++++ +++++ +++ + 获奖标准: 这是代码高尔夫球,因此每种编程语言的最短代码以字节为单位。

24
设定时间
想象以下可以通过箭头键控制的24小时制时钟: ╔══╗ ┌──┐ ║00║:│00│ ╚══╝ └──┘ HH mm 两次按向上箭头(↑↑)将增加当前关注的小时输入: ╔══╗ ┌──┐ ║02║:│00│ ╚══╝ └──┘ HH mm 按向右箭头(→)将聚焦其他输入。 ┌──┐ ╔══╗ │02│:║00║ └──┘ ╚══╝ HH mm 现在,按三次向下箭头(↓↓↓)将减少此输入。 ┌──┐ ╔══╗ │02│:║57║ └──┘ ╚══╝ HH mm 简而言之: 向上箭头(↑)将增加当前活动的输入。 向下箭头(↓)将减少有效输入。 右箭头(→)将焦点移至右输入。 左箭头(←)将焦点移到左输入。 上下运动将按预期的时间循环输入。 左右运动不会循环。 挑战 时钟从00:00小时输入激活开始(请参见第一个原理图)。给定输入命令列表,以HH:mm格式输出结果时间。 输入可以是字符串或列表(或等效语言),其中不同的输入方向可以是以下选项之一: ↑↓←→ udlr ^v<> 如果您的程序具有GUI,则按实际的箭头键 有标准漏洞。 测试用例 ↑↑→↓↓↓ = …
27 code-golf  date 

30
就地枚举每个相同编号的序列
给定一个严格的正整数列表,遍历每个不同的数字,并用新系列的连续索引(从零或一个开始)替换所有出现的数字。 例子 []→ []/[] [42]→ [0]/[1] [7,7,7]→ [0,1,2]/[1,2,3] [10,20,30]→ [0,0,0]/[1,1,1] [5,12,10,12,12,10]→ [0,0,0,1,2,1]/[1,1,1,2,3,2] [2,7,1,8,2,8,1,8,2,8]→ [0,0,0,0,1,1,1,2,2,3]/[1,1,1,1,2,2,2,3,3,4] [3,1,4,1,5,9,2,6,5,3,5,9]→ [0,0,0,1,0,0,0,0,1,1,2,1]/[1,1,1,2,1,1,1,1,2,2,3,2]

27
解析C ++ 14整数文字
根据http://en.cppreference.com/w/cpp/language/integer_literal,整数文字包含一个十进制/十六进制/八进制/二进制文字和一个可选的整数后缀,这显然是完全不必要的,浪费了宝贵的字节,并且在此挑战中未使用。 十进制文字是a non-zero decimal digit (1, 2, 3, 4, 5, 6, 7, 8, 9), followed by zero or more decimal digits (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)。 八进制文字是the digit zero (0) followed by zero or more octal digits (0, 1, 2, 3, 4, 5, 6, 7)。 …

3
一个正则表达式,用于匹配三个连续整数,前提是第三个整数是前两个整数的和
当且仅当最后一个整数是前两个整数的和时,编写一个正则表达式,该表达式与给定的字符串匹配,该字符串由三个非负号,空格分隔的整数组成。答案可能是小数在2到10之间的任何数字系统的整数。 测试用例 这些应该失败: 0 1 2 10 20 1000 这些应该匹配: 10 20 30 28657 46368 75025 0 0 0 规则 您的答案应该由一个正则表达式组成,没有任何其他代码(可选地,使您的解决方案起作用所需的正则表达式修饰符列表除外)。您不得使用语言的正则表达式风格的功能来允许您以托管语言调用代码(例如Perl的e修饰符)。 请在回答中指定您的正则表达式风格。 这是正则表达式高尔夫,因此以字节为单位的最短正则表达式获胜。如果您的语言需要使用分隔符(通常是/.../)来表示正则表达式,请不要计算分隔符本身。如果您的解决方案需要修饰符,请为每个修饰符添加一个字节。 学分马丁·安德和jaytea的正则表达式,高尔夫规则。 我有理由相信基于Martin Ender的解决方案可以使用regex查找和递增整数。

13
打印披头士乐队的“ Hey Jude”
您的任务是编写一个程序,该程序打印从披头士乐队的歌曲“ Hey Jude”(©Sony / ATV Music Publishing LLC)的歌词中提取的四节经文: Hey Jude, don't make it bad\n Take a sad song and make it better\n Remember to let her into your heart\n Then you can start to make it better\n \n Hey Jude, don't be afraid\n You were made to go out and …

9
收起反串
在此挑战中,将为您提供字母字符串作为输入。我们将给定输入的“反字符串”定义为所有字母都颠倒的字符串。例如 AaBbbUy -> aAbBBuY 您应该编写一个程序,该程序将字符串作为输入,并搜索最长的连续子字符串,该子字符串的反字符串也是连续子字符串。这两个子字符串不应重叠。 例如,如果给您字符串 fAbbAcGfaBBagF 粗体部分将是最长的字符串反字符串对。 一旦找到该对,您的程序应将它们分别折叠成一个字符。它应该通过删除每个子字符串的除第一个字符之外的所有字符来实现。例如上面的字符串 fAbbAcGfaBBagF 会成为 fAcGfagF 然后,您的程序应重复该过程,直到最长的字符串反字符串对为单个字符或更短。 例如,使用相同的字符串,折叠后的新最长对是 fAcGfagF 所以我们再次折叠字符串 fAcGag 现在该字符串无法再折叠,因此我们应将其输出。 如果候选对之间是平局(例如AvaVA),则您可以减少(AaA或AvV,但不能Aa)。 这是代码高尔夫球,因此答案将以字节计分,而字节数越少越好。 测试用例 fAbbAcGfaBBagF -> fAcGag AvaVA -> AaA / AvV QQQQQQQ -> QQQQQQQ fAbbAcQQQQaBBacqqqqA -> fAbcQBcq gaq -> gaq fAbbAcGfaBBagFaBBa -> fcGaBBag 动机 尽管这个问题似乎是任意的,但实际上是我在编写代码以处理基本面时遇到的问题。该过程可以用于将基本多边形减小为较小的n边。我试了一下之后,以为会打一点高尔夫球。

10
抽象重写挑战(警察)
这有点像打高尔夫球般的警察和强盗挑战。这是警察的线索;强盗的话题就在这里。 警察 您的任务是定义一个抽象重写系统,在该系统中很难确定一个单词与另一个单词的可及性。您将准备以下内容: 一组符号,称为字母。(您可以为此使用任何Unicode字符,但是请不要使用空格或难以区分的符号。) 一个源字符串组成的从字母符号。 一个目标字符串组成的从字母符号。 一组使用字母字符的重写规则。(有关重写规则的定义,请参见下文。) 证明您可以通过连续应用重写规则将源字符串转换为目标字符串的方法。该证明可能包括一个实际的重写步骤序列,或者一个数学证明证明该序列必须存在,或者一个数学证明证明该序列不存在。 您将发布其中的前四个,并保持证据保密;强盗将通过提供自己的证据来证明您的目标字符串是否可以从源字符串到达​​,从而试图破解您的答案。如果您在两周内未对提交的内容进行破解,则可以将其标记为安全并在证明中进行编辑。 提交内容将根据其重写规则中的字符数以及其源字符串和目标字符串进行评分,如下所述。获胜者将是得分最低的完整作品。 什么是重写规则? 重写规则只是字母表中的一对字符串。(这些字符串中的任何一个都可能为空。)重写规则的应用包括找到与该对中的第一个字符串相等的子字符串,然后用第二个字符串替换它。 有一个例子应该说明这一点: 假设字母表A,B和C; 源字符串为“ A”;目标字符串为“ C”,重写规则为 A:B B:BB B:A AA:C 那么可以通过以下方式访问目标字符串: A B (using rule 1) BB (using rule 2) AB (using rule 3) AA (using rule 3) C (using rule 4) 计分 您的分数将是 您的源字符串的长度, 加上目标字符串的长度, 加上重写规则中包含的所有字符串的长度, 每个重写规则加一个加分。 如果您使用如上所述的冒号分隔符编写重写规则,则这只是所有重写规则(包括分隔符)的总长度,加上源字符串和目标字符串的长度。分数越低越好。字母表中不同字符的数量将用于打破平局,越少越好。 …

20
这是一个三位数以1结尾的数字吗?
给定一个非负整数,以任何一致的整数为基础,返回是否为以1结尾的三位数。换句话说,该数字需要以N为底,N是大于零的整数。 规则 这是代码高尔夫球,因此最短的答案会获胜。 由于一元的行为很怪异,因此未定义输入3 10的行为。 禁止出现标准漏洞。 例子 真正: 5 73 101 1073 17 22 36 55 99 假: 8 18 23 27 98 90 88 72 68 少数大量: 46656 true 46657 true 46658 true 46659 true 46660 true 46661 false 46662 false 46663 true 46664 false 46665 true 46666 true …

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.