Questions tagged «code-golf»

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

6
将RNA解析为密码子
介绍 RNA是DNA的近亲。其主要目的是通过称为翻译的过程控制细胞中蛋白质的产生。在这一挑战中,您的任务是实施该过程的一部分,其中将RNA分成密码子。 这项挑战与主题相关,但集中在翻译过程的另一部分。 密码子 我们将RNA视为碱基对字母上的长字符串AUCG。在翻译中,RNA被分为三个碱基对的非重叠片段,称为密码子。该过程开始于一个起始密码子,AUG以及在端部一终止密码子的一个UAA,UAG或UGA。每个密码子(终止密码子除外)都对应一个氨基酸,并且所形成的氨基酸串形成蛋白质。 输入值 您输入的是非空的RNA字符串。 输出量 您的输出是将RNA分割成任何合理格式的密码子列表。在此简化模型中,过程从最左侧的起始密码子开始,该密码子AUG包含在输出中。当遇到终止密码子或我们用完RNA时,它结束。如果输入不包含起始密码子,则输出应为空列表。 例子 考虑输入顺序 ACAUGGAUGGACUGUAACCCCAUGC 解析从的最左边出现AUG在索引2 开始。它继续如下: AC AUG GAU GGA CUG UAA CCCCAUGC * ^ ^ ^ + 标*有的密码子是起始密码子,标^有的密码子也是输出的一部分。终止密码子标有+。正确的输出是 AUG,GAU,GGA,CUG 对于较短的输入 ACAUGGAUGGACUGU 过程进行 AC AUG GAU GGA CUG U * ^ ^ ^ 这次,没有遇到终止密码子,所以当我们用完碱基对时,该过程停止。输出与上面相同。 规则和计分 您可以编写功能的完整程序。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 GGUACGGAUU -> GGCGAAAUCGAUGCC -> AUG …

2
三角网格上的对齐
六边形网格最近已成为应对二维数据挑战的一种相当流行的方法。但是,到目前为止,似乎同样忽略了同样有趣的三角形网格。我想通过一个非常简单的挑战来纠正这一问题。 首先,我们如何表示三角形网格?考虑以下示例(暂时忽略正确的图表): 单元整齐地落在常规网格上(与常规网格的区别仅在于哪些单元被视为相邻单元): 1234567 89abcde fghijkl mnopqrs 现在,如右图所示,三角形网格具有三个主轴:水平轴和两个对角轴。 在ASCII网格中突出显示这些内容: AVAVAVA VAabcAV fVAiAVl mnVAVrs 挑战 您将获得一个代表三角形网格的矩形字符串(其中左上角是一个向上的三角形)。大部分带有be的单元格.,但只有两个单元格是#,例如: ....# .#... ..... 确定两者#是否沿网格的三个轴中的任何一个对齐(即,它们是否沿上面突出显示的三个方向中的任何一个方向位于一行上)。对于此示例,答案为“否”。 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行参数或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。 输入可以是由换行符或其他方便字符分隔的单个字符串,也可以是字符串列表。您可以使用任意两个(一致的)可打印ASCII字符代替.和#。 输出应该是一个truthy如果突出显示的细胞对准值和falsy否则值。 适用标准代码高尔夫球规则。 测试用例 真实网格: .#..#. # # ........... ...#....... ........... ........... ........... .......#... ........... ........... .......#... ........... ........... ........... ...#....... ........... .#......... ........... ........... ........... ........... .......#... ........... ........... …

4
不断增长的奎因序列
您将编写一个p1 p2 ... p10满足以下属性的10个程序的序列: pK打印pK+1为K从1到9 p10 版画 p10 当第一个K程序连接在一起,产生的程序p1...pK打印p1...pK。 每个程序的pK字节大小必须大于以前的程序pK-1。 所有程序必须使用相同的语言。 Q允许内置的奎因功能(例如,多种语言)。 您的分数是10个程序的字节数之和。由于只有十个程序,因此您必须使代码尽可能短。祝好运。

