Questions tagged «code-golf»

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

16
使用xkcd的公式来近似世界人口
在XKCD 1047,兰德尔罗列出“稍微错”什锦数量和数字的具有不同精确度和复杂度的近似,诸如升的在一加仑的数量非常接近3 + π / 4。在漫画的中间,他进行了一段间歇:一种根据给定年份估算世界(和美国)人口的方法。 (摘自xkcd: Randall Munroe的近似值) 您的任务是编写一个实现这些公式的程序,以近似当前的世界和美国人口,方法如下。 世界人口 取当年的最后两位数字。 减去自2005年卡特里娜飓风以来的of年数(包括当年)。为此,任何可被4整除的年份都被视为a年。 在两个数字之间添加一个小数点(与除以10相同)。 加6。这使数十亿人受益。 美国人口 取当年的最后两位数字。 减10。 乘以3。 加10。 开头加3(对于此挑战,某些数字将为负,因此加300)。不知何故,我没有注意到仅连接是行不通的,因为我用来生成结果的程序仅增加了300。 这使成千上万人受益。 细节 这个公式“应该保持十年或两年不变”,但是从理论上讲,您必须能够处理任何2000年至2039年(含)。在某些情况下,自卡特里娜飓风以来的the年将为负值或零值。 您可以自由地以任何方式简化公式,只要所有输出与下面的输出匹配即可。 对于年份,请根据计算机的时钟使用年份。它必须在明年和本世纪的任何其他年份工作,因此您不能简单地对2015年进行硬编码。为方便起见,您可能希望包括一种将年份指定为变量或输入以测试其他年份的方法。 输出应为近似的世界人口(十亿人),后跟一些定界符(例如空格或逗号),然后是美国人口(以百万计)。您也可以编写一个返回或打印字符串或数字或字符串数​​组的函数。 这是代码高尔夫,因此以字节为单位的最短代码获胜。Tiebreaker是最早的帖子。 测试用例 这是所有可能年份的列表,其后是两个输出。 Year World U.S. 2000 6.1 280 2001 6.2 283 2002 6.3 286 2003 6.4 289 2004 6.4 292 2005 6.5 …

11
让我们演奏陶笛
众所周知,《塞尔达传说》系列是有史以来最好的游戏系列之一。为此,让我们在ocarina上播放一些歌曲。 挑战: 编写一个程序,给定一首歌曲,将特定歌曲的乐谱输出到stdout。 输入: 您必须输出乐谱的歌曲将由唯一的三个字符组合给出,如下所示: zel - Zelda's Lullaby sas - Saria's Song eps - Epona's Song sos - Sun's Song sot - Song of Time sst - Song of Storms 奖励歌曲,每首-7%: mof - Minuet of Forest bof - Bolero of Fire sow - Serenade of Water nos - Nocturne …

