Questions tagged «code-golf»

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

5
DCSS停尸房文件解析器
在此挑战中,您需要解析来自Roguelike游戏《地牢爬行石汤》的停尸间文件,并将其输出到STDOUT。 这些太平间文件是什么? 死后,将生成一个文本文件,其中包含该字符的数据。您可以看到角色拥有的装备,在最近几回合中发生了什么以及他杀死了多少怪物。 您可以在此处找到一个太平间文件示例 挑战 您的工作是制作一个程序,以从STDIN中获取这些文件之一,进行解析,然后将数据输出至STDOUT。 为了使这一挑战变得容易一些,您只需解析第一段文本。(直到......为止The game lasted <time> (<turns> turns). 您需要解析并输出以下信息: 版本号。 比分。 角色名称,标题,种族和阶级。 角色等级。 死亡/胜利的原因。 运行的转数持续。 例: Dungeon Crawl Stone Soup version <version number> character file. <score> <name> the <title> (level <level>, 224/224 HPs) Began as a <race> <class> on Mar 16, 2015. Was the Champion of …

6
实施用于概率分布的API
介绍 在这个挑战中,您的任务是实现一组简单的函数,这些函数共同构成一个用于简单概率分布的可用小型库。为了适应人们喜欢在这里使用的一些更深奥的语言,可以接受以下实现: 定义命名函数(或最接近的对等函数)集合的代码段。 表达式集合,这些表达式的结果为命名或匿名函数(或最接近的等效函数)。 单个表达式,其结果为几个命名或匿名函数(或最接近的对等函数)。 独立程序的集合,这些独立程序从命令行,STDIN或最接近的等效项获取输入,并输出到STDOUT或最接近的等效项。 功能 您应实现以下功能,并根据需要使用较短的名称。 uniform将两个浮点数a和作为输入b,并返回的均匀分布[a,b]。你可以假设a < b; 情况a ≥ b是不确定的。 blend将三种概率分布作为输入P,Q和R。它返回一个概率分布S,其平值x,y和z从P,Q和R分别和的产率y,如果x ≥ 0和z如果x < 0。 over接受一个浮点数f和一个概率分布作为输入P,并返回从中抽取x ≥ f的随机数所保持的概率。xP 供参考,over可以定义如下(以伪代码表示): over(f, uniform(a, b)): if f <= a: return 1.0 else if f >= b: return 0.0 else: return (b - f)/(b - a) over(f, blend(P, Q, R)): …

1
您好人类,我想找回我的小猫咪照片
注意:这种情况下呈现的所有内容都是伪造的,只是为了使挑战变得更加有趣而已;)...也许不是;) === ===开始传输=== === 您好, 我最近发生了磁盘故障。希望我有备份,现在我想要我的照片。但是,在我居住的并行世界中,每个备份看起来都已损坏。但这不是问题,因为我们有特殊的工具可以帮助用户找回文件。它们的工作方式与您的类似,并且在磁盘周围寻找看起来像图像的标题。当它们仍处于测试阶段时,该软件将恢复找到的任何图像,为其提供一个随机名称并输出包含以下内容的列表: 拍摄照片的相机型号,-如果没有,则为一个。请注意,模型可以包含空格,但不能包含-。 制表符(\t,ASCII 9) 照片文件的名称。 该文件是标准文本文件,如下所示: [...] - uyfeiebsvH.jpg - hv754ce758.gif - 8321214736.jpg - FgnvsfHJBs.jpg - OMGILOVYOU.jpg - HElloDearH.png - umanHAYYSG.jpg COOLCAM S1332 umanIAYYSG.jpg iCell 7G 1234567890.jpg [...] 该文件很大,我不能依靠我的小Ubro将所有带有模型的文件移动到单独的目录中。 亲爱的人类,我需要您的帮助。我希望您将所有包含有关相机数据的照片移到一个单独的目录中,以便从这些混乱的图标,屏幕截图中找到我的小可爱猫咪照片。 但是,这些备份是在My LiquidStateDrive46X上进行的,所以我没有多少空间了(我实际上是在下载Internet,因此,在执行此操作时很难下载其他内容。我可以几乎不上网,您是我发现的唯一一个人!) 不要让我那样生活!请为我编写一个小程序,该程序将为我完成工作,并节省一些Ubro。 因为这是代码高尔夫,所以最短的程序胜出 我需要能够启动您的程序,人类!因此,请确保您的程序具有现有的解释器。 您可以期望列表文件位于我启动脚本的目录中。它将命名为./list.txt 您需要将图像移动到./withmodel/ 恢复的每个映像都位于我启动程序所在的目录中 没有图片以-为名。相机型号也是如此 它需要是一个真实的程序,而不是简单的功能。 无法访问互联网,我正在下载!这真的很重要。 我需要我的猫图像很快,否则我将无法生存:如果我今天还活着,这个代码高尔夫将在10月10日结束。 === ===传输结束=== ===