1
最大子串构造
在此挑战中,您通过了两件事: 字符串长度 N 字符串列表L,每个都有一个指定的点值。任何未传入的字符串的点值为0 您需要构造一个长度字符串N,以使所有子字符串点的总和尽可能大。 例如: 5 [("ABC", 3), ("DEF", 4), ("CDG", 2)] 应该输出 ABCDG 因为带有点(ABC和CDG)的两个子字符串总共有5个点,所以其他任何可能的构造都不能给出5个或更多点。 子字符串可以在字符串中多次使用,并且可以重叠。您可以假设这些点将始终为正,子字符串的长度将在1到N字符长之间,并且那个N > 0。如果最多有多个构造,请打印其中任何一个。 您的程序必须在合理的时间内运行(每个示例的时间不得超过一分钟): 1 [("A", 7), ("B", 4), ("C", 100)] => C 2 [("A", 2), ("B", 3), ("AB", 2)] => AB 2 [("A", 1), ("B", 2), ("CD", 3)] => BB 2 [("AD", 1), …

4
一个简单的DNA模拟器
您的代码将永远生成DNA的非常简单的ASCII表示形式。它会以您想要的任何格式将两个数字作为输入:作为列表,作为函数的参数,在stdin等上。 I介于0.0到1.0(含)之间的浮点间隔(以秒为单位) 缩放级别Z,从1到64(含)的整数 您的代码将每秒钟将一行输出到stdout或等价的行,从而I产生一个无限的输出,看起来像这样(缩放级别4): A T-----a G-------c G-----c g t-----A a-------T c-----G T A-----t C-------g ... 具体地,我们的DNA的表示是一对由连字符连接的正弦波,一个由字符a,c,g,和t,其他字符的A,C,G,和T。如果x是我们当前正在打印的行的0索引编号,则小写波中字符的从0开始的位置由给出(sin(πx / Z) + 1) * Z,而大写波中的字符从0开始的位置由给出(-sin(πx / Z) + 1) * Z,两者都四舍五入(但没有下限)整数。更多细节: 如果两个波浪重叠,则需要从大写波浪开始,交替选择哪个波浪在前面。(从小写波开始,我们会得到一个不存在的双螺旋!) 忽略大小写,A总是与T配对,C总是与G配对,就像在真实的DNA中一样。线对本身应随机选择,并在四种可能性上均匀分布。在代码的连续运行中,对的选择是相同还是不同并不重要。只要输出没有明显的模式并且周期至少在十亿之内,随机选择的统计质量就不成问题了(像RANDU这样有缺陷的PRNG 很好。) 您必须没有尾随空格,或者必须在该缩放级别将每一行都填充到波浪的最大位置(在上面的示例中为九个字符)。出于数学原因,缩放级别1可能有一个可选的附加尾随空格。 由于DNA很小,因此您的代码将需要尽可能短。 更多示例: 缩放等级8: T C-----g A-----------t C-------------g G---------------c T-------------a T-----------a T-----a c g-----C t-----------A g-------------C a---------------T ... …

6
金伯林序列
介绍 当然,我们遇到了很多序列挑战,因此这是另一个挑战。 金伯林序列(A007063)如下: 1, 3, 5, 4, 10, 7, 15, 8, 20, 9, 18, 24, 31, 14, 28, 22, ... 这是通过改组常规迭代产生的: [1] 2 3 4 5 6 7 8 序列的第一项是1。之后,我们将重新排列序列,直到使用了左侧的所有术语。改组有规律right - left - right - left - ...。由于的左侧没有术语1,因此没有改组。我们得到以下内容: 2 [3] 4 5 6 7 8 9 在第i 次迭代中,我们丢弃第i 个项目并将其放在我们的序列中。这是第二次迭代,因此我们丢弃第二项。序列变为:1, 3。对于我们的下一个迭代,我们将使用上面的模式对当前迭代进行洗牌。我们从第i …

2
被遗忘的领域日期计算器
为了平衡具有内置日期库的语言和没有内置日期库的语言之间的竞争环境,让我们使用虚拟日历。“被遗忘的境界”是“龙与地下城” 的(the?)广告系列设置。当然,每个人都有自己的日历。 Harptos日历 方便地,在“被遗忘的领域”中的一年也有365天。此外,日历也有12个月。但是,这才变得有趣。每个月正好是30天。剩下的5天是假期,介于两个月之间。以下是月份和节假日的顺序(节假日缩进): 1 Deepwinter Midwinter 2 The Claw of Winter 3 The Claw of the Sunsets 4 The Claw of the Storms Greengrass 5 The Melting 6 The Time of Flowers 7 Summertide Midsummer [Shieldmeet] 8 Highsun 9 The Fading Highharvestide 10 Leaffall 11 The Rotting The Feast …

2
长跑赛车
系统将为您提供两个输入:一个以游程长度编码格式定义运行轨迹的字符串,以及一个大写字母,表示从其开始的车道。例如,字符串“ 3a4A6b5B”扩展为“ aaaAAAAbbbbbbBBBBBBB”。然后,使用扩展的字符串来创建轨道,如下所示: A) aaaAAAA B) bbbbbbBBBBB 这是一条有两条车道的赛道。小写字母代表空气。你不能在空中跑!大写字母表示可以行驶的道路。您的挑战目标是给定大写字母,输出从该车道开始行驶的赛车手能跑多远。如果赛车正上方或正下方有一条道路,则允许赛车手转换车道。他们也被允许倒退!在此特定轨道上,任何字母输入的输出均为0,因为这两个轨道都在位置1处没有可行驶的道路。 例子: 输入: “ 4A5B4c3C”,“ A” 此代码扩展为如下所示的轨道: A) AAAA B) BBBBB C) ccccCCC 此示例的输出为7,因为从车道A开始的跑步者可以向下移动至车道B,然后下降至车道C,最后到达第7位。 输入: “ 4A2B3D”,“ D” 跟踪: A) AAAA B) BB C) D) DDD 输出为3,因为从D道开始的跑步者无法进入B道或A道 输入: “ 4A4a4A3b6B5C”,“ A” 跟踪: A) AAAAaaaaAAAA B) bbbBBBBBB C) CCCCC 输出为12,因为A上的跑步者可以切换到B,然后最后返回A。“ C”的最大距离也是12。对于“ B”,最大距离是0。 输入: “ …

