编程拼图和代码高尔夫

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

13
生成替换组合
列出所有的与大小的替换(或它们的组合与重复)的组合ķ从一组Ñ元件。 带替换的组合是一个无序的多集,其中的每个元素也都在n个元素的集合中。注意: 它是无序的。因此,不应再打印先前打印的具有不同顺序的集。 这是一个多集。同一元素可以(但不是必须)出现多次。这是替换组合与普通组合之间的唯一区别。 该集合应恰好具有k个元素。 替代地,它也是包含k次n个元素中的每一个的多集的大小为k的子集。 输入应该是n和k,其中元素是前n个正整数或非负整数,或者是n个元素和k,可以假设n个元素彼此不同。 输出应该是所有组合的列表,并用给定集合中的大小k替换。您可以按任何顺序打印它们及其每个元素。 您不能使用内置替换生成组合的内置函数。但是您可以使用内建函数来生成常规组合,排列,元组等。 这是代码高尔夫,最短的代码胜利。 例 Input: 4 2 Output: [0 0] [0 1] [0 2] [0 3] [1 1] [1 2] [1 3] [2 2] [2 3] [3 3]

4
ASCII暗星
输入说明 字符串(为获得最佳结果,所有字符应可打印且宽度相同)。 输出说明 遵循模式的字符星: 0 0 0 1 1 1 222 0123210 222 1 1 1 0 0 0 其中0,1...是字符串的后续字符。输出不一定必须是一个字符串-在控制台中逐字符打印star char很好。 例 >> star('overflow') >> o o o v v v e e e r r r f f f l l l ooo overflowolfrevo ooo l l l f …

