Questions tagged «code-golf»

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

8
跳阵列!
让我们玩一个名为“ 跳数组”的单人游戏。要播放,您只需要一个整数数组,例如a。您从某个位置开始i,然后在每个转弯处都跳到一个新位置。反过来n, 如果n是偶数,则跳至绝对位置a[i] mod length(a), 如果n是奇数,则跳到相对位置(i + a[i]) mod length(a)。 数组索引从零开始。您可以将第一个跳跃算作turn 0或turn 1,这会带来不同的游戏。由于游戏的状态空间是有限的(您的举动取决于您的位置和回合数的奇偶性),因此您最终将进入一个长度均匀的循环。loop(a, i, b)当第一个跳转被计为turn时,由该循环的长度表示b。 输入项 一个非空a整数数组,用于玩游戏。 输出量 这样的最大数量p,当从某个位置开始i并将第一圈计算为0或时1,您最终会进入一个长度循环2 * p。换句话说,您的输出是数字 max { loop(a, i, b)/2 : i in [0 .. length(a)-1], b in [0,1] } 规则 您可以提供功能或完整程序。最小的字节数获胜,并且不允许出现标准漏洞。 测试用例 [0] -> 1 [-213] -> 1 [1,3,12,-1,7] -> 1 [2,3,5,7,9,11,13,17,19] -> …

11
在编号的多维数据集上输出面
您可以根据需要将数字0到7分配给多维数据集的8个顶点。必须为每个顶点分配一个确切的数字。 例如,您的顶点可能像这样分配: 3-----1 /| /| 4-----2 | | | | | | 5---|-0 |/ |/ 6-----7 编写一个使用0到5之间的整数的程序。这6个数字中的每个数字都以您喜欢的任何方式与立方体的一个面相关联。输入这些数字之一时,必须将相关面的4个顶点数字以2×2平方的数字打印到标准输出。该面应从立方体外部直接观看。所有4个面旋转都是有效的。 例如,如果0与上面的示例多维数据集的正面相关联,则这将是input的有效输出0: 42 67 可以在任何90°旋转角度下观看人脸,因此这些也是有效的: 27 46 76 24 64 72 此输出(及其旋转)无效,因为它们是从人脸的错误侧面看的: 24 76 同样的想法也适用于所有其他面孔。例如,如果1与背面相关联,则输入1可能会产生输出13[newline]05(并且31[newline]50将是无效的)。 因此,真正的挑战是选择顶点数和旋转度,以便将输入转换为其4个顶点数既简单又简短。 以字节为单位的最短代码获胜。Tiebreaker是较早的帖子。(方便的字节计数器。) 笔记 您可以编写函数而不是程序。它应该是0到5之间的整数,并打印或返回2×2位数的网格字符串。 从标准输入,命令行或函数arg中获取输入。您可以假设输入有效。 输出可以选择包含尾随换行符。 请务必告诉我们您选择的顶点和面数。

13
谢尔宾斯基层
首先,/\您可以通过在下面添加一条线来创建类似于Sierpinski三角形的图案,从而... 任何松散的分支/或\再次分裂为两个分支:/\。 分支的任何碰撞都将\/死,其下无任何东西(只有空格)。 重复这些规则将产生 /\ /\/\ /\ /\ /\/\/\/\ /\ /\ /\/\ /\/\ etc... (ViHart的启发) 编写一个程序或函数,该程序或函数接受一个正整数N,并将此模式的前N行打印到stdout,且前导或尾随空格不超过所需数量。 例如,如果输入是1输出,则必须为 /\ 如果输入是2输出,则必须为 /\ /\/\ 如果输入是8输出,则必须为 /\ /\/\ /\ /\ /\/\/\/\ /\ /\ /\/\ /\/\ /\ /\ /\ /\ /\/\/\/\/\/\/\/\ 等等。 字节最少的代码获胜。

