Questions tagged «code-golf»

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

5
从中间打印阵列
这是一个代码问题。 给定整数s和n,任务是输出长度为n的所有数组,这些数组的值从-s到s。唯一的不足是必须按以下顺序输出它们。 长度为n的全零数组。 长度为n且元素从-1到1的所有数组,不包括您之前输出的任何数组。 长度为n的所有数组,元素从-2到2,不包括您之前输出的任何数组。 依此类推,直到获得长度为n的所有数组,并包含从-s到s的元素(不包括之前输出的任何数组)。 您应该每行输出一个数组。它们可以以空格或逗号分隔。 这是一些不兼容的python代码,它们以正确的顺序输出数组/列表/元组。 import itertools s = 3 n = 2 oldsofar = set() newsofar = set() for i in xrange(s): for k in itertools.product(range(-i,i+1), repeat = n): newsofar.add(k) print newsofar - oldsofar oldsofar = newsofar.copy() print "***" 对于没有设定减法或等效减法的答案,要有额外的荣耀(和我的支持)。

1
十字架,无空
每个人都认识到井字游戏是一款已解决的游戏。但是,仅X的Misère版本提供了一个有趣的选择。 在此版本的游戏中,两名玩家都在板上玩X,并尝试避免连续三局。如果您想了解更多有关此的信息,Numberphile提供了有关此概念的精彩视频。 给定MisèreCrosses董事会,发挥最佳行动。 木板是三行,每行三个字符,分别是X或。从而: X X X XX 是有效的董事会。您可以采用任何方便的格式,只要您的输入和输出使用相同的格式即可。格式包括(但不限于):多行字符串(带有可选的尾随换行符);二维其是字符数组X或; 一维扁平化的布尔值数组,表示是否已播放每个位置。 最佳举动是通过继续最佳发挥来保证您会获胜或尽可能长时间地延长亏损的举动,它由以下规则定义: 避免连续三个。 如果您先走,请在中间玩。 如果唯一的占用空间是中间位置,请在任何剩余的空间中播放。 如果中间的正方形没有被占用,而外部的正方形被占据,则与对手的最后一局相对。 如果中间方格被占领,而外部方格被占领,则在不招致您失败的情况下,与前一步打“骑士步”(对面,翻过来)。 如果没有剩余的方格,您就可以玩剩下的方格。 [注意:在一种情况下,这已被证明不是最佳选择,但无论如何都应使用此算法。] 您可能会认为之前的所有举动都是最佳的。因此,第一个示例板不是有效输入。对手的举动可能是最优的,也可能不是最优的。 如果游戏结束(即连续三场比赛),则行为不确定。 因为这是代码高尔夫球,所以最短答案(以字节为单位)将获胜! 仅使用最佳移动的一种可能路径是: [ ] [ ] [X ] [X ] [X ] [X ] [XX ] [ ]->[ X ]->[ X ]->[ XX]->[ XX]->[ XX]->[ XX] [ ] [ ] …
10 code-golf  game 

1
连接字母
受到这款小游戏的启发。 挑战 给定网格的初始位置(始终为5x5)作为输入,如下所示: -ABCD -A--- ---C- ---BD --E-E 您需要连接字母(相同的字母在一起),删除所有空白-区域。字母将永远是A,B,C,D and E。 每对字母必须由一条可以成直角弯曲的非分支线连接(使用相同的字母表示该线)。 确保输入的每个起始字母正好2次,并且始终具有所有起始字母AE。 可以从stdin读取输入,也可以从某个函数的arg字符串中读取输入,甚至可以从数组/ matriz / chars列表中读取字符,这是最方便的编码语言方式。 因为这是代码高尔夫球,所以最短的代码以字节为单位获胜! 例 不仅每个问题都有一个解决方案,而且规则适用于所有问题(没有空格,没有分隔的字母)。并且保证输入至少具有一个正确的输出。 让我们开始连接字母A: AABCD AA--- AA-C- AA-BD AAE-E 现在,连接字母B: AABCD AAB-- AABC- AABBD AAE-E 现在,连接字母C: AABCD AABC- AABC- AABBD AAE-E 现在,连接字母D: AABCD AABCD AABCD AABBD AAE-E 最后,字母E: AABCD AABCD AABCD AABBD AAEEE …
10 code-golf 

7
罗马数字线段
编写一个程序或函数,接受一个范围为1..3999的整数作为输入,并返回用标准罗马数字表示该整数所需的线段数(因此,您将使用XL,但不使用VM)。例子: 1 -> 1 4 -> 3 5 -> 2 9 -> 3 10 -> 2 40 -> 4 50 -> 2 90 -> 3 100 -> 1 400 -> 3 500 -> 2 900 -> 5 1000 -> 4 罗马数字转换建宏被允许的,但你可以通过反复从上面的列表中减去剩余数量最多的解决问题没有他们。例如:1234 = 4 +1 +1 +1 2 2 2 + …
10 code-golf 