9
爱情测试员代码高尔夫
创建一个程序,该程序计算两个名称公用的字母总数,并查找其长度的乘积,以充当“爱情测试仪”。 条件:您可能不会得到1:1答案(3之3,等等)输出。 输入项 来自STDIN的两个名称或最接近的替代名称。 输出量 计算x为两个名称之间共有的字母总数,忽略大小写。计算y为名称长度的乘积。然后,输出到STDOUT或最接近的替代品 Name1 and Name2 have x out of y chances of love. 例子 输入: Wesley Polly 输出: Wesley and Polly have 2 out of 30 chances of love. Wesley和Polly有两个共同的字母,y和l,其长度的乘积为6 * 5 = 30。 输入: Bill Jill 输出: Bill and Jill have 3 out of 16 …

7
打印立方体的顶点及其覆盖的三角形
输出立方体顶点的坐标。然后,输出将覆盖该多维数据集的十二个三角形的列表,每个三角形是三个顶点索引(一致定向)的列表。输出必须是不同十进制数字的ASCII字符串。该高尔夫没有输入。优胜者是最少的字符,其中的字符集是Unicode。 例如,考虑一个1x1x1立方体,角为0,0,0。多维数据集的八个顶点可以通过3d笛卡尔网格上的以下xyz坐标来描述: x y z = (0,0,1) (1,0,1) (1,1,1) (0,1,1) (0,0,0) (1,0,0) (1,1,0) (0,1,0) 可以给每个顶点一个索引: x y z->index: 0 0 1->0, 1 0 1->1, 1 1 1->2, 0 1 1->3, 0 0 0->4, 1 0 0->5, 1 1 0->6, 0 1 0->7 现在考虑顶面,索引为零到三的顶点。两个覆盖三角形可以用三个索引分别描述: [0,1,2] [2,3,0] 这是从立方体上方看的这张顶面的图片: 3_____2 | /| | …

24
这是多久以前的?
这是多久以前的? 规则 每个提交必须是完整程序。 程序必须在表单中以两个逗号分隔的日期作为输入YYYY-MM-DD,并将自第二个日期起经过的天数打印到STDOUT,就像今天是第一个日期一样(如果第二个日期在将来,则输出一个负数)加上可选的尾随换行符,仅此而已。假定两个日期都在公历中。 该程序不得向STDERR写入任何内容。 请注意,必须有一个解释器,以便可以测试提交。 提交的得分上字节,在合适的(预先存在的)编码,通常(但不一定)UTF-8。某些语言(例如Folders)很难评分-如有疑问,请在Meta上提问。 这是 代码高尔夫球,因此最短的代码获胜 例子 输入: 2015-12-03,2015-12-01 输出: 2 输入: 2015-12-03,2014-12-01 输出: 367 输入: 2015-12-03,2013-12-03 输出: 730 摘录 这篇文章底部的Stack Snippet通过答案a)作为排行榜和b)作为每种语言的获奖者列表生成了目录。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,则可以通过打败旧分数来保持标题。例如: ## Ruby, <s>104</s> <s>101</s> 96 bytes 如果要在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: ## Perl, 43 + 2 (-p flag) = 45 bytes 您还可以将语言名称设置为链接,然后该链接将显示在代码段中: …
9 code-golf  date 