8
填塞填塞-十二项任务鸣叫
您的老板刚刚通过电子邮件给您列出了他需要尽快完成的12个编程任务的列表。任务很简单,但是作为社交网络支持的年轻软件大亨,您的老板坚持认为,您的解决方案必须能够在单个Twitter微博中使用。 这意味着您只有140字节的代码可解决所有任务,平均每个任务11.67字节。(是的,Twitter 计算字符,但您的老板专门说了字节。) 您意识到无法解决140字节中的所有12个任务,但是您怀疑老板不会实际测试所有解决方案。因此,您可以继续解决尽可能多的任务,而完全跳过其中的一些任务。您的心态是,完成任务的哪个子集无关紧要,只重要的是子集尽可能大。 您可以完成多少个任务? 挑战 编写多达12个不同的程序,每个程序都能准确解决以下12个任务之一。这些程序的长度的累积总和不能超过140个字节 或者,您可以编写一个长度不超过140个字节的程序,该程序取1到12之间的整数,并且(理想情况下)继续解决相应的任务,并根据需要输入更多的信息。并非所有任务都需要工作,只有那些确实可以计入您的分数的任务才能工作。无效的任务将允许错误或执行其他任何操作。 在任何一种情况下,“程序”实际上都是将输入作为参数或对其进行提示并打印或返回输出的函数。因此,例如,您可以编写一个看起来像的140字节的函数f(taskNumber, taskInput),或者您可以为每个任务编写单独的代码段,其中一些作为函数,而某些则作为成熟的程序。 其他详情: 所有代码必须使用相同的语言编写。 像往常一样,输入应该来自stdin,命令行,函数参数或您的语言常用的东西。输出将输出到标准输出或您的语言最接近的替代版本,或以适当的类型返回。 合理数量的输入格式是可以的;例如,用引号引起来的字符串或\n代替实际的换行符。 输出应该完全是所要求的,没有多余的格式或空格。唯一的例外是尾随换行符。 仅在REPL环境中运行的代码不构成程序或功能。 您可能不会编写解决多个任务的多个程序。是一个程序(理想地)解决所有任务,或者是(理想地)12个程序分别解决一个任务。 未经原作者的署名,并且最好也获得许可,不允许发布您未编写或仅稍作修改的任务解决方案。如果您的答案主要是所有其他答案中最短的解决方案,则它应该是社区Wiki。 计分 完成最多任务的提交是获胜者。如果两个提交并列,则字节数最少的一个获胜。如果字节计数并列,则较早的提交将获胜。社区维基答案不允许获奖。 确保告诉我们您解决了哪些任务,而不仅仅是告诉我们! 非高尔夫球员的障碍: 这项挑战很可能将以高尔夫语言为主导。许多语言甚至可能无法解决140字节内的一两个任务。因此,您可以提交非竞争性答案,其限制为3条推文,即420字节。所有其他规则保持不变。 任务 任务1-三个数字可以形成三角形吗? 取三个正整数并输出一个true / falsy值,该值指示具有这些长度的三行是否可以形成三角形。您可能不认为数字按任何特定顺序排列。 真实的示例(每行一个): 20 82 63 1 1 1 2 3 4 1 2 2 虚假的例子: 6 4 10 171 5 4 1 1 …

5
天哪,到处都是空间!
有些人坚持使用空格进行制表和缩进。 对于列表,这无疑是错误的。根据定义,制表符必须用于制表。 即使是缩进,制表符在客观上也很出色: 在Stack Exchange社区中有明确的共识。 使用单个空格进行缩进在视觉上是不愉快的;多使用一个是浪费的。 正如所有编码高尔夫球手都知道的那样,程序应尽可能短。如果需要处理的字节数更少,那么它不仅可以节省硬盘空间,还可以减少编译时间。 通过调整制表符宽度1,同一文件在每台计算机上看起来都不同,因此每个人都可以使用自己喜欢的缩进宽度,而无需修改实际文件。 默认情况下,所有好的文本编辑器都使用制表符(和定义)。 我这么说,我永远是对的! 可悲的是,并非每个人都在听理性。有人给您发送了一个文件,该文件做错了TM,您必须对其进行修复。您可以手动进行操作,但是还会有其他操作。 间隔器浪费您的宝贵时间已经很糟糕了,因此您决定编写最短的程序来解决该问题。 任务 编写执行以下操作的程序或函数: 从STDIN或作为命令行或函数参数读取单个字符串。 标识所有用于制表或缩进的空格。 如果在行的开头出现空格,则表示缩进。 如果不是缩进,则两个或多个空格的行程为制表。 甲单一可以或可以不被使用,是不是缩进空间制表。不出所料,当您将同一字符用于不同目的时,没有简单的方法可以分辨。因此,我们将说该空间已被用于混淆。 确定可能的最长制表符宽度1,用于制表符或缩进的所有空格都可以用制表符替换,而无需更改文件的外观。 如果输入既不包含制表也不包含缩进,则无法确定制表符宽度。在这种情况下,请跳过下一步。 使用先前确定的制表符宽度,用制表符替换用于制表或缩进的所有空格。 另外,只要有可能,而不会改变文件的外观,请使用制表符替换所有用于混淆的空格。(如有疑问,请排除空格。) 从函数中返回修改后的字符串或将其打印到STDOUT。 例子 的所有空格 a bc def ghij 制表。 每次运行空格都会将前面的非空格字符字符串填充为5的宽度,因此正确的制表符宽度为5,正确的输出2为 a--->bc-->def->ghij 的前两个空格 ab cde f ghi jk lm 都是制表的,其他的很混乱。 正确的制表符宽度为4,因此正确的输出2为 ab->cde>f ghi>jk lm 最后一个空格保持不变,因为如果由制表符代替,它将被呈现为两个空格: ab->cde>f ghi>jk->lm 除一个空格外的所有空格 int …