11
每日随机高尔夫#3:整数分区
关于系列 首先,您可以像对待其他任何代码高尔夫挑战赛一样对待它,并回答它而不必担心系列赛。但是,在所有挑战中都有排行榜。您可以在第一篇文章中找到排行榜以及有关该系列的更多信息。 尽管我在本系列中有很多想法,但未来的挑战还没有定下来。如果您有任何建议,请在相关的沙箱帖子上让我知道。 漏洞3:整数分区 时间增加了一点难度。 甲分区正整数n被定义为正整数,其总和的多集n。例如,如果n = 5存在,则存在以下分区: {1,1,1,1,1} {2,1,1,1} {2,2,1} {3,1,1} {3,2} {4,1} {5} 请注意,这些是多集,因此它们没有顺序{3,1,1},{1,3,1}并且{1,1,3}都被认为是相同的。 给您的任务是n生成的随机分区n。以下是详细规则: 产生的隔板的分布必须均匀。也就是说,在上面的示例中,应该以1/7的概率返回每个分区。 当然,由于PRNG的技术局限性,不可能实现完美的均匀性。为了评估您提交的文件的均匀性,以下操作将被视为产生完全均匀的分布: 从PRNG(在任何范围内)获取一个数字,该数字被证明是(近似)统一的。 通过取模或乘法(或一些其他将值均匀分配的运算)将较大的一组数字的均匀分布映射到较小的一组。较大的集合必须包含至少为较小集合的1024倍的可能值。 由于分区是多集,因此您可以按任何顺序返回它们,并且此顺序不必一致。但是,出于随机分布的目的,顺序被忽略。也就是说,在上面的示例中{3,1,1},{1,3,1}和{1,1,3} 一起返回的概率必须为1/7。 您的算法必须具有确定性的运行时。特别是,您不能生成随机多集,如果它们的总和不等于,则拒绝它们n。 您算法的时间复杂度必须是中的多项式n。特别是,您不能简单地生成所有分区并选择一个随机分区(因为分区的数量与呈指数增长n)。您可能会假设您使用的PRNG可以返回每个值O(1)中的均匀分布值。 您不得使用任何内置函数来解决此任务。 您可以编写完整的程序或函数,并通过STDIN或最接近的替代方案,命令行参数或函数自变量接受输入,并通过返回值或打印到STDOUT(或最接近的替代方案)产生输出。 您可以假定n ≤ 65(这样分区的数目小于2 21)。输出可以采用任何方便,明确的列表或字符串格式。 如果您提交功能,请考虑还提供一些测试程序,该程序会多次调用该功能并打印结果。如果必须在代码中调整参数,则可以。这样做是为了使人们可以检查解决方案至少近似均匀。 这是代码高尔夫球,因此最短的提交(以字节为单位)获胜。当然,每位用户最短的提交时间也将进入该系列的整体排行榜。 排行榜 该系列的第一篇文章将产生一个排行榜。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头每个答案: # Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,则可以通过打败旧分数来保持标题。例如: # Ruby, <s>104</s> <s>101</s> 96 bytes (目前未显示该语言,但是该代码段确实需要并对其进行解析,并且将来我可能会添加一个语言排行榜。)

8
广义奎因发生器
挑战 在此挑战中,您将指定源语言 S和目标语言 T。您的任务是P用该语言编写以下程序S。如果输入了有效Q语言的程序T作为输入P,它将以有效R语言T输出没有输入和输出的有效程序Q(R),即Q应用于的源代码的程序R。此外,您应该在答案中提供一个简单的示例程序Q(越有趣,越好,尽管您对此没有得分),结果程序R以及的输出R。这是代码高尔夫球,因此是P获胜的最短代码。 换句话说,这对于编写一个可以创建任意类型的广义quines的“通用quine构造函数”是一个挑战。 澄清说明 您的源语言和目标语言可能相同。 程序P应采用一个字符串作为输入(来自STDIN或等效的字符串),并输出一个字符串(至STDOUT或等效字符串),每个输出程序也应如此R。 输入程序Q还应该将一个字符串转换为另一个字符串,但是它们的形式更加灵活:它们可以是字符串到字符串的函数,可以使用特定名称修改变量的代码段,可以使用目标语言来修改数据堆栈的代码段有一个,等等。您还可以Q通过声明例如可能不包含任何注释来进一步限制的形式。但是,您必须能够将任何可计算的字符串到字符串函数实现为输入程序Q,并且必须明确说明它们的功能以及对它们施加的进一步约束。 输出程序R实际上应该是一个(通用的)quine,所以除非Q这样做,否则它不得读取任何输入(用户输入,文件等)。 不允许出现标准漏洞。 一个例子 假设我选择Python作为源语言,选择Haskell作为目标语言,并且进一步要求输入程序应该是String -> String名为的函数的单行定义f。如果我提供反向字符串程序 f x = reverse x 作为我的Python程序的输入P,它将输出另一个Haskell程序的源代码R。该程序将的源代码打印到STDOUT R,但相反。如果P赋予身份功能 f x = x 作为输入,输出程序R是一个quine。

30
字符串到二进制
这是代码高尔夫挑战赛。就像标题所说的那样,编写一个程序来将一串ascii字符转换为二进制。 例如: "Hello World!" 应该变成 1001000 1100101 1101100 1101100 1101111 100000 1010111 1101111 1110010 1101100 1100100 100001。 注意:我对pyth实现特别感兴趣。