1
你来自哪里?
INTERCAL是一种很棒的语言,但是要理解他人的代码并不总是那么容易。如果他们使用COME FROM语句,则尤其如此。 挑战定义 编写一个程序或函数,以INTERCAL程序的源代码作为文本/数据流。如果编写函数,建议您还提供一个程序来调用该函数,但它不会计入您的分数。 根据以下说明,函数输出将是程序进行的跳转的文本/数据流。输出不需要打印,但确实需要是单个文本,而不是字符串数组(例如)。 输出的每一行都将包含将为COME FROM的语句及其COME FROM语句的行号,并以分隔->。一个例子: (310) DO .4 <- .3 -> 55 您可以修剪这些行的源代码,但这不是必须的。 测试用例将仅由未计算的标签(即整数标签)组成。 输出必须按照将是COME FROM的语句的源代码顺序(而不是其标签)或COME FROM语句或其标签的顺序进行排序。 多个语句可能来自同一标签。在这种情况下,必须对COME FROM行号进行排序,并用逗号分隔。 有可能使用COME FROM语句本身。 COME FROM语句可以以NOT语句为前缀。在这种情况下,行号必须用方括号括起来。 单词COME FROM可以出现在注释中,必须忽略。您不需要完全解析文件:如果在文件后跟标签(括号中的数字),则可以认为它是一个真实的语句。 计分 参赛者将通过其程序或功能的字符长度进行评分。 测试用例 这些测试用例全部来自calvinmetcalf / intercal Github存储库。尽管任何有用的应用程序都可以安全地接受任何输入,但是出于此挑战的目的,您只需要考虑这五个测试用例。 rot13.i (10) PLEASE DON'T GIVE UP -> 87 (33) DON'T GIVE UP -> 92 primes.i …

3
混沌滴(构建最小非周期性序列)
这里的想法是产生几乎重复的图案。即,正在构建的序列在最后时刻改变,以避免重复某些子序列。应避免使用AA和ABA类型的子序列(其中B不超过A)。 例子: 我将继续列出所有小例子,以使我的描述更加清楚。让我们从0开始。 有效:0 无效:00(AA模式) 有效期:01 无效:010(ABA模式) 无效:011(AA模式) 有效期:012 有效期:0120 无效:0121(ABA模式) 无效:0122(AA模式) 无效:01200(AA模式) 无效:01201(ABA模式; 01-2-01) 无效:01202(ABA模式) 有效期:01203 现在,我坚信4即使我没有证明,也不需要a,因为我很容易找到了仅使用的数百个字符长的序列0123。(这可能与如何只需要三个字符来具有不具有任何AA模式的无限字符串密切相关。此页面上有Wikipedia。) 输入输出 输入是一个非零的正整数n。您可能会认为n <= 1000。 输出是一个- n字符序列,没有与禁止模式(AA或ABA)匹配的子序列。 样本输入和输出 >>> 1 0 >>> 2 01 >>> 3 012 >>> 4 0120 >>> 5 01203 >>> 50 01203102130123103201302103120132102301203102132012 规则 仅0123允许使用字符。 B是不超过A.这是为了避免出现这种情况012345一直要遵循6,因为0123451有这样的:1-2345-1。换句话说,该序列将是琐碎且无趣的。 n可以通过任何所需的方法输入,硬编码除外。 输出可以是列表,也可以是字符串,这取决于哪个更容易。 没有强力 ; …

5
以十进制和2 ** i为基数打印数字表
计算机以二进制形式存在。所有程序员都知道二进制。 但是2**x,尽管它们与二进制文件有着良好的联系,但它们经常被忽略为不实用的。 为了向您展示这种美丽关系的一个例子,我将为19作见证。 19 10011 103 23 13 j 19是十进制数,为清楚起见包括在内。 10011是19的二进制文件。 103,以二进制方式从基数开始以这种方式制作: log2(4)== 2,让我们记住两个。 填充10011,使其长度为2的倍数-> 010011 从左至右取数字2乘2,并将其视为2位数的二进制数: 01-> 1 00-> 0 11-> 3 完成在,10011碱-4是103。 对于基数8,执行与log2(8)= 3相同的操作,但三乘三。 垫子010011 010-> 2 011-> 3 23,完成。 对于基数16,请执行与log2(16)= 4相同的操作,但4乘4。 垫00010011 0001-> 1 0011-> 3 13,完成。 任务 给定一个最大数字作为输入,您将输出一个表 base-ten-i base-two-i base-four-i base-eight-i base-sixteen-i base-thirtytwo-i 因为我从0到n(含)。二进制数是工作所需的绝对最小值的缩影,因此您的代码应尽可能短。 限制和奖金 …

