Questions tagged «code-golf»

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

3
编程Tetris块(从字面上看)
在游戏方块,有7种类型的砖或的TETR 我 minoes,其在数学上被称为的TetR ö minoes,因为它们都与4个平方段制成: 具有名称I,J,L,O,S,T和Z,它们对应于它们的近似形状。计算90°旋转时,总共有19种独特的形状: I I I I IIII J J JJ JJJ J JJ J J J JJJ L L LL L LLL LL L L LLL L OO OO SS SS S SS S TTT T T TT T T TTT T TT T ZZ ZZ …

14
{卷数};
在深奥的编程语言Curly中,程序仅由花括号{}和分号组成;。尽管使用了不起眼的工具集,但是Curly的文字可以表示任何非负整数。但是,对于初学者来说,格式有点难读,所以让我们写一些代码为我们做转换。 数字格式 卷曲数是根据以下规则构造的: 添加分号会将数字加1。 用大括号括起来的数字乘以4。 花括号组可以嵌套但不能串联。大括号必须正确匹配。 一组花括号外的分号必须在之后,而不是之前。 为避免在分析时产生歧义,数字必须始终以大括号开头。 一些例子: {;;} 2*4 = 8 {{;};}; (1*4+1)*4+1 = 21 {};;; 0*4+3 = 3 (请注意,规则5表示数字0到3必须以一对空的花括号开头。) 还有一些无效的例子: {{;}{;;}} Curly brace groups side-by-side, not nested {;}} Unmatched brace {;{;}} Semicolon before curly-brace group ;;; Number does not start with curly brace 这是卷曲数字的BNF语法: <number> ::= "{" …

10
验证扫雷板
您的目标是检查完整的扫雷板是否有效。这意味着每个数字都是与其相邻单元格(包括对角线)中地雷的正确计数。董事会不环绕。 与往常一样,您应该提供一个函数或程序,以字节为单位的最短代码将获胜。 另请参阅生成,解决和全面实施 Minesweeper的过去挑战。 输入: 像这样的单个字符串:02X2 13X2 X211。 扫雷器板的行以空格分隔。因此,以上代表3x4板: 02X2 13X2 X211 每个小区是一个字符:X用于矿场,或一个数字0通8。 所有行具有相同的长度。 至少有3行和3列。 输入的内容不能以空格开头或结尾,但是如果需要,可以在结尾添加换行符。 输出: 一致的Truthy上正确板和一致的Falsey不正确的板值。一致意味着所有Truthy输出相同,而所有Falsey输出相同。 测试用例 每行是一个单独的测试用例。 True: 02X2 13X2 X211 XXXX XXXX XXXX XXXX XX4X2 5X6X4 XX6XX 4XX54 2X4XX False: 02X2 13X2 X212 XXXX XXXX X7XX XXXX XX5X2 5X6X4 XX6XX 4XX54 2X5XX

23
双工:重要的无用运算符
输入项 由1到255个正整数(包括)组成的列表,每个整数的范围为1到2 32-1(包括)。 您的输入格式不必与测试用例相同。 必须接受不带前导零的输入。 不需要接受前导零的输入。 您可以在整数之间使用所需的任何定界符。 整数可以用字符串表示,但是特定整数的各个数字必须是连续的。 您可以选择对输入使用任何基准(包括二进制和一进制),前提是输出也在该基准中。 输出量 一个整数。 输出必须没有前导零。 输出必须与输入具有相同的基数。 可以用任何方式计算输出,但必须与以下计算结果匹配: 计算双工 二进制表示形式的位从零开始从右开始编号,因此位i在表示2 i的列中。 在我 个 BITSUM是的总和我 个每个输入数字的二进制表示的比特。 该BITSUM最大的是由bitsums采取的最高值。 所述BITSUM最小是最低非零由bitsums采取值。 在我 个输出的二进制表示的数字是: 如果第i 个比特和等于最大比特和最小比特,则为1。 否则为0。 工作的例子 本示例使用二进制作为输入和输出。 Input: 100110 1101110 1100101 _______ Bitsums: 2301321 Output: 101101 最大位数为3,最小位数为1,因此,在每个位数为3或1的地方输出均为1,在其他地方均为0。 测试用例 测试用例的形式为: Input => Output 二进制测试用例: [1] => 1 [10] …