3
抽出ASCII纸牌
考虑以下15种ASCII 纸牌模式(从王牌到百搭,从背面),其中西服符号X的占位符是:(它们看起来更好,行间距更小) ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- |AX | |2X | |3X | |4X | |5X | |6X | |7X | |8X | |9X | |10X | |JX | |QX | |KX | |J | |* * * * * …

7
组织格里高利教堂的音乐
那是930年,而格里高利教堂遇到了问题。他们有数千页的诵经音乐,但是问题是所有乐谱都被简单地堆放了起来,而不是拥有任何实际的组织系统: 由制图者协会的用户gamerprinter提供。 教堂需要组织所有乐谱,因此他们聘请了一位中世纪软件工程师来编写程序来为他们组织音乐。您是已雇用的软件工程师。但是,中世纪的编译过程需要由一群缓慢的圣经抄写员将程序写在纸上。为了减少抄写员团队编译代码所花费的时间,您必须使程序尽可能小。 教会希望根据他们所写的音阶来组织圣歌。教会的所有圣歌都以多利安音阶来编写。给定特定音乐的音符,您的程序将输出它所在的Dorian音阶。在这里,我将确切解释Dorian音阶是什么。如果您已经知道,则可以跳过本节。 任何旋律中都有12种可能的音符。在这里,它们按顺序排列: C C# D D# E F F# G G# A A# B 一个半音(用表示S)正在向右增加一个步骤,环绕(所以从B向上的半音将回到C)。甲色调(使用表示T)是两个半音。例如,从F#开始的半音为G。从F#开始的半音为G#。 要创建多利安音阶,我们从列表中的任何音符开始,然后按照以下模式向上移动,列出遇到的音符: T, S, T, T, T, S 一个例子。我从A开始。Dorian音阶的音阶变成: A B (up a tone) C (up a semitone) D (up a tone) E (up a tone) F# (up a tone) G (up a …
19 code-golf  music 

6
运行第N个字符可获得N
编写尽可能短的程序,这样,当您将第一个字符和其后的每个第N个字符组合到一个新程序中时,输出为N。这必须适用于N = 1、2,...,16。 换句话说,如果从程序中删除除第一个字符外的所有字符,然后再去除第N个字符,则其余代码的输出应为N。 例 如果您的代码是 ABCDEFGHIJKLMNOP N = 1导致ABCDEFGHIJKLMNOP。运行该命令应输出 1。N = 2导致ACEGIKMO。运行此命令将输出 2。N = 3得出结果ADGJMP。运行此命令应输出 3。N = 4将得出AEIM。运行此命令将输出4。N = 5导致AFKP。运行此命令应输出5。N = 6得出结果AGM。运行此命令应输出6。N = 7得出结果AHO。运行该命令应输出7。N = 8导致AI。运行此命令应输出8。N = 9得出AJ。运行此命令应输出9。N = 10的结果为AK。运行此命令应输出10。N = 11得出结果AL。运行它应该输出11。N = 12结果AM。运行此命令应输出12。N = 13得出结果AN。运行此命令应输出13。N = 14得出结果AO。运行此命令应输出14。N = 15得出结果AP。运行此命令应输出15。N = 16的结果为A。运行它应该输出16。 细节 允许所有字符,包括ASCII和非ASCII。(还允许使用换行符和不可打印的ASCII。请注意,回车和换行符应作为不同的字符计数。) 分数是未更改程序的长度(以字符为单位)(例如15)。最低分获胜。 分数低于16显然是不可能的,因为那时至少有两个更改过的程序是相同的。 输出可能是文件或stdout或其他任何合理的结果。但是,这16个不同程序的输出必须全部转到相同的位置(例如,如果AO转到stdout而不是A转到文件,则不可以)。没有输入。 输出必须为十进制,而不是十六进制。实际输出应仅包含1或2个字符,这些字符构成从1到16的数字。(像Matlab这样的东西ans =都可以。) …

30
创建具有重复数字的数组
挑战 这个问题的任务是编写一个程序或一个命名函数,该程序或命名函数采用一个正整数n(大于0)作为通过STDIN,ARGV或函数参数的输入,并通过STDOUT或函数返回值输出一个数组。 听起来足够简单?现在这是规则 该数组将仅包含从1到的整数n 从1到的每个整数n应重复x一次,其中x是每个整数的值。 例如: 输入: 5 输出: [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5] 数组可以排序也可以不排序。 这是代码高尔夫球,因此获胜者是最短的代码(以字节为单位)。 奖金 0.5如果输出数组中没有两个相邻的整数相同,则将您的分数乘以。 例如n = 5,一种这样的配置是 [5, 4, 5, 4, 3, 4, 5, 2, 5, 3, 1, 2, 3, 4, 5]