14
反转N维数组
细节 编写一个函数或程序,给定一个仅包含整数的数组(或列表),该函数或程序将返回或输出一个反转了所有子元素的数组。也就是说,颠倒最深数组的所有元素,然后颠倒第二个最深的数组,依此类推。不必指定维度,但是函数或程序必须适用于编程语言本机格式的锯齿状数组。 例子 这个: [[1,2], [3,4]] 会变成这样: [[4,3], [2,1]] 这个: [[[ 1, 2, 3], [ 4, 5, 6], [ 7, 8, 9]], [[10,11,12], [13,14,15], [16,17,18]], [[19,20,21], [22,23,24], [25,26,27]], [[28,29,30], [31,32,33], [34,35,36]], [[37,38,39], [40,41,42], [43,44,45]], [[46,47,48], [49,50,51], [52,53,54]]] 会变成这样: [[[54,53,52], [51,50,49], [48,47,46]], [[45,44,43], [42,41,40], [39,38,37]], [[36,35,34], [33,32,31], [30,29,28]], [[27,26,25], [24,23,22], [21,20,19]], …
10 code-golf 

1
人性化的文件名检测
介绍 文件名可能千差万别,范围从简单blah.txt到303549020150514101638190-MSP0.txt。前者通常是人为产生的,而后者通常是机器产生的。拥有一个简单的功能对文件是否可以被认为是“人类友好的”做出有根据的猜测,这会很好吗? 受Eduard Florinescu的帖子启发,此帖子已被删除。他的想法很好,但只需要一点充实。 挑战 用您选择的语言编写可以接受字符串的程序或函数,并确定是否将该挑战定义为“对人类友好”。 一些进一步的细节和规则如下: 输入将是由95个可打印的ASCII字符组成的字符串。 “人类友好”应据此定义: 在考虑中不包括扩展名。扩展名定义为最后一个句号,后跟一系列字母数字字符(少至1个,最多6个)。 长度不超过一半的字符串(不包括扩展名)可以由以下定义的字符分组(组合)组成: 连续超过8个十进制字符。 连续至少16个十六进制字符(大写或小写)(必须由字母和数字组成,并且其中至少三分之一的字符是数字)。 %+=连续至少12个Base64字符(用作特殊字符)(必须由字母和数字组成,大小写混合,并且其中至少三分之一是大写字母)。 如果以上任何分组在定义上重叠(例如,符合条件的分组为base64,但连续有8位数字),请选择要排除的最长分组。 输出应该是真实值还是虚假值,具体取决于字符串是否被认为是“人类友好的”。 假设将仅使用有效输入。不用担心错误处理。 优胜者将由最短的程序/功能决定。他们将至少在7天内被选中,或者如果/足够的话,将被选中。如果出现平局,则较早的答案为准。 例子 这是您的代码应能够处理的一些输入和输出示例: "results_for__michael_greer.txt.zip" => true "Georg Feuerstein - Connecting the Dots.pdf" => true "M People - Search for the Hero-ntuqTuc6HxM.mp4" => true "index.html?v=QTR4WGVTUzFsV3d8NHxvcmlnaW5hbHx8MTExMTAxBHxodHRwOi8vLCwsLHRyLDcsMA%3D%3D.html" => false "ol2DCE0SIyQC(173).pdf" => false "d41d8cd98f00b204e9800998ecf8427e.md5" => false "12792331_807918856008495_7076645197310150318_o.jpg" …

7
污染的最后阶段
5x5的收件人内部存在病毒。我们知道它如何传播污染物,您的任务是输出污染物的最后阶段。 收件人 它将被表示为5x5的二维数组: 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 凡1指其中病毒已经被污染的位置,并且0位置不被污染。 病毒如何传播 受污染的位置不能清洁。 仅当其相邻位置中的至少两个(北,东,南和西牢房)受到污染时,清洁位置才会在下一阶段受到污染。 污染的最后阶段发生在没有更多的干净细胞受到污染的情况下。 样品 将上述接收者用作污染的第一阶段,第二阶段将是: 0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 …

9
D2高尔夫技巧
您在D打高尔夫球有哪些一般秘诀?我正在寻找可以应用于编码高尔夫球问题的想法,这些想法至少在某种程度上特定于D(例如,“删除评论”不是答案)。请为每个答案发布一个提示。
10 code-golf  tips 

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多重音色可以简化挑战。

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.