6
基于网格的数字逻辑(Duodyadic Tiles)
Duodyadic磁贴是正方形功能块的一种,具有两个输入,一个从顶部输入,一个从左侧输入,并具有两个输出,一个在右侧,一个在底部。它们的每个输出都是其两个输入的单独功能。 例如,如果#表示一个通用的瓦片,右输出R是函数f的输入T和L,底部输出B是另一个函数g的T和L: T L#R R = f(T, L) B B = g(T, L) (由于有两个函数,所以这些图块被称为“ duo”,而由于两个函数都有两个参数,它们被称为“ dyadic” 。) 然后,可以在网格上将图块组合在一起,一个图块的输出直接进入与其相邻的图块的输入。例如,在这里,左侧的右侧输出#进入右侧的左侧输入#: AB D = f(f(A, C), B) C##D E = g(A, C) EF F = g(f(A, C), B) 您可以想象,如果给定一组Duodyadic磁贴,每个磁贴都具有特定的功能,则可以制作复杂(且可能有用)的合成。 在这个挑战中,我们将只关注传统的十组基于逻辑的双性平铺,其中所有输入和输出都是单位二进制数(零或一)。我们将使用单独的ASCII字符来表示每种类型的图块。 是瓷砖字符和它们的输入-输出关系,如下所示: (T为顶部输入,L为左输入,R用于右输出,B为底部输出。) 零:0或(空格)→ R = 0,B = 0 一:1→ R = 1,B = …

22
XOR乘法
您的目标是以尽可能少的字节实现下面定义的XOR(无载)乘法运算。 如果我们^将按位XOR()视为二进制加法而不携带 101 5 ^ 1001 9 ---- 1100 12 5^9=12 我们可以@通过执行二进制长乘法来执行XOR乘法,但是执行加法步骤而不进行按位XOR ^。 1110 14 @ 1101 13 ----- 1110 0 1110 ^ 1110 ------ 1000110 70 14@13=70 (对于数学家,这是多项式环中的乘法,通过将Z F_2[x]评估x=2为多项式来标识具有自然数的多项式。) XOR乘法通过按位XOR 交换a@b=b@a,关联(a@b)@c=a@(b@c)和分布a@(b^c)=(a@b)^(a@c)。实际上,a@b=a*b每当匹配乘法a并且b是2like的幂时,就是这样独特的运算1,2,4,8...。 要求 以两个非负整数作为输入和输出或打印其XOR乘积。这应该是数字或其十进制字符串表示形式,而不是二进制扩展名。最少的字节数获胜。 不用担心整数溢出。 这是一些格式为的测试用例a b a@b。 0 1 0 1 2 2 9 0 0 6 1 6 …

14
莫尔斯新年
这是每周挑战#1。主题:音频处理 你的任务是写一个程序,这将写入音频文件光盘(在您所选择的格式),其中包含了摩尔斯电码的2015,即 ..--- ----- .---- ..... 您可以自由选择片段的任何声音,例如单频正弦波,和弦,杂音和某些乐器(例如,使用MIDI文件),只要可以听到即可。但是,在时间安排上有一些限制: 短片段的长度至少应为0.2秒。 长片段的长度至少应为短片段的3倍。 一个数字段之间的中断应与短段的长度相同。 数字之间的间隔应与长段的长度相同。 每个细分市场和细分可能会偏离该细分市场/细分类型的平均长度最多10%。 整个音频文件不得超过30秒。 休息时间不必完全保持沉默,但莫尔斯电音片段的声音应该比休息时间大。 请注意,您必须编写一个音频文件。您不能仅仅播放声音,例如使用系统提示音。您可以使用任何类型的库来处理文件格式和音频生成,但不得使用内置功能进行Morse编码。 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。 请考虑链接到生成的音频文件的上载(在SoundCloud或类似设备上),以便人们可以检出结果而不必运行您的代码。如果您上传到SoundCloud,请确保在曲目的“权限”选项卡中启用下载。 如果您的输出使用的是不太常见的文件格式,请添加一些有关如何播放和/或将其转换为更常见的格式并上载的信息。 示例轨道 这是一个手动生成的示例音轨,符合规范,并使用了莫尔斯线段的噪声(准确地说是麦克风背景噪声)。如果嵌入式播放器不适合您,这是指向SoundCloud的链接。 赏金详情 我将奖励以音频编程语言(即一种旨在合成声音的语言)中提交时间最短的方法。该列表不完整,因此,如果您知道的话,请随时使用另一种音频编程语言。如果您不确定您要使用的某种语言是否分类为音频编程语言,请在评论中或在聊天中告知我,我们可以进行讨论。 请注意,您提交的内容仍必须遵守所有规则-特别是必须写入文件,这可能并非在所有音频编程语言中都可行。例如,据我所知,gibber只能播放声音,而不能将其保存到文件中。