6
调整椅子
挑战 您刚买了一把新椅子!问题是,您不知道如何控制它,因此您需要编写一个程序来为您做。 您只能在未调整的椅子上坐很长时间。因此,您的代码将需要尽可能短。 例子 5,3,2,2,1 O | | | _ | | |_|_ | | O 3,5,2,3,5 O | _ | | |__|__ | | __|__ OOOOO 2,13,1,1,13 O | _ |______|______ ______|______ OOOOOOOOOOOOO 我是唯一认为这架飞机看起来像飞机的人吗? 椅子零件 椅子具有各种组件: O | | <- Backrest | _ <- Armrest | | |__|__ <- …

9
希尔伯特·普里姆斯高尔夫
希尔伯特数被定义为形式的正整数4n + 1的n >= 0。希尔伯特的前几个数字是: 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65, 69, 73, 77, 81, 85, 89, 93, 97 希尔伯特数序列由OEIS序列A016813给出。 相关的数字序列,希尔伯特质数,被定义为H > 1不能被任何希尔伯特数(k例如)整除的希尔伯特数1 < k < H。希尔伯特素数的前几个是: 5, 9, 13, 17, 21, 29, 33, 37, 41, 49, 53, 57, …

1
计算多边形的边数
计算多边形的边数 多边形计数机器人已决定在不通知任何人的情况下环游​​世界,但至关重要的是,多边形计数的过程不要停留太长时间。因此,您需要执行以下任务:给定多边形的黑白图像,您的程序/ Funtoin应该返回边数。 该程序将被送入一台旧的打孔卡计算机,并且由于当今的打孔卡非常昂贵,因此您最好尝试使程序尽可能短。 边缘的长度至少为10个像素,并且两个相邻边缘形成的角度至少为10°但不大于170°(或再次大于190°)。该多边形图像中完全包含和多边形,以及它的补连接(没有孤立的岛屿),所以这个投入将不会是有效的: 计分 这是代码高尔夫,这意味着以字节为单位的最短提交胜出,您的提交必须为每个测试用例找到正确的边数。(提交也应适用于其他情况,不允许仅针对那些测试用例进行优化。) 如果您希望提交的解决方案每次都找不到正确的编号,您也可以提交该解决方案,但是它将在所有性能更好的提交中排在后面。 请在提交标题中包括总数。(总误差为实际边数与每个输出之间的绝对差之和)。 测试用例 n = 10 n = 36 n = 7 n = 5 这不是一个测试用例,只是出于好奇:您为该输入获得了多少优势?

