Questions tagged «code-golf»

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

12
官方Ruby检查器
这是一个简单的ASCII艺术红宝石: ___ /\_/\ /_/ \_\ \ \_/ / \/_\/ 作为ASCII宝石公司的珠宝商,您的工作是检查新近获得的红宝石,并留下任何发现的缺陷的注释。 幸运的是,只有12种类型的缺陷是可能的,并且您的供应商保证没有任何一种红宝石会存在多个缺陷。 12个缺陷对应于更换12内中的一个的_,/或\红宝石的字符与一个空格字符()。红宝石的外围永远不会有缺陷。 缺陷根据内部字符在其位置留有空格的方式编号: 因此,缺陷为1的红宝石如下所示: ___ /\_/\ /_/ _\ \ \_/ / \/_\/ 缺陷为11的红宝石如下所示: ___ /\_/\ /_/ \_\ \ \_/ / \ _\/ 其他所有缺陷也是相同的想法。 挑战 编写一个程序或函数,该程序或函数采用单个可能有缺陷的红宝石的字符串。缺陷编号应打印或退回。如果没有缺陷,则缺陷编号为0。 从文本文件,stdin或字符串函数参数获取输入。返回缺陷编号或将其打印到标准输出。 您可以假设红宝石带有尾随换行符。您可能不会假定它有任何空格或前导换行符。 以字节为单位的最短代码获胜。(方便的字节计数器。) 测试用例 13种准确的红宝石类型,紧随其后的是预期产量: ___ /\_/\ /_/ \_\ \ \_/ / \/_\/ 0 ___ …

30
多次运行的数字
任务 找到一组数字,使二进制表示形式包含两个或多个1由至少一个隔开的游程0。 例如,对于4位长的数字: 0 0000 (no ones) 1 0001 (only one run) 2 0010 (only one run) 3 0011 (only one run) 4 0100 (only one run) 5 0101 Valid 6 0110 (only one run) 7 0111 (only one run) 8 1000 (only one run) 9 1001 Valid 10 1010 …
30 code-golf  binary 

26
整数标记成等级
给定正整数(0及以上,没有最大值),请遵循以下规则将其转换为等级: A = 100+ B = 90 - 99 C = 80 - 89 D = 70 - 79 E = 60 - 69 F = 59 and less. 这感觉有些无聊,因此+如果成绩为7,8或9,-则为a;如果分数为0,1或2,则为a。对于F和A情况,请忽略此等级。 一个例子: 输入: 65 输出: E 测试用例: 0 -> F 20 -> F 65 -> E 72 -> D- 75 -> …
30 code-golf 

9
计算阶乘的逆
编写最短的代码,该代码将接受大于1的任何实数作为输入,并输出其正反阶乘。换句话说,它回答“什么阶乘等于该数字?”的问题。使用伽玛功能作为描述阶乘扩展定义任意实数这里。 例如: input=6 output=3 input=10 output=3.390077654 因为3! = 6和3.390077654! = 10 规则 禁止使用内置的阶乘函数或伽马函数,或依赖于这些函数的函数。 该程序应该能够将其计算为5个十进制数字,并且具有理论上能够将其计算为任意精度的能力(它应该包含可以任意增大或减小以获取任意精度的数字) 允许使用任何语言,以字符中最短的代码为准。 我在这里做了一个有效的例子。看一看。

3
建立铁轨并欺骗政府
您是19世纪美国的铁路企业家,火车之所以流行,是因为火车是陆上运输大量物料的最有效手段。从东部沿海到西部一些最近被殖民的土地,全国都需要铁轨。 为了满足这种需求,美国政府将征收税款以补贴铁路。他们答应为铺设的每一英里轨道向您的铁路公司付款。由于在丘陵和山区铺设铁轨比在平坦的土地上铺设铁轨更昂贵,因此它们会相应地调整其用量。也就是说,政府将支付 在平坦土地上铺设的每英里轨道5,000美元 在丘陵地带铺设的每英里航迹为$ 12,500 每英里在山上铺设的路线20,000美元。 当然,该计划不能准确反映铺设轨道的实际成本。 您已经雇用了一些制图师来绘制您将要分析高程的区域的地形图。这是一张这样的地图: S12321 121234 348E96 每个数字代表一平方英里的土地。S是起点,E是终点。每个数字代表该区域中海拔变化的强度。 编号为1-3的土地构成平地。 编号为4-6的土地构成丘陵地。 编号为7-9的土地构成山脉。 通过多年的铁轨建设经验,您已经评估出铁路建设成本(以美元为单位)满足以下公式: Cost_Per_Mile = 5000 + (1500 * (Elevation_Rating - 1)) 这意味着在某些海拔梯度上修建房屋将比政府给您更多的钱,有时它会有利可图,有时您甚至会收支平衡。 例如,在海拔3的坡度上行驶一英里需要花费8,000美元,但是您只得到5,000美元的报酬,因此损失了3000美元。相比之下,在海拔高度为7的位置上建立一英里的轨道需要花费$ 14,000,但是您却获得了$ 20,000的收益:获利$ 6,000! 这是示例地图以及两个不同的可能路径。 S29 S#9 S## 134 1#4 1## 28E 2#E 2#E 第一条轨道的建造成本为30,000美元,但政府会为您支付30,000美元。您不会从此轨道中获利。 另一方面,第二台的建造成本为56,500美元,但您会得到62,500美元的报酬。您从此轨道中获利$ 6,000。 您的目标:给出一个浮雕图,找到从头到尾最有利可图(或也许仅仅是最便宜)的路径。如果有多个路径绑定,则其中任何一个都是可接受的解决方案。 计划详情 文本输入由矩形的数字和一个起点和终点分隔。每个数字都是1到9之间的一个整数(包括1和9)。除此之外,可以在合理的范围内根据需要提供输入。 输出应采用与输入相同的格式,其中已将构建轨道的数字替换为哈希(#)。由于某些反复无常的政治家施加了任意规定,因此轨道只能沿水平或垂直路径行驶。换句话说,您不能回溯或对角线走。 对于最多6行和6列的地图,该程序应能够在合理的时间内(即<10分钟)求解。 这是一场代码高尔夫挑战赛,因此最短的程序胜出。 我有一个示例(非高尔夫)实现。 …