8
丹尼斯(Dennis),门把手(Donknob),马丁·布特纳(MartinBüttner),克里斯·杰斯特·杨(Chris Jester-Young)-披萨店!
编程难题和代码高尔夫即将获得一个新的主持人,丹尼斯!这个挑战是向他致敬和我们的其他活动(或最近活动)主持人:门把手,马丁布特内尔和克里斯小丑,年轻。挑战冠军的标题应该被读作Pepto Bismol的歌曲。 基本上,我们要在他们都把披萨第十九咬比萨店,但我们需要确保他们共享这还算是因为一些的的器官功能障碍综合征被称为是比萨瘾君子! 比萨店出售的披萨都是矩形文字。披萨的宽度和长度可以是任何非负整数,只要它们的乘积可被四整除即可。文本披萨块中的每个网格空间都代表一个切片,因此始终可以将切片分成四个相等的组。 国防部将集体订购一个比萨饼,并以任何合理格式(例如)将其宽度和长度参数提供给服务器[width],[length]。在比萨饼到达餐桌之前,您需要在每个切片上贴上可以食用的mod的开头,以确保它们都能公平共享。每个人都应获得相同数量的切片。 E 是给丹尼斯的 D 用于门把手 M 是给马丁的 C 是给克里斯的 但是,这些mod有点顽强,要求它们各自的切片组是路径连接的,也就是说,它们的所有切片都可以通过上下左右移动而不能互相交叉,切片(并且不移动对角线)。不在乎怎么你做到这一点,只要它完成。 正确标记每个切片后,使用可选的尾随换行符将披萨传送到模块。 您的贴标机可以是程序或函数,可以打印或退还贴有标签的披萨。咬短的贴标机获胜。 例子 例子1 订购: 4,1 一些可能的标签比萨饼: EDMC MEDC CDEM 例子2 订购: 4,4 一些可能的标签比萨饼: MMMM CCCC DDDD EEEE DEMC DEMC DEMC DEMC CCCC DEEM DEEM DDMM 例子3 订购: 8,3 一些可能的标签比萨饼: MMMMMMCC DDDDCCCC DDEEEEEE DDDCMMMM DCDCMEEE DCCCMEEE …

18
打印字符名称
每个Unicode字符都有一个名称,例如“拉丁文大写字母A”。Unicode字符名称只能包含大写字母,空格和减号。 编写一个程序,该程序读取文本并在新行上输出每个字符的名称。例如,如果输入为“ Hello,World!”,则输出为 LATIN CAPITAL LETTER H LATIN SMALL LETTER E LATIN SMALL LETTER L LATIN SMALL LETTER L LATIN SMALL LETTER O COMMA SPACE LATIN CAPITAL LETTER W LATIN SMALL LETTER O LATIN SMALL LETTER R LATIN SMALL LETTER L LATIN SMALL LETTER D EXCLAMATION MARK 输入应该来自文件或用户输入,而不仅仅是代码中的字符串。 输出应写入文件或标准输出或打印到屏幕上。 不允许使用Internet和外部库,所有必需的数据都应包含在代码中。 …