20
生成乌兰数
给定一个整数n(where n < 10001)作为输入,编写一个程序,该程序将输出第一个n Ulam数字。Ulam编号定义如下: U 1 = 1,U 2 = 2。 对于n > 2,U n是大于U n-1的最小整数,U n-1以正好一种方式是两个不同的较早项的总和。 例如,U 3是3(2 + 1),U 4是4(3 + 1)(请注意,(2 + 2)不计入条件,因为术语没有区别),而U 5是6,(U 5不是5因为5可以表示为2 + 3或4 + 1)。以下是前几个Ulam数字: 1, 2, 3, 4, 6, 8, 11, 13, 16, 18, 26, 28, 36, 38, 47, 48, 53, …

3
ASCII水厂
介绍 考虑一个字符网格,f A\/例如 f f f A A / \ \ / A A \/ / \/ 哪里: f 代表向下方倒水的水龙头 A 将上面的水分叉,所以正好有一半左,右又有一半 \ 将水流向右上方移动一个单位 / 将上方的水流向左移动一个单位 组合\/产生了一个容量无限的槽,可以收集上方的水流 [space] 是空荡荡的空间,水无法通过 从中我们可以想象水(*)从水龙头流出并落入水槽或网格区域时所走的路径: f f f <-- first second and third faucets * * *A* * *A*/ \* \*/ * *A <-- a …

2
恭喜获得10,000个声誉!
在@MartinBüttner赢得10,000个声誉之后,我们现在在用户页面上有3个完整的10k用户行!现在,由于我们都是程序员,因此我们希望使事情自动化,而不是手动完成。您面临的挑战是编写一个程序来自动祝贺新的1万用户。 规格 输入项 输入将是n用空格分隔的数字行。(如果您愿意,还可以使用一个逗号分隔的空格分隔数字列表,如果这样会使您的代码更短。)例如: 10 20 30 40 50 15 25 35 45 55 20 30 40 50 60 要么: 10 20 30 40 50,15 25 35 45 55,20 30 40 50 60 每个数字列表代表一天中用户的声誉值列表。 输出量 输出将是相同数量的n行(或相同长度的逗号分隔列表)。每行/列表项将是: :D 如果有一个用户的信誉刚刚变得大于等于10,000。 :D如果有多个用户达到或超过10,000个代表计数,则用多个空格分隔。例如,:D :D :D对于3个新的10k用户。 :( 然后,如果输入模棱两可或不可能(请在下一节中对此进行更多说明),则停止进一步输出。 如果以上两个条件都不成立,则为空。 歧义性 输入可能是不明确的。出于此挑战的目的,我们假设: 信誉上限是每天200,为了挑战而忽略了接受和赏金等。 用户可能不会失去声誉(再次出于简单性和挑战性考虑)。 当无法确定哪个信誉值对应于哪个用户时,输入被认为是不明确的。例如,在输入中10 20,30 …
19 code-golf 

8
绘制火柴人大战
我的照片以我的高级绘图技能来起草这项挑战。 背景 火柴人战争发生在很久以前,当时地球上的优势物种仅由木棍组成。历史学家对当时没有画家或照相机的事实感到遗憾,我们可以在今天的历史书中使用那场战争的照片。这就是您的编码能力变得有用的地方。火柴人很容易画出来,历史学家设法找到了多少人参加了战争¹的数据。现在由您来重新创建战争开始前那刻的图像! 以下是参与战争的英勇火柴人: O / | / | \ / | | / \剑客 OA / | \ | | | / \ | 长矛兵 。 。” *。 'O * '\ | /。 。| * './ \ *。法师 Ø / | \ | / \村民 Ø / | \ …

29
将所有数字相乘成字符串
获胜者:Chilemagic,巨大的21个字节! 您可以继续提交答案,但是您将无法再获胜。原帖保留: 您的目标是查找字符串中的所有数字,并将每个数字分别乘以用户输入的值 您无需担心小数 用户将输入数字和字符串 用户必须在某个时候键入数字和字符串,但是程序读取它的方法并不重要。它可以与stdin一起使用,读取文本文件等,但是用户必须在某个时候按键盘上的9按钮(例如) 任何可以编译和运行的东西都是可以接受的 例: 句子输入:这是22a 3352句子50 数字输入:3 输出:这3是66a 10056句子150 该竞赛将于2014年9月6日(发布后7天)结束。 这是一个代码高尔夫球,因此最短的代码获胜
19 code-golf 

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.