24
加入片段的N个副本以产生N ^ 2个字符
挑战 编写尽可能短的代码段,以便将N个副本串联在一起时,输出的字符数为N 2。N将为正整数。 例如,如果代码段为soln();,则运行soln();将仅打印1个字符,运行soln();soln();将仅打印4个字符,运行soln();soln();soln();将仅打印9个字符,依此类推。 只要字符总数正确,输出中就可以包含任何字符。为了避免跨OS的混淆,\r\n换行符被视为一个字符。 程序可能无法读取其自身的源代码或读取其文件大小或使用其他此类漏洞。将此视为严格的奎因挑战。 输出可能会转到stdout或文件或类似的替代文件。没有输入。 代码中的注释很好,退出执行过程中也是如此。 程序中可能包含任何字符。以字节为单位的最短提交获胜。

6
平衡化学方程式!
伯恩德(Bernd)是一名高中生,在化学方面有一些问题。在课堂上,他必须为正在进行的某些实验设计化学方程式,例如庚烷的燃烧: C 7 H 16 + 11O 2 →7CO 2 + 8H 2 O 由于数学并不是Bernd最强的学科,因此他经常很难找到反应的正负离子之间的确切比例。既然您是Bernd的家庭教师,那么帮助他就是您的工作!编写一个程序,计算获得有效化学方程式所需的每种物质的量。 输入值 输入是没有数量的化学方程式。为了使纯ASCII码成为可能,我们将任何订阅都写为普通数字。元素名称始终以大写字母开头,后跟小写字母。分子之间用+符号分隔,->等式两边之间插入了ASCII箭头: Al+Fe2O4->Fe+Al2O3 输入以换行符终止,并且不会包含任何空格。如果输入无效,则您的程序可以执行您喜欢的任何操作。 您可能会假设输入内容的长度不得超过1024个字符。您的程序可能无法从标准输入,从第一个参数读取输入,也可能会在运行时以实现定义的方式读取输入。 输出量 程序的输出是输入方程式,其中增加了额外的数字。每个元素的原子数在箭头的两侧必须相同。对于上面的示例,有效输出为: 2Al+Fe2O3->2Fe+Al2O3 如果一个分子的数目为1,则将其删除。数字必须始终为正整数。您的程序必须产生数字,以使它们的和最小。例如,以下内容是非法的: 40Al+20Fe2O3->40Fe+20Al2O3 如果没有解决方案,请打印 Nope! 代替。没有解决方案的样本输入是 Pb->Au 规则 这是代码高尔夫球。最短的代码获胜。 您的程序必须在合理的时间内终止所有合理的输入。 测试用例 每个测试用例都有两行:输入和正确的输出。 C7H16+O2->CO2+H2O C7H16+11O2->7CO2+8H2O Al+Fe2O3->Fe+Al2O3 2Al+Fe2O3->2Fe+Al2O3 Pb->Au Nope!