15
一只蚂蚁在多维数据集
一只蚂蚁沿着线框立方体的边缘(而不是面)行走。它遇到的每个顶点都有一个叉,两个新的边从中分支出来。蚂蚁选择转向的方式- left或right。这些方向是相对于面向顶点且在立方体外部的蚂蚁而言的。您的目标是根据left/ right选择蚂蚁的顺序,确定蚂蚁是否在开始的位置结束。 例如,如果蚂蚁向左转四次(left left left left),则它将逆时针移动一个正方形,并在开始的位置结束。但是,如果继续left left left left right下去,它将终止于多维数据集的其他位置。同样,如果它走了left right right right left,它将终止于其起始边缘,但朝向相反的顶点,该顶点不算作同一位置。 蚂蚁的路径可能会重复边缘,包括其开始的边缘,但重要的是在整个序列之后它的终止位置。 编写一个命名函数,该函数接受蚂蚁的转弯序列并输出蚂蚁在序列之后是否回到其起始位置。为变量分配一个未命名的函数足以使其成为一个命名函数。 (编辑:如果您的语言无法创建命名函数,则可以通过STDIN /打印或堆栈使用输入和输出来实现该函数。如果无法实现,请使其成为将输入和输出保存在其中的代码段变量。) 输入项 长度为left/ 包含在内的一系列/ right决策,0以31您选择的格式表示。这可能是字母字符串R/ L,数字列表1/ -1或布尔数组。别让它们成为方法名称或对您的代码有用的字符串。 如果与以下测试用例不同,请以您的格式发布测试用例。 输出量 True/ False,0/ 1或您所用语言的类似物。 获奖标准 最少的字节数获胜。请记住,您需要提供一个命名函数。您可以在函数之外使用代码,但是这些字节也可以计数。如果多次调用,您的函数应正确运行。 测试用例 True 情况(每行一个,第二个是空列表): 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 …
33 code-golf 

20
写一个聚喹
聚喹啉既是奎宁又是多色。1您将写一个至少在两种不同语言中有效的藜。这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。 1我弥补了。确切地说,Geobits做到了。显然,他也不是第一个。 规则 仅接受真正的奎因。也就是说,您需要将整个源代码原样打印到STDOUT,而无需: 直接或间接阅读您的源代码。 依靠REPL环境,该环境仅评估并打印您提供给它的每个表达式。 依靠在某些情况下仅能打印出源代码的语言功能。 使用错误消息或STDERR编写全部或部分的藜。(您可以将内容写到STDERR或产生警告/非致命错误,只要STDOUT是有效的Quine,并且错误消息不属于其中即可。) 此外,您的代码必须包含字符串文字。 多语规则 所使用的两种语言必须明显不同。特别是: 它们不能是同一语言的不同版本(例如,Python 2与Python 3)。 它们不能是同一语言的不同方言(例如Pascal与Delphi)。 一种语言可能不是另一种语言的子集(例如C与C ++)。