4
多米诺瓷砖的数量
编写一个给定正n和m的程序或函数,以计算可以放入n × m矩形中的有效不同多米诺骨牌拼贴的数量。这是序列A099390在整数序列的在线百科全书。您可以采用任何合理的格式将输入作为函数参数,CLA或stdin接受。您必须返回或打印单个整数作为输出。 每个平铺块都不得留有任何间隙,并且会计算每个不同的平铺块,包括旋转,反射等。例如,2x3的平铺块为: |-- ||| --| |-- ||| --| 输入/输出示例: 1, 9 -> 0 2, 2 -> 2 2, 3 -> 3 4, 4 -> 36 4, 6 -> 281 6, 6 -> 6728 7, 10 -> 53175517 从理论上讲,您的程序应可用于任何n和m,但是如果您的程序需要太多内存或数据类型溢出,则可以使用。您的程序必须能正确地工作任何n,但是m <= 8。 以字节为单位的最短代码获胜。

7
Digital River(最快捷的解决方案)
这是我的第一个问题,所以我希望它顺利进行。 背景: 您可能正在考虑的不是河流。问题围绕数字河流的概念展开。数字河流是数字的序列,其中数字以下n是n加上其数字的总和。 说明: 12345后跟12360,因为1 + 2 + 3 + 4 + 5 = 15,所以12345 + 15给出12360。类似地145后跟155。如果数字河的第一个数字,M我们将其称为河M。 例如:河480是从{480,492,507,519 ....}开始的序列,河483是从{483,498,519,....}开始的序列。正常的河流和河流可以汇合,数字河流也是如此。当两条数字河流共享一些相同的值时,就会发生这种情况。 例: 河480在519与河483相遇。河480在507与河507相遇,而从不与河481相遇。每条数字河最终都会与河1,河3或河9相遇。 编写一个程序,该程序可以为给定的整数确定n河流n首先遇到这三条河流之一的值。 输入项 输入可能包含多个测试用例。每个测试用例都占一行,并包含一个整数n(1 <= n <= 16384)。值为0for的测试用例将n终止输入,并且不得对该测试用例进行处理。 输出量 对于输入中的每个测试用例,首先输出测试用例编号(从1开始),如示例输出中所示。然后在单独的行输出中,行“首先在y处遇到河x”。y是河流n首先与河流相遇的最小值x(x = 1或3或9)。如果河流在处与河流n相交的值大于一个值,则输出最低值。在两个连续的测试用例之间打印空白行。xyx 测试用例 输入: 86 12345 0 输出: Case #1 first meets river 1 at 101 Case #2 first meets …

3
位数最大的平方
您应该编写一个程序或函数,该程序将接收数字列表作为输入并输出,或者通过将这些数字放在一个正方形中来返回最大的和。 输入将始终包含数字的平方。输入的示例正方形排列9 1 2 3 4 5 6 7 7可以是 677 943 125 该总和计算为所有行和列的总和。对于上述安排,总和为677 + 943 + 125 + 691 + 742 + 735 = 3913。请注意,这不是最大和,因此这不是预期的输出。 输入项 长度为n^2(n>=1)的列表包含非零数字(1-9)。 输出量 一个整数,用一个正方形输入的数字可达到的最大和。 例子 示例格式为input => output。 5 => 10 1 2 3 4 => 137 5 8 6 8 => 324 9 …

4
铁面无私
不可触碰的数字α 不可触摸数字是一个正整数,不能表示为任何正整数的所有适当除数的总和(包括不可触摸数字本身)。 例如,数字4是不可触摸的,因为它等于9:1 + 3 = 4的适当除数的总和。数字5是不可触摸的,因为它不是任何正整数的适当除数的总和。5 = 1 + 4是将5写为包括1的不同正整数之和的唯一方法,但是如果4除以一个数字,则2也是如此,因此1 + 4不能是任何数字的适当除数的和(因为因素列表必须同时包含4和2)。 人们认为数字5是唯一的不可触摸的奇数,但这尚未得到证明:哥德巴赫猜想的一个更​​强的版本将紧随其后。β 保罗·埃尔德斯(PaulErdős)证明了无数个不可动摇的数字。 不可触摸的一些属性: 没有碰到的东西比素数大1 除5外,其他所有元素都不能比素数大3 没有碰到的是一个完美的数字 到目前为止,除2和5之外的所有不可触摸内容都是复合的。 目的 创建一个程序或函数,该程序或函数n通过标准输入或函数参数获取自然数并打印第一个n不可触摸的数。 输出必须在数字之间有分隔符,但是可以是任何分隔符(例如,换行符,逗号,空格等)。 这至少应该能够工作1 <= n <= 8153。这是基于在b文件为OEIS项中提供的事实γ上升到n = 8153。 像往常一样,不允许出现标准漏洞。 示例I / O 1 -> 2 2 -> 2, 5 4 -> 2, 5, 52, 88 10 -> 2, …