17
产品超出独家和包容范围
受到@C @O'Bʀɪthis 这个问题的启发。 取自问题: 您的任务很简单:给定两个整数a和b,输出∏ [a,b]; 即a和b之间的范围的乘积。您可以采用任何合理格式的a和b,无论它们是函数的参数,列表输入,STDIN等。您可以以任何合理的格式输出,例如返回值(对于函数)或STDOUT。a将始终小于b。 注意,结尾可以是b的独占或包含。我不挑剔 ^ _ ^ 这项挑战的不同之处在于,我们将对范围类型保持谨慎。输入是以下形式的字符串[a,b],(a,b],[a,b),或(a,b)其中a []是一个包容边界和()是独占边界。给定明确的边界,请提供范围的乘积。同样,输入范围将始终包含至少1个数字,这意味着范围(3,4)无效且无需测试。 测试用例 [a,b) => result [2,5) => 24 [5,10) => 15120 [-4,3) => 0 [0,3) => 0 [-4,0) => 24 [a,b] => result [2,5] => 120 [5,10] => 151200 [-4,3] => 0 [0,3] => 0 [-4,-1] => 24 …
18 code-golf  math 

5
jQuery摊牌
这次事件过了一段时间…… 有一些的我们谁是对的jQuery这个玷污顺序。这是一个邪恶的存在,必须消灭它。因此,我呼吁忠于新改革国度的人们制定一个消除这种阻力的计划。必须对所有代码进行验证并搜索jQuery的任何和所有踪迹。而且,当然,您的提交内容必须简短(又有预算削减,不幸的是,这是在存储部门进行的)。并且它不能具有带分隔符的字符。 为使您快速入门,请使用下列字符中的任意一个来定义字符:jJqQuUeErRyY$x0。如上所述,即使在您自己的程序中,也严禁使用这些字符。所以不要使用它们。我们也可以接受美元符号的数字。因此,任何形式的n+(.nn)*$都可以(您仍然不应该使用0。) 您的程序/代码/等 必须验证输入程序。如果它包含任何限定字符,您必须输出This programmer is guilty of Heresy. He must be burnt.; 如果找不到此类字符,则必须输出Program validated. Clearance level 2 given.。 奖金和罚款 我个人很欣赏这个角色~。对于您使用的每两个,我给您-1个字节。(即彼此~免费。) 您可以从排除的字符中选择一个字符;不过,您可能会在所有情况下都使用此字符,但是,该字符的每个实例都会有+ 50%的字节初始罚款,然后有+5字节的罚款。 -90%,如果您未jquery在源代码中使用任何相邻的字符(为了安全起见)。这些是(另外):iIkKpPsSzZXdDfF 如果给定一个无效的字符串并输出上述文本时,如果-运行1 替换了所有无效字符,*并且运行了小于10的字符串,并且替换了所有[]不再运行的字符串,则为-20%。 -50字节(如果找不到JavaScript/i或Simplex带有转义字符)。 参考实施 function validate() { var str = document.getElementById("input").value; var str2 = str.replace(/[jquery0]/gi,"").replace(/x/g,"").replace(/(\d+\.*\d*\d*\$)|\$/g,"$1"); // thanks Doorknob! var val; if (str2 == str) { …

11
原始太空侵略者(你能把它弄伤吗?)
原始太空侵略者 这是一个图形输出挑战,任务是提供每种语言最短的代码。 任务 您的代码应允许用户在屏幕/窗口周围移动以下外星人。 您的代码可以简单地从本地文件加载。可以随意将其转换为另一种标准图像格式,甚至可以修复注释中指出的图像中的小像素错误。 背景应为白色,并且窗口/屏幕必须至少为400像素乘400像素。如果您的语言不支持如此大的窗口/屏幕,则使用不超过200 x 200的最大尺寸。 要在屏幕上移动外星人,代码应使用标准键盘上的箭头键支持上/下/左/右。 您的代码应为完整程序。 限制/约束 外星人应该在边界停留。它还应以均匀的速度平稳移动,没有可见的闪烁或卡顿现象,并且至少应显示24fps。从屏幕/窗口的一侧到另一侧大约需要2到5秒。 语言和图书馆 您可以使用自己喜欢的任何语言或库(不是针对此挑战而设计的)。但是,如果可能的话,我希望能够测试您的代码,因此,如果您可以提供有关如何在Ubuntu中运行代码的明确说明,将不胜感激。 目录 这篇文章底部的Stack Snippet会根据答案a)生成目录,a)作为每种语言最短解决方案的列表,b)作为整体排行榜。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,则可以将旧分数保留在标题中,方法是将它们打掉。例如: ## Ruby, <s>104</s> <s>101</s> 96 bytes 如果您想在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: ## Perl, 43 + 2 (-p flag) = 45 bytes 您还可以将语言名称设置为链接,然后该链接将显示在代码段中: ## [><>](http://esolangs.org/wiki/Fish), 121 bytes 显示代码段 <style>body { text-align: …