9
超级有效!
在神奇宝贝中,有18种类型: Normal Fighting Flying Poison Ground Rock Bug Ghost Steel Fire Water Grass Electric Psychic Ice Dragon Dark Fairy 神奇宝贝可以有一次或两次打字。例如,皮卡丘(Pikachu)是Electric,而暴龙(Tyranitar)是Rock/Dark。类型的顺序无关紧要。神奇宝贝不能两次具有相同的类型。进攻动作恰好是以上18种类型之一。 某些神奇宝贝类型对某些类型的攻击是脆弱的。例如,一个Fire神奇宝贝对Water攻击无能为力。这造成的伤害倍数为2。 某些神奇宝贝类型可以抵抗某些类型的攻击。例如,一个Rock神奇宝贝可以抵抗Normal攻击。这样得出的伤害系数为0.5。 某些神奇宝贝类型对某些类型的攻击免疫。例如,Flying神奇宝贝对Ground攻击具有免疫力。伤害乘数为0。 宠物小精灵可以是双倍虚弱的,双倍抵抗的或对抗攻击类型的任何其他组合。乘以乘数可获得总效果。 编写一个给出移动类型和神奇宝贝类型的程序或函数,输出攻击的总伤害倍数。神奇宝贝的类型总是写为A或A/B,其中A和B是与上一列表不同的类型。您必须接受以这种格式输入的神奇宝贝。除此限制外,您可以任何合理的方式输入信息。可接受的示例输入格式为: "Ice", "Dragon/Flying" 但这是不可接受的: ["Ice", ["Dragon", "Flying"]] 您的输出必须完全是以下字符串之一,然后是可选的尾随换行符: 0x 0.25x 0.5x 1x 2x 4x 例子 Ground, Fire -> 2x Normal, Rock/Dragon -> 0.5x Fighting, Ghost/Steel -> …
42 code-golf 

12
自然产生的素数生成器
有很多主要的生成函数。它们几乎都是基于Eratosthenes筛子,Möbius函数或Wilson定理构造而成的,通常在实践中不可行。但是也有一些发电机,它们的结构非常简单,是偶然发现的。 2003年,Stephen Wolfram在NKS暑期学校的实时计算机实验中探索了一类嵌套递归方程。马修·弗兰克(Matthew Frank)周围的一群人进行了进一步的实验,发现了简单复发的有趣特征 a(n) = a(n-1) + gcd(n,a(n-1)) 起始值为a(1) = 7。差异a(n) - a(n-1) = gcd(n,a(n-1))似乎总是1或素数。前几个区别是(OEIS A132199): 1, 1, 1, 5, 3, 1, 1, 1, 1, 11, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …

10
不是您的常规豆机
考虑类似的机制这个ASCII版本豆机或plinko / 柏青哥游戏: O ^ \ ^ ^ ^ \ \ ^ / ^ U U U U U 1 2 3 4 5 该O是落下来球。 当它达到时^,有50-50的机会会左右移动。 当它/到达时,它总是向左走。 当它达到时\,它总是正确的。 球最终落入U底部的编号槽之一。问题是,每个低谷结束的概率是多少? 对于这种特殊的情况下,该概率是0.0,0.1875,0.5625,0.125,和0.125,用于分别槽1至5。 这里的3个槽代替5.概率是另一个例子0.5,0.5以及0.0: O / ^ ^ U U U 1 2 3 在这个挑战中,我们将把这个问题推广到一种以任何方式设置任意数量的层的机制。 挑战 编写一个程序或函数,该程序或函数采用该机制的金字塔结构的ASCII表示形式。(通过标准输入/命令行/功能参数输入。) 您可能会认为它带有适当形状的空间,例如 ^ \ ^ ^ ^ …