1
淘汰概率
淘汰赛是一种篮球比赛,球员轮流投篮。它按两人比赛的顺序进行,每场比赛都有可能“淘汰”其中一名球员。 假设球员A B C D和他们的投篮机会和制造篮筐的机会0.1 0.2 0.3 0.4分别与比赛中的其他球员无关。两位选手在该行的前面,A而B“战斗”。由于A先行,他是后卫,在被淘汰出局的危险,并且B是攻击者,而不是立即消除危险。A首先射击。如果成功A,则A已经成功防御,并前进到了队伍的后部。该行将更改为B C D A。如果A没有成功,则B射击。如果B成功,则出线A并B转到行尾,因此行变为C D B。如果两者都不A如果没有B成功,则重复此过程,并A再次射击,直到A或B做出一个篮子。 假设线路更改为B C D A(A已成功防御)。现在,B与C“战斗”B作为后卫,并且C是攻击者。重复此过程,直到只剩下一个人为止。那个人是赢家。 您的任务是计算每个人赢得一篮子机会的获胜概率。 输入: 数字列表,例如0.1 0.2或0.5 0.5 0.5 0.5,其中第n个数字是第n个个玩家上篮。您可以采用任意格式的输入,包括作为函数的参数。 输出量: 数字列表,其中第n个数字是第n个玩家赢得比赛的机会。您的数字至少在90%的时间内必须精确到至少两位小数。这意味着您可以使用基于仿真的方法。但是,如果您的代码不是基于仿真的(可以保证返回正确的答案至少到小数点后6位),那么您的分数将减少30%。 之间的示例0.5 0.5:呼叫玩家A和B。设pA获胜的概率。A拥有2/3的成功卫冕的机会(因为有一个1/2机会A得分,一个1/4机会,A命中和B得分和1/4机会都错过并重复上述过程)。如果A未能防守,他将被淘汰并B获胜。如果A防御,则该行变为B A。由于情况是对称的,因此A获胜的概率为(1 - p)。我们得到: p = 2/3 * (1 - p) + 1/3 * 0。解决,我们得到p = 2/5。输出应为2/5 3/5或0.4 0.6。 我没有足够的机率做更复杂的例子。 如果您需要更多的测试用例,请参考以下几个示例: 0.1 0.2 …

1
行军广场查询
Marching Squares是计算机图形学中的一种算法,用于从样本网格中恢复2D等值线(有关3D设置,另请参见其兄长Marching Cubes)。想法是独立处理网格的每个像元,并根据其角处的值确定通过该像元的轮廓。 此过程的第一步是根据拐角是在轮廓值上方还是下方,确定轮廓连接哪些边缘。为简单起见,我们只考虑沿value的轮廓0,这样我们对拐角是正还是负感兴趣。有一些情况可以区分:24 = 16 图片来源:Wikipedia 白色和黑色的识别在这里并不重要,但是为了明确起见,请说白色为正,黑色为负。我们将忽略其中一个角正好是1的情况0。 鞍点(案例5和案例10)提供了一些额外的困难:仅通过查看拐角并不清楚应该使用哪些对角线。这可以通过找到四个角的平均值(即中心值的近似值)并选择对角线以使轮廓将中心与带有相反符号的角分开来解决。如果平均值恰好是0,则可以选择任何一种情况。 通常,这16种情况仅存储在查找表中。这对于提高效率非常有用,但是当然,我们希望此处的代码简短。因此,您的任务是执行此查找步骤,并以尽可能少的代码打印出外壳的ASCII表示形式。 挑战 您将以选择的固定顺序获得四个角(非零整数)的值。然后,您应该生成轮廓的正确布局,以正确解决鞍点情况。 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行自变量或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。 输入可以采用任何方便的字符串或列表格式。 这16种情况将使用以下5x5块之一以ASCII艺术形式表示: o---o o---o o---o | | | | | | | | | |---| | | | | | | | | | | o---o o---o o---o o---o o---o o---o o---o |/ | | \| | …

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.