6
优化电话键盘
人们似乎在不断地热衷于学习乏味的新键盘布局(例如Dvorak或Neo),因为它据说可以提高他们的生产力。我认为切换键盘布局不是一个好主意,因为它可能需要几个月的时间来加快速度,并且最终速度比其他键盘快5%时,如果您需要在不是不是你自己的。 而且,所有这些人都忘记了现代通信中真正的瓶颈在哪里-电话键盘。 这是普通电话键盘的外观: 字母“ r”是按钮7上的第三个字母;因此,如果您要在手机上键入字母“ r”,则需按3次按钮7,对于“ s”,请按4次,对于“ a”,请按一次2。 考虑到这一点,将“ e”放在“ d”之后可能是一个错误的决定-“ e”是英语字母表中最常用的字母,因此,如果将按钮3标记为“ EDF”而不是“ DEF”,则表示可以节省很多击键。 此外,您可能会自己经历过键入两个共享相同按钮的字母是很麻烦的-如果您想写“ TU”,则不能只敲8次三遍,因为那样会导致'V'。因此,通常您会写“ T”,然后按空格键,然后按退格键,然后写“ U”,等于按5次按钮而不是3次。 TL; DR 鉴于以下两个规则: 按下n次按钮即可键入字母,其中n是按钮标签上字母所在的位置 写两个使用相同按钮键入的字母需要再按2个按钮 给定特定的文本,电话键盘需要最少的按键按下次数的布局是什么?您仅应将按钮2-9、1和0保留用于特殊符号。 输入项 您应该通过stdin提供最佳布局的文本。除了小写字母,您不需要处理任何其他事情,并且可以假设输入仅包含小写字母。您也可以假设输入文本相当大,并且每个字母至少在其中一次(如果有帮助的话)。 输出量 我不想在输出上施加太多限制,因为这有时会使某些语言优于其他语言。因此,尽管您的语言显示数组很好,但是也可以用换行符分隔每个标签。 可能有多种最佳布局,您可以打印其中任何一种。这是一个简单的例子: >> echo "jackdawslovemybigsphinxofquartz" | foo.sh ojpt avhz cen skm dyf wbq ixu lgr 奖励积分 -35如果您的算法不是强制所有可能的布局(我在这里查看Haskell的“排列”) -3如果您的代码适合文本消息(140个字符),并且您张贴了将您的代码发送给朋友的图片。 这是我在StackExchange上遇到的第一个挑战。我很高兴听到您是否喜欢它,或对此有任何其他反馈!
33 code-golf 

17
Stackoverflow有多少赏金?
任务: 您是一位了不起的程序员和Stackoverflow-answerer,您决定在Stackoverflow上悬赏所有问题。你太好了,以至于你设法在所有问题上都得到了赏识。在等待代表涌入时,您编写了一个程序,该程序找出所有这些赏金中代表的总数。 规则: 运行时 您的程序将在Stack Overflow的功能选项卡中导航。 它将刮除每个赏金的价值, 然后将其加起来并显示总数 它必须从SO上的任何地方(并且只有SO)下载数据,但是我建议使用https://stackoverflow.com/questions?pagesize=50&sort=featured,因为它只有大约10页 这是代码高尔夫球,因此最短的代码获胜
33 code-golf 

7
抗锯齿ASCII艺术
背景 ASCII艺术是通过使用ASCII文本形成形状来创建图像的实践。 混叠是由ASCII艺术的大“像素”(即字符大小)产生的效果。图像变得块状且难以看清。抗锯齿功能通过创建渐变并软化ASCII艺术作品的硬边来消除这种影响。 挑战 您面临的挑战是编写尽可能最短的程序,该程序将花费一部分ASCII文字并输出经过抗锯齿的版本。 什么样的抗锯齿? 所有ASCII文字都将由两种类型的符号组成:空格和非空白。对于每个非空白字符,您的程序必须确定它是否处于需要消除锯齿的位置。如果是这样,则需要用正确的字符替换它。如果不是,则字符保持不变。 您如何知道角色是否需要消除锯齿?答案取决于字符上方,下方,左侧和右侧的字符(而不是对角线)。下面是当需要抗混叠的一个图表,其中?和x可以代表任何非空白字符。 x? -> d? ? ? ?x -> ?b ? ? ? ? ?x -> ?F ? ? x? -> Y? x -> ; Note: This character has been changed from _ to ; ? ? ? ? x -> V ?x -> …