30
至少h与至少h
输入项 非负整数列表。 输出量 最大的非负整数h,使得h列表中的至少一个数字大于或等于h。 测试用例 [0,0,0,0] -> 0 [12,312,33,12] -> 4 [1,2,3,4,5,6,7] -> 4 [22,33,1,2,4] -> 3 [1000,2,2,2] -> 2 [23,42,12,92,39,46,23,56,31,12,43,23,54,23,56,73,35,73,42,12,10,15,35,23,12,42] -> 20 规则 您可以编写完整的程序或函数,也可以使用匿名函数。这是代码高尔夫球,因此最少的字节数获胜。不允许出现标准漏洞。 背景 的h指数是在学术界使用的概念,其目的是捕捉研究员的影响和生产力。根据Wikipedia的说法,如果研究人员已发表h条科学文章,则该文章的索引为h,其中每篇科学文章均被h引用至少h次。因此,这个挑战是关于从引用计数列表中计算h指数。 更新资料 哇,好极了!我接受了最短的一个,但是如果有人提出一个更短的一个,我将相应地更新我的选择。 语言获胜者 这是按语言划分的获奖者名单,我还将尝试保持最新状态。我包括了所有分数均为非负数的帖子。如果我在这里犯了一个错误,请纠正我。 APL:@MorisZucca提供的7个字节 Bash + coreutils:29个字节,@ DigitalTrauma C#:@ LegionMammal978的103个字节 C ++:@ user9587的219字节 CJam:@nutki提供 15个字节 GolfScript:@IlmariKaronen提供的 13个字节 Haskell:@proudhaskeller提供的40个字节 J:@ɐɔıʇǝɥʇuʎs提供的12个字节 Java:@Ypnypn的107个字节 JavaScript:@ edc65提供的48个字节 …

24
绘制锯齿字母
今天很简单。编写最短的程序,以高度为正整数绘制“锯齿字母”。开头的字母时,必须输入编程语言的名称。 例如,如果您的语言是Python,输入是1输出,则应为: ABCDEFGHIJKLMNOPythonQRSTUVWXYZ 如果输入是2输出,则应为: B D F H J L N Python R T V X Z A C E G I K M O Q S U W Y 如果输入是4输出,则应为: D J Python V C E I K O Q U W B F H L N R T …
42 code-golf  string 

30
另一种Meta Regex高尔夫
注意: 遵循大众需求,我稍微放松了规则: 正则表达式的最大大小每5个答案增加1个字节。答案N最多可以使用29 +⌈N/5⌉字节。 每个答案的分数为(M /(30 + N / 5))N 在regex高尔夫中,您会得到两组字符串,并被要求创建最短的regex,该regex与第一组中的所有字符串匹配,但对第二组中的所有字符串都失败。 那就是我们要做的,但是每次有人回答时,他们的正则表达式本身都会被添加到两组字符串之一(由他们自己选择)中。因此,在这个挑战中有严格的答案顺序。 让我们来看一个例子: 说我以abc(我不会)开始,然后将其放在比赛组合中。 然后一个有效的第二个答案将是a,因为它与上述匹配(并且还没有需要失败的字符串)。说这个答案进入失败集。 现在,第三个答案必须匹配,abc但失败了a。因此,可能的第三个答案是b。让我们将其放入匹配集中。 第四答案现在有匹配abc和b,但未能上a。我们将不允许重复的答案,因此有效的正则表达式为c|b。 重要的是您的答案应尽可能简短。对于前几个答案来说,这可能是微不足道的,但是一旦我们得到了几个答案,就应该越来越难以尽可能少的字符来获得所需的匹配。 对于实际的挑战,匹配集最初包含PPCG,失败集包含[PPCG],我已经提供了第一个答案。 接听 了解这一挑战的关键在于,一次只能一个人回答,每个答案取决于之前的回答。 决不应该有两个相同的答案N。如果两个人碰巧同时回答N了一个问题,则稍后回答的人(即使相差几秒钟)也应该宽容地删除他们的答案。 为了使此过程更流畅,请在发布答案时尝试遵循以下步骤: 确保有人独立验证了先前答案的正确性(并留下了相应的评论)。 取上一个答案中找到的两个测试集,并编写一个正则表达式,它匹配一组中的所有字符串,而另一组中的所有字符串都不匹配。 以以下格式发布答案: # N. [regex flavour] - [regex size in bytes] [regex] [link to online regex tester] [notes, explanation, observations, whatever] ### The next answer has …