11
打印,递增,递减,别名-解释本领
Prindeal(明显的首席- DEE-AL)是一种新的深奥的编程语言,只有四个命令:PR INT,在 crement,德 crement,和人 IAS。尽管极简,但可以通过巧妙地组合四个命令在Prindeal中完成复杂的数学运算。 在此挑战代码中,您的任务是编写可以运行Prindeal代码的最短程序。 规范很长,但是我已经尽力使它更清晰了,我相信,如果您努力学习Prindeal,您会发现它非常优雅! 领主 预处理 在解释Prindeal程序之前,需要按以下顺序从其中删除这些内容: #行尾的符号后的所有内容,再加上#本身。(这些是评论。) 任意行上的尾随空格。 完全空行。 例如,Prindeal程序 p cat #The next line has 7 trailing spaces. p dog #p mouse 将被预处理成 p cat p dog 从这里开始,我们假设此预处理步骤已经完成。 变数 在显示变量的用法之前,我们需要快速定义变量。 变量(以及对变量的引用)是传递给Prindeal命令的参数的。变量始终是全局变量,因此无论变量在何处出现,其修改都会随处可见。 每个变量都包含一个非负的任意精度整数(0、1、2、3,...)。变量不需要预先初始化- 首次使用或调用变量时,它们始终以0开头。 变量名称可以是任何非空的字母数字和下划线,但不能以数字[a-zA-Z_][0-9a-zA-Z_]*输入正则表达式开头。他们是大小写敏感的,所以spiny_lumpsuck3r和Spiny_lumpsuck3r是不同的变量。 执行 Prindeal是命令式编程语言。当运行Prindeal程序时,其语句从上到下依次执行,然后该程序结束。 Prindeal程序中的每条非缩进行都是一条语句,该语句涉及单个命令的执行,该命令可以带或不带参数。 缩进行仅在别名命令之后出现。具体来说,在每条别名命令之后,恰好有三行缩进一个空格, 并被视为其中一部分。因此,别名语句实际上是四行。(它们可能是一行,而四行则更具可读性。) 非别名语句 除alias之外,Prindeal程序中的每个语句都具有以下形式: [command name] [argument …

23
在多个会话中递增数字
晚上好,高尔夫经纪人, 您的任务是代表着名的娱乐巨人Eviltronic Arts。作为其全球奴役和娱乐计划的一部分,他们必须出售尽可能多的SimStation V副本。这意味着该软件必须在启动几次后神秘地停止工作。 您的目标是编写一个计算其运行次数的程序。程序除了将整数写入stdout之外,什么都不做。第一次运行时,它应该返回“ 1”。下一个“ 2”,依此类推。该程序必须至少能够达到数字“ 14”,但没有要求的上限。 但是,您的程序不得写入任何新文件。完全可以访问自身,注册表,甚至是Internet。但是我们的某些用户怀疑新文件,只会覆盖它们!好紧张!击败他们合法购买的软件限制! 该程序不能采用稳定的解释器或外壳程序-如果在运行之间重新启动整个解释器,则该程序必须仍然可以运行。 由于必须尽可能地不可检测,因此将以最短的源代码为准。 祝你好运。娱乐业指望您。
30 code-golf 

11
将高度图交换为深度图
描述 您的任务是输出一个“深度图”-即对象的高度图,但不是从其顶部而是从其正面看到。 例如,考虑以下对象,如图所示。高度图显示在左侧。相应的深度图应为(如从箭头处看到的那样): 010 211 <- Depthmap 322 如果您站在箭头处,则在左下角点处彼此后面有3个多维数据集,在左中角点处彼此后面有2个立方体,在左上角点处有0个立方体等。 输入值 输入是任何大小的二维数组(不一定是正方形)。 输出量 输出是另一个二维数组,它表示深度图。可以推断,其大小为(height x width)。在图像中,它将为(3 x 3)。请注意,如果多维数据集的最高塔为5,则深度图将是的数组(5 x 3)。 获奖条件 最短的代码获胜。 不允许的 允许所有语言,没有明确的限制。(我不知道你能想出什么,但是请公平对待。) 例子 Input: Ouput: 5321 0001 1456 1012 2105 1112 1212 2222 3323 Input: Output: 22 01 13 12 00 22 Input: Output: (of the sample image) 232 …
30 code-golf 

19
容易键入的单词
这场比赛结束了。 获胜者是CJam(22个字符),比TwiNight的答案要高一个字符。恭喜丹尼斯! 值得一提的是法尔科(Falko),他对免费进口产品一无所知。 。 不久前,我想知道如何用诺基亚3310淘汰现代智能手机,尽管确实有一些答案,但我仍然跟不上!也许我应该采取不同的方法,根本不要写任何难以输入的单词。 如果在标准布局下,电话键盘上的同一按钮上没有两个连续的字母,我们将称其为易于键入的文本: 你的任务 您的任务是编写一个程序/函数,该程序可以接受s来自stdin / 的字符串作为参数,如果s可以轻松键入,则返回真实值,否则返回虚假值。输入将仅包含小写字母和空格,并且保证为非空! 计分 这是代码高尔夫,因此最少的字符数获胜。 进口报表将不会对你的最后得分进行计数,所以如果你曾经想使用std::set_symmetric_difference,liftM4或itertools.combinations在你的代码,现在是时候了! -3如果您的源代码可以轻松键入,并且假设所有不是字母的内容都位于按钮0上。毕竟,我可能想将您的代码发送给一些朋友! 测试用例 以下是一些测试用例,以检查您的代码是否按预期工作: "x" -> True "aardvark" -> False "ardvark" -> True "flonk" -> False "im codegolfing all day long" -> False "i indulge in minimizing bytecount" -> True "havent heard from you in a long time" …
30 code-golf 