3
我大声喊了几句话?
在《天际》中,玩家角色可以使用强大的魔法呼喊(Thu'ums)来达成目标。每个喊叫声都由三个词组成,但是,玩家可以使用前一个或两个词以更少的力量但在更短的冷却时间内达到相同的效果。 给定一个小写的ASCII Thu'um短语,不带标点或空格,则返回其中包含的幂词。 例: fusrodah -> 3 dur -> 1 kaandrem -> 2 odah -> 2 vengaarnos -> 3 输入将始终是小写的ASCII字符串,该字符串是通过以下声音之一选择的,从该声音中选择前1个,2个或3个单词,然后按顺序将这些单词串联在一起。 dur neh viir faas ru maar feim zii gron fo krah diin fus ro dah gaan lah haas gol hah dov hun kaal zoor iiz slen nus joor zah frul …

16
打印Thue-Morse序列中的差异
请注意,当我说“求反”时,我的意思是将所有的都替换为零(即按位求反) Thue-Morse序列类似于01101001 生成它的方式是: 首先从0开始。取反剩余的值并将其追加到末尾。 所以,拿0。取反并将其添加到末尾-01 然后将其取反并将其添加到末尾- 0110 等等。 另一个有趣的特性是零之间的距离会创建一个“不合理的”且不重复的字符串。 所以: 0110100110010110 |__|_||__||_|__| 2 1 0 2 01 2 <------------Print this! 您能编写一个程序,当输入n时,将输出要打印的字符串的前n位数字吗? 这是代码高尔夫,所以最短的字节数获胜!

3
查找姓名为Letter的其他会员
您可能已经看到这样的难题: 找到0: OOOOOOOOOOOOOOOOOOOO0OOOOOOOOOOOOOOOOOO 面临的挑战是编写一个程序,以找到给定图像的不同字母的索引。 输入值 输入将是Image。该图像将包括一条线的黑色文本黑体24磅。在白色背景上的字体。文本将由以下两个字符组成:一个重复的字符和一个仅出现一次的字符。例如: 输出量 输出将是Integer,是不同字符的索引。在上面的示例中,输出为4。(请注意,字符串的索引始于0) 程序规格 按照通常的代码高尔夫球赛,最短的程序获胜。 测试用例 => 10 => 11 => 5 => 16 => 10 => 21 => 20 => 13 => 11 => 4 => 7

2
视网膜高尔夫技巧
您在视网膜上打高尔夫球有哪些一般提示?我正在寻找可以应用于编码高尔夫问题的想法,这些想法至少在某种程度上是针对视网膜的(例如,“删除评论”不是答案)。请为每个答案发布一个提示。 供参考,在线编译器在此处。 @ Sp3000指出了Regex Golf的技巧。这里的答案应专门针对Retina功能,而不是一般的regex高尔夫技巧。
10 code-golf  tips 

4
写一个半喹
假设您有2种语言,A并且B。如果满足以下条件,则字符串s为准字符串:AB s是语言的奎因A。 s在一个多语种A和B。 s作为B程序运行的输出是一个不同的字符串s',它是B。 这项挑战的目标是用两种不同的语言编写一个半喹啉。这是代码高尔夫球,因此最短的代码获胜,最早的答案用作决胜局。 规则 仅接受真正的奎因。也就是说,您需要将整个源代码原样输出到STDOUT,而无需: 直接或间接阅读您的源代码。 依靠REPL环境,该环境仅评估并打印您提供给它的每个表达式。 依靠在某些情况下仅能打印出源代码的语言功能。 使用错误消息或STDERR编写全部或部分的藜。(您可以将内容写到STDERR或生成警告/非致命错误,只要STDOUT是有效的Quine,并且错误消息不属于其中即可。) 此外,您的源代码不能仅由文字(无论是字符串文字,数字文字等)和/或NOP组成。例如,`12在Jelly和Pyth中是polyglot,但在Jelly中则是NOP和数字文字,因此无效。 为了有效,可以在输出中忽略任何不可抑制的输出(例如版权声明,启动/关闭消息或尾随换行符)。 多义规则 所使用的两种语言必须明显不同。特别是: 它们不能是同一语言的不同版本(例如,Python 2与Python 3)。 它们不能是同一语言的不同方言(例如Pascal与Delphi)。 一种语言可能不是另一种语言的子集(例如C vs. C ++ 1)。 一种语言可能不是另一种语言的琐碎派生词(例如Matlab与Octave 2,brainfuck与boolfuck,TinyBF,ShadyAsFuck与所有其他琐碎的Brainfuck派生词)。 杂项规则 您可能不接受来自STDIN(或任何其他来源)的输入。如果您选择的语言必须接受输入,则输入必须为空(空字符串,通过/dev/null等管道传输),或者程序的输出不得依赖于输入。 对于这个挑战,您必须编写一个完整的程序。不允许要求其他代码来运行解决方案(例如,分配和调用解决方案中定义的lambda函数)。 1:是的,我知道C并不是C ++的真正子集。但是,它足够接近以至于可以用于多重标记的目的,因此我将其归为这一挑战。 2:就像上面的第1点一样,尽管从技术上来说Octave与Matlab并非100%兼容,但它的设计是兼容的,并且足够接近以允许使用Matlab / Octave多重音色可以简化挑战。

1
自动驾驶模式
从左上角开始的直升飞机正在降落(出于这个问题的目的,在2D空间中)朝地面。它具有自动驾驶模式和手动模式。 自动驾驶模式的行为如下: 如果正下方的空间是可用的,则下降至该位置。 否则,完全随机地向左或向右移动一步。(它可以以此方式移动多个步骤。) 并且它会不断重复这两个步骤,直到它落地。手动模式更加智能,即使在需要向上移动或进行一些熟练操作的情况下,也会找到通往地面的最佳路径。 您的工作是确定 自动驾驶仪将在给定情况下通过, 在特定情况下,自动驾驶仪可能会失败, 自动驾驶仪将失败,但是手动模式将通过,或者 两种模式都将失败(没有有效的接地路径)。 输入值 给定场景为1d或2d非空数组,使用两个不同的字符表示自由空间和受阻空间。标点符号是可选的。 可选:数组的尺寸 输出量 四个预定义字符之一,指示发生了哪种情况。 样本数据 在输入中使用0(空)和1(阻止),在输出中使用1 2 3 4(如上编号) 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 输出: 1 0 0 1 0 1 0 0 1 0 0 0 0 …

2
输出所有有效的有类公共单播IPv4地址
IPv4地址为32位宽,因此地址空间的大小为2 32或4,294,967,296。但是,这只是理论上的上限。它不能准确表示公共互联网上可能实际使用的所有地址。 出于此挑战的目的,假定所有寻址都是分类的。实际上,地址空间的有类别细分已被CIDR(无类别域间路由和VLSM(可变长度子网掩码))取代,但此挑战被忽略。 根据分类地址方案,分为3类: A类- 0.0.0.0以127.255.255.255与/8网络掩码长度 B类- 128.0.0.0以191.255.255.255与/16网络掩码长度 C类- 192.0.0.0到223.255.255.255与/24网络掩码长度 还定义了类D(多播)和E(保留),但是它们不用于公共单播地址。 根据该类别的网络掩码将每个类别细分为网络。 因此3.0.0.0就是一个A类网络的例子。对于A类网络掩码长度为8,所以对于这个网络的完整地址空间是3.0.0.0给3.255.255.255。但是,第一个地址(3.0.0.0)保留为网络地址,最后一个地址(3.255.255.255)保留为该网络的广播地址。因此可用地址的实际范围是3.0.0.1至3.255.255.254为2 24 - 2(= 16777214)总地址。 同样,200.20.30.0是C类网络的示例。对于C类网络掩码长度是24,所以该网络的完整地址空间是200.20.30.0给200.20.30.255。卸下网络和广播地址叶可用地址的实际范围是200.20.30.1至200.20.30.254为2 8 - 2(= 254)的总的地址。 可用于公共单播的地址范围还有其他限制。根据RFC 6890,不允许的范围是: 0.0.0.0/8 -本地网络 10.0.0.0/8 -私人使用 100.64.0.0/10 -共享地址空间 127.0.0.0/8 -环回 169.254.0.0/16 -本地链接 172.16.0.0/12-私人使用 192.0.0.0/24 -IETF协议分配 192.0.2.0/24 -保留供文档使用 192.88.99.0/24 -6to4中继任意播 192.168.0.0/16 -私人使用 198.18.0.0/15 -标杆管理 198.51.100.0/24 -保留供文档使用 203.0.113.0/24 -保留供文档使用 请注意,上面的列表使用VLSR网络掩码来有效地指定范围。在除一种情况外的所有情况下,给定的掩模长度在范围开始时的特异性均小于或等于正常分类掩模的长度。因此,这些VLSR范围中的每一个都等效于一个或多个分类网络。例如172.16.0.0/12等同于B类网络172.16.0.0到172.31.0.0或地址范围172.16.0.0来172.31.255.255。 …

7
广场中的广场
给定正整数的输入n,编写一个程序来完成以下过程。 找到大于n该整数的最小正整数,它是一个完美的正方形,是n和其他数的串联。的数字顺序n不得更改。级联n以产生一个完美平方的数字可以称为r_1。 如果r_1不是理想的正方形,则重复上述过程,r_1并将其作为该过程的新输入。重复直到r_k是表示的完美正方形s。 打印的值sqrt(s)。 输入可以采用任何格式。您可以假定这n是一个正整数。如果任何r_k一个具有前导零(且r_k≠0),则可以忽略零。 测试用例 这是一些测试用例。该过程演示了上述步骤。 Input: 23 Process: 23, 2304, 4 Output: 2 Input: 10 Process: 10, 100, 0 Output: 0 Input: 1 Process: 1, 16, 6, 64, 4 Output: 2 Input: 5 Process: 5, 529, 29, 2916, 16 Output: 4 Input: 145 Process: 145, 145161, 161, 16129, …

2
心不在a的语言学家
背景 您的朋友是一名语言学家,已记录并分析了各种语言的一些简单对话片段。由于心不在a,他们忘记了每个摘录使用哪种语言。您必须通过创建一个程序来分析句子结构并排除可能出现的情况,来帮助他们。 输入值 您的输入是一个非空字符串SVO,其中包含字符,分别代表subject,verb和object。它代表语言学家分析的对话摘要。 输出量 您的任务是将字符串分成多个句子,并.在每个句子后输入句点。一个句子包含一个动词,或者一个动词和一个主语,或者一个动词,一个主语和一个宾语。但是,您不知道原始语言使用的单词顺序。英语使用subject-verb-object,但是其他语言(例如拉丁语)使用subject-object-verb。实际上,所有六个排列都以自然语言存在,因此您必须检查每个排列。 您的输出应以换行符分隔的字符串包含每个适用的单词顺序,冒号:和根据该顺序分成句子的输入字符串。如果无法按某些单词顺序解析字符串,则应省略相应的行。行的顺序无关紧要,并且保证至少可以解析一个单词顺序。 例 考虑输入 VSVOSV 按VOS顺序,可以将片段的解析为VS.VOS.V.,按SVO顺序,可以将其解析为V.SVO.SV.。该命令OSV也有效,完整的输出为 VOS:VS.VOS.V. SVO:V.SVO.SV. OSV:V.SV.OSV. 规则和计分 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。允许使用正则表达式和所有内置函数。 测试用例 Input: V Output: VSO:V. VOS:V. SVO:V. OVS:V. SOV:V. OSV:V. Input: SVV Output: SVO:SV.V. SOV:SV.V. OSV:SV.V. Input: VSVOV Output: SVO:V.SVO.V. Input: VSOVS Output: VSO:VSO.VS. OVS:VS.OVS. Input: SVOSV Output: SVO:SVO.SV. OSV:SV.OSV. Input: VSVOSV Output: VOS:VS.VOS.V. …

6
从句子中删除重复的单词
在这个挑战中,您将从每个句子中删除重复的单词。 例子 Hello Hello, World! Hello, World! Code Code! Golf Code Code! Golf Code Hello hello World Hello World Programming Golf Programming! Programming Golf! 规格 输入将是一串ASCII字符。 句子定义为字符串末尾的任何内容,换行符(\n)或标点符号(.!?)。 单词定义为的序列A-Za-z。 单词不区分大小写(Hello== heLlO)。 仅保留单词在句子中的首次出现。 如果删除了一个单词,则应删除删除的单词之前的空格。(例如A A B-> A B)。 与往常一样,不允许出现标准漏洞。 这是代码高尔夫球,因此以字节为单位的最短代码胜出!
10 code-golf  string 

1
计算月相
介绍 tl; dr 在此挑战中,您必须计算给定日期的月相。 这项挑战的灵感来自游戏 心理社交视听实验 “ Superbrothers:Sword&Sworcery EP ”。在S:S&S EP中,月亮的阶段对冒险的结果很重要,因为某些事件仅在特定的时间点发生。 问题是:在特定日期出现哪个月相。每个主要阶段-从新月到第一季度到满月到第三季度-大约需要7.38天。整个月球周期大约为29.52天。基于这些值,存在各种计算方法。1个 输入值 基于公历的日期,在1970年1月1日至2116年12月31日之间。 您可以选择以下格式之一:yyyy-mm-dd,dd.mm.yyyy,dd/mm/yyyy,yyyymmdd或ddmmyyyy。 输出量 [0-7]根据此零索引数组输出月相索引: ['New moon', 'Waxing crescent', 'First quarter', 'Waxing gibbous', 'Full moon', 'Waning gibbous', 'Third quarter', 'Waning crescent`] 要求 您可以编写程序或函数。如果您使用匿名函数,请提供一个如何调用它的示例。 STDIN命令行参数,函数参数或最接近的等效参数都接受输入。 这是代码高尔夫球,因此最短答案以字节为单位。 不允许使用内置的或外部的库来计算月相。2 不允许出现标准漏洞。 测验 值是: date | index of the phase | illumination | …

1
数字时钟比赛拼图
有很多带有匹配项的难题,包括添加,删除或移动一定数量的匹配项以创建新的数字或形状。就像使用数字时钟一样。 给定12小时数字时钟上的有效时间,请输出需要移动最少行的数字,以使时钟上的每个可见数字都变为该数字。如果最小位数多于一位,则全部输出。如果不可能使每个数字都相同,则输出-1或输出非0的虚假值(您会得到很多)。 时钟数字如下所示: | | _ _| |_ _ _| _| |_| | _ |_ _| _ |_ |_| _ | | _ |_| |_| _ |_| _| _ | | |_| 测试用例: 输入: 123 时钟显示: _ _ | : _| _| | : |_ _| 输出: 4 说明:的显示1:23要求总共绘制12条线。因此,对于每个数字都相同,每个数字必须具有4行。仅有4行的数字是4。因此,答案必须是4。 输入: …

4
凸包中的点(2D)
背景 有限数量点的凸包是包含所有点的最小凸多边形,无论是顶点还是内部。有关更多信息,请参见有关PGM的问题,该问题定义得很好。 输入值 N+1N >= 3通过STDIN以下格式的2-D坐标()(也允许其他常见的高尔夫输入)(小数位数可以变化,但是您可以假定它保持“合理”,并且每个数字都可以表示为浮点数): 0.00;0.00000 1;0.00 0.000;1.0000 -1.00;1.000000 输出量 STDOUT如果列表中的第一个点((0.00;0.00000)在上面的示例中)位于其他N个点的凸包中,则打印到(或等效)真值(否则为等价)。 这是代码高尔夫球,因此以字节为单位的最短解决方案为准。 边界案例:如果该点位于凸包的边界上(例如,在壳的外部边界的一侧或顶点上),则可以返回任何值(但不会崩溃),因为该概率为零事件(以任何合理的概率)。 禁止使用:仅用于解决几何问题的任何内容(语言,运算符,数据结构,内置或包)(例如Mathematica的ConvexHull)。允许使用通用数学工具(矢量,矩阵,复数等)。 测验 应该返回TRUE:spiralTest1-TRUE,squareTest1-TRUE 应该返回FALSE:spiralTest2-FALSE,squareTest2-FALSE

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.