15
今天下雨
语境 今天是情人节。昨天,你所爱的唯一一个人离开了你,成为了这个她总是觉得“愚蠢而无趣”的家伙。在回家的路上,您一直处于交通阻塞状态,在收音机上听老歌,挡风玻璃上的雨水使您不寒而栗。在车上待了一会儿之后,您发现自己独自呆在小公寓里,除了她以外,别无其他。没有光,你凝视着窗户,让黑暗环绕着你。没有人可以和您聊天,您的朋友很早以前就离开了,因为警告您这个新女孩困扰您。启动计算机,这是您唯一的操作,打开浏览器并发布新的编程难题以进行stackexchange,以改变您的想法。 挑战 用您选择的语言编写一个程序,模拟地面上的雨水。输出可以由ASCII字符或呈现的2D / 3D组成。相机是固定的:您在上面直视地面。您的程序必须包含某种动画,例如每次生成新的“框架”时刷新控制台或页面。它必须是现实的,我知道这有点主观,但是可以说,您不能仅一滴之滴就填满整个领域。 输出不一定要是图像,但是如果您使用的是隐秘语言,则最好提供一个.gif来说明其实际效果(但是,如果您不这样做,它当然不会影响您的分数)。 规则 您的分数是使用的总字节数 如果使用颜色,则为-20分 -50如果达到渲染效果 最低分获胜 例 一个基本的示例,应呈现: 希望您会做得更好,并享受这一挑战。 对不起,我的英语,如果您要更正一些错误,请随时编辑我的帖子 排行榜 如果未列出您的名字,那是因为您的尝试被认为不符合规则。 Tobia - APL - 35 j6m8 - Processing.js - 38 The Guy with The Hat - Processing - 42 ace - Processing - 74 kelunik - JS/CSS - 89 Riot - Bash …
42 code-golf 

30
垂直打印正弦波
打印在终端上垂直滚动的连续正弦波。该程序不应终止,而应连续向下滚动该波形(除非以某种方式被中断)。您可能会认为溢出不是问题(即,您可以使用带有递增计数器的无限循环或无限递归)。 该波应满足以下特性: 幅度= 20个字符(峰值幅度) 期间= 60至65行(含) 输出应仅包含空格,换行符和 | 每行输出后,暂停50ms 样本输出: | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | …

30
确定字符串是否为回文的最短代码
一个回文是一些字符串既前后拼写相同。例如,“伊娃,我可以在山洞里刺蝙蝠吗?” 是回文(EVACANISTAB | BATSINACAVE) 对于此代码高尔夫球,使用您选择的语言,确定给定的字符串是否是回文。 边缘案例: 标点不算为回文症。 控制字符不计入回文。 空格不计入回文错误。 数字计入回文错误。 此挑战中的案例不计入回文症。 除您选择的语言所施加的限制外,要评估的字符串的长度没有限制。 对于此挑战,请将自己限制为ASCII字符集。 技术要求: 仅需要方法主体;方法签名,数据结构声明等其他内容不计入胜诉要求。 代码必须在编译或解释时没有编译时错误或异常。 代码不得抛出任何未处理的异常或崩溃。(几乎不用说。几乎。) 代码必须返回一些指示回文的值。数据类型取决于您使用的语言(例如C#用户可能使用bool,而JavaScript用户可能使用var。) 您可能不会编写自己的解释程序来以“本机”功能执行此任务,因此您可以“推销”接近获胜的分数。(希望不用多说。) 胜利条件: 以字符中最短的代码为准。 现任领导人:tmartin(k,25个字符) ... 您的答案是否想要神奇的绿色复选标记?打败这个家伙的答案!

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.