30
在不使用+,-操作的情况下检查整数是否为2的幂。
编写一个程序检查整数是否为2的幂。 输入样例: 8 样本输出: Yes 输入样例: 10 样本输出: No 规则: 不要使用+,-操作。 使用某种输入流来获取数字。输入不应最初存储在变量中。 最短的代码(以字节为单位)获胜。 您可以使用任何真实/错误的响应(例如true/ false)。您可以假设输入数字大于0。

19
将数字转换为代表最多“ 4”的基数
灵感来自此。有一个数字,可以是整数,字符串或数字数组(您可以选择)。找到该数字表示形式将具有最多“ 4”的基数,然后返回该基数。 编号结果 624 5 444 10 68 16 限制条件: 返回的基数不应大于输入值。 小于或等于abs(4)的数字不应视为有效输入,因此可接受未定义的返回值
30 code-golf  number 

16
将两个数字相乘而不使用任何数字
给出两个以10为底的正整数的字符串作为输入,例如"12345"和"42"。"518490"在这种情况下,您的任务是输出包含其产品的字符串。 所不同的是,您不得在代码中使用任何数字类型。No ints,floats,unsigned longs等,没有内置的复数类型或任意精度的整数,或沿这些线的任何内容。您可能没有使用这些类型的文字,也没有使用返回它们的任何函数,方法,运算符等。 您可以使用字符串,布尔值,数组或其他通常不用于表示数字的东西。(但是请注意,不调用数字类型就不可能索引到数组或获取数组的长度。)chars是允许的,但是您不能对它们执行任何算术或按位运算,也不能将其视为除表示字符串一部分的令牌。(char允许对s进行字典比较。) 您可能无法解决该限制。这包括(但不限于)在eval类型函数内使用数字类型,将隐式类型转换为数字类型,对支持它们的非数字类型使用数字或按位运算符,使用存储在容器类型内部的数字类型或调用函数或外部程序以字符串形式返回数值结果。(如果答案中出现其他解决方法,我保留添加到此列表的权利。)您必须仅使用非数字类型自己实现乘法。 输入和输出可以通过任何方便的方法进行,只要数据以字符串形式进入和退出您的代码即可。您可以假定两个输入参数中的每个参数仅包含ASCII字符,[0-9]并且不会以开头0。您的输出也不应该有前导零。 还有一件事:您的代码必须正确处理至少10个字符的输入,并且必须在一分钟之内在现代计算机上运行该范围内的所有输入。发布之前,请检查给定输入9999999999和时9999999999,程序99999999980000000001在不到一分钟的时间内输出。专门存在此限制是为了避免通过分配大小数组a*b然后对其进行迭代来起作用的答案,因此请记住,该形式的答案将不符合要求。 这是代码高尔夫球,因此最短的有效解决方案(以字节为单位)获胜。

30
编写交互式Deadfish解释器
Deadfish是一个带有四个命令的玩笑“编程语言”。由于Esolang页面有点矛盾,并且该页面上的解释器工作原理并不完全相同,因此您应该实现以下变体: 规格 有一个累加器,其大小至少为 16位,允许更多但不允许更少。不需要支持负数。0程序启动时就是累加器。 以下是两个包含四个命令的集合,您的程序必须同时支持两个命令。 标准死鱼│XKCD变体│含义 ────────────────┼────┼────────┼ ────────────────────────── i│x│累加器 d│d│减量累加器 s│k│平方(acc = acc * acc) o│c│输出累加器,以数字表示 在执行命令后,如果累加器为-1或256,则必须将累加器重置为零。请注意,这不是正常的环绕。例如,如果累加器为20,并且s运行命令,则应在400其后。同样,如果累加器为257且d运行命令,则累加器应变为0。 任何不是这些命令之一的输入都应被忽略。 测试程序 xiskso 应该输出 0 xiskisc 应该输出 289 输入输出 您的程序应显示提示:>>。提示必须在新行的开头。然后,它应该读取一行用户输入,并从左到右运行给定的命令。输出数字时,必须将数字分开。即12 34可以,12,34可以, 12 34 可以,但1234不能。 您的程序应继续循环执行此操作,至少直到EOF达到为止。 会话示例: >> xiskso 0 >> xiskisc 289 >> ddddo ddddo 285 281 >> ddddo ddddo 277 273 >> …

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.