9
那位神奇宝贝是谁?
输入:1到151之间的整数N 输出:第N个神奇宝贝。 规则 您可以使用一个数据文件。 您可能不使用任何已经制定的数据解压缩算法。这包括库和其他程序。 您的程序可能无法访问其自身和数据文件以外的文件。 计分 您的分数是代码和数据文件长度的总和。 有用的东西 以下是用分号分隔的前151个宠物小精灵的列表,可帮助您生成数据文件。您的输出应与该行的第N个条目完全匹配: Bulbasaur;Ivysaur;Venusaur;Charmander;Charmeleon;Charizard;Squirtle;Wartortle;Blastoise;Caterpie;Metapod;Butterfree;Weedle;Kakuna;Beedrill;Pidgey;Pidgeotto;Pidgeot;Rattata;Raticate;Spearow;Fearow;Ekans;Arbok;Pikachu;Raichu;Sandshrew;Sandslash;Nidoran (f);Nidorina;Nidoqueen;Nidoran (m);Nidorino;Nidoking;Clefairy;Clefable;Vulpix;Ninetales;Jigglypuff;Wigglytuff;Zubat;Golbat;Oddish;Gloom;Vileplume;Paras;Parasect;Venonat;Venomoth;Diglett;Dugtrio;Meowth;Persian;Psyduck;Golduck;Mankey;Primeape;Growlith;Arcanine;Poliwag;Poliwhirl;Poliwrath;Abra;Kadabra;Alakazam;Machop;Machoke;Machamp;Bellsprout;Weepinbell;Victreebell;Tentacool;Tentacruel;Geodude;Graveler;Golem;Ponyta;Rapidash;Slowpoke;Slowbro;Magnemite;Magneton;Farfetch'd;Doduo;Dodrio;Seel;Dewgong;Grimer;Muk;Shellder;Cloyster;Gastly;Haunter;Gengar;Onix;Drowsee;Hypno;Krabby;Kingler;Voltorb;Electrode;Exeggute;Exeggutor;Cubone;Marowak;Hitmonlee;Hitmonchan;Lickitung;Koffing;Weezing;Rhyhorn;Rhydon;Chansey;Tangela;Kangaskhan;Horsea;Seadra;Goldeen;Seaking;Staryu;Starmie;Mr. Mime;Scyther;Jynx;Electabuzz;Magmar;Pinsir;Tauros;Magikarp;Gyarados;Lapras;Ditto;Eevee;Vaporeon;Jolteon;Flareon;Porygon;Omanyte;Omastar;Kabuto;Kabutops;Aerodactyl;Snorlax;Articuno;Zapdos;Moltres;Dratini;Dragonair;Dragonite;Mewtwo;Mew

22
带出句子的内在美洲驼
您的目标是像 Pie is good. I just ate a bunch of pies early this morning. Actually, it was closer to the afternoon. Mornings are good. 并创建一个字符串索引数组,其中组成单词“ Llama”的字母出现(顺序一个)。例如,让我显示用尖号指向的字母以显示索引: Pie is good. I just ate a bunch of pies early this morning. Actually, it was closer to the afternoon. Mornings are good. ^ …
33 code-golf 

30
是圣诞节吗?
挑战 鉴于圣诞节是: 十二月 第十二个月 第25天 每年,确定今天的日期,以及今天是否是圣诞节。如果是圣诞节,则必须打印"It's Christmas"。如果不是圣诞节,则必须以某种方式等到圣诞节后再打印"It's Christmas"。 例 从这个堆栈溢出问题 import time while time.strftime("%b, %d", time.localtime()) != "Dec, 25": time.sleep(60) print "It's Christmas" 包含115个字符的Python 规则 规则如下: 假设计算机的时钟总是正确的。 您的代码必须能够随时启动。 您的代码必须"It's Christmas"在圣诞节打印。 循环当然不是必需的,但是一旦开始,您的代码就应该在打印之前停止。 最短的代码胜出。
33 code-golf  date 

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.