11
模拟掷骰子游戏
掷骰子是一种非常简单的骰子游戏,通常在赌场中玩。即使您不是赌徒(我不是),它仍然是一个相当有趣的游戏。规则如下: 在骰子的游戏开始有所谓的脱出轮。播放器掷出两个d6(六个面的骰子),并添加了两个骰子。如果结果是7或11,则该人自动获胜(这称为自然)。如果结果是2、3或12,则此人会自动丢失(这称为淘汰)。否则,将结果设置为圆点的点。 此后,积分回合开始。在积分回合中,玩家必须连续掷出2 d6s,直到该人从上一回合掷出7分或他/她的积分。如果该人掷出7,则输。如果他们提出自己的观点,他们就赢了。 挑战 实现一个模拟胡扯游戏的简单程序。如果此人在下注回合中进行自然或淘汰,则程序应输出“ Natural:”或“ Crapping out:”,然后进行模切,然后退出。否则,应输出“ Point:”,后跟该点。然后,在点回合期间,它应输出每个模辊,直到达到7或该点为止。如果该人获胜,则应输出"Pass";如果他们输了,应该输出"Don't Pass"。 参考实施 Groovy,277个字节 def a={return Math.random()*6+1};int b=a()+a();(b<4||b==12)?{println"Crapping out: "+b}():{(b==7||b==11)?{println"Natural: "+b}():{println"Point: "+b;for(;;){int x=a()+a();println x;(x==7)?{println"Don't Pass";System.exit(0)}():{if(x==b){println"Pass";System.exit(0)}}()}}()}() 在线尝试。 样本输出 Natural: 7 Crapping out: 3 Point: 9 4 8 11 9 Pass 和 Point: 5 3 7 Don't Pass 这是代码高尔夫球,因此最短的代码获胜。 (免责声明:此挑战并非旨在以任何方式促进赌博。请记住,这家房子总是赢家。)
18 code-golf  game  random 

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.