Questions tagged «code-golf»

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

12
玩消除游戏
介绍 在这个挑战中,您的任务是模拟某种消除游戏。在游戏中,参与者围成一个圆圈,每个人都拿着一个整数。在游戏的每一轮中,每个参与者都指向该人n走开(如果n他们持有的人数)。如果n为正,则在其右边进行计数;如果n为负,则在其左侧进行计数;如果n为零,则它们指向自己。每个有人指着他们的参与者都将被淘汰,并离开圈子。这结束了回合。巡回赛一直持续到没有参与者离开为止。 输入值 您的输入是非空整数列表,采用任何合理格式。它代表游戏参与者持有的数字。 输出量 您的输出是直到游戏结束为止的回合数。 例 考虑输入列表[3,1,-2,0,8]。在第一轮中,发生以下情况: 持有人3指向持有人0。 持有人1指向持有人-2。 持有人-2指向持有人3。 持有人0指着自己。 持有人8指向持有人的权利-2(列表代表一个圆圈,因此在末尾环绕)。 ,这意味着0,-2和3被淘汰,所以第二轮与清单进行[1,8]。在这里,1指向8,然后8指向自己,因此8被消除。第三轮与清单进行[1],在那里1只需要点在自理和消除。经过三轮淘汰所有参与者,所以正确的输出是3。 规则和计分 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 [3] -> 1 [0,0,0] -> 1 [-2,-1,0,1,2,3,4,5,6,7] -> 2 [5,5,5,6,6,6] -> 2 [3,-7,-13,18,-10,8] -> 2 [-7,5,1,-5,-13,-10,9] -> 2 [4,20,19,16,8,-9,-14,-2,17,7,2,-2,10,0,18,-5,-5,20] -> 3 [11,2,7,-6,-15,-8,15,-12,-2,-8,-17,6,-6,-5,0,-20,-2,11,1] -> 4 [2,-12,-11,7,-16,9,15,-10,7,3,-17,18,6,6,13,0,18,10,-7,-1] -> 3 [18,-18,-16,-2,-19,1,-9,-18,2,1,6,-15,12,3,-10,8,-3,7,-4,-11,5,-15,17,17,-20,11,-13,9,15] -> 6

30
从字符串中删除重复的单词
从输入的句子中删除所有重复的单词。 输入将类似于cat dog cat dog bird dog Snake snake Snake,输出应为cat dog bird Snake snake。始终会有单个空格分隔单词。 输出顺序必须与输入相同。(请参阅示例) 您不需要处理标点符号,但需要处理大写字母。
12 code-golf  string 

3
曼哈顿数学
我定义以下运算符: 曼哈顿加法 a + M b(对于一位数字)是将b连接到a的结果。因此,a + M b = 10a + b。因此,通用运算符+ M的定义如下: a + M b = 10a + b 曼哈顿减法 a – M b(对于一位数字)是从a中删除最后一个b的结果。因此,运算符– M的定义如下: a – M b = a最后删除b 曼哈顿乘法 a× M b是用b的b实例替换a中的b的所有实例的结果。因此,× M在伪代码中定义为: a× M b = a-> s / b / <b b> …

3
生成单调函数
总览 在此挑战中,您的任务是在两组之间随机生成单调数学函数。 输入值 您的输入是两个正整数s和n。 让这些输入后,你的程序将生成一个随机的数学函数f从集合到。换句话说,是一个“规则”,它在和之间取一个整数元组,并返回一个这样的整数。此外,在以下意义上应该是单调的。如果和是对每个坐标都成立的两个元组,则。{0,1,...,s-1}n{0,1,...,s-1}fn0s-1fABnA[i] ≥ B[i]if(A) ≥ f(B) 单调函数的确切分布f无关紧要,只要每个这样的函数具有正的生成概率(假设一个完美的RNG)即可。 输出量 您的输出应为的输入和输出的枚举f。它应包含n介于0或之间的所有整数元组,并s-1以某种顺序排列,每个整数后跟的对应输出f。确切的输出格式是灵活的(在合理范围内)。 例子 输入s = 3并n = 2可能产生输出 (0, 0) 0 (0, 1) 1 (0, 2) 2 (1, 0) 0 (1, 1) 1 (1, 2) 2 (2, 0) 1 (2, 1) 1 (2, 2) 2 它只对集合中的所有对都包含{0, 1, 2}一次,并且每个对之后都f带有-value。也满足单调性条件。元组在这里按字典顺序给出,但这不是必需的。 再举一个例子,s = …

5
兄弟,再见!
我们大多数人迷失了记忆,他们记得戴斯蒙德必须在每108分钟内键入一个字符“ 4 8 15 16 23 42”,否则世界将终结(或者会终结?)。 这里的挑战是创建一个程序,该程序通过要求每108秒输入一次4 8 15 16 23 42输入或显示消息来执行相同的操作 Sorry, the world has ended with status code -1 它应该在100秒时警告用户他们需要输入带有消息的数字 Enter, Quick! 该程序必须能够随时读取输入,如果输入正确,它将重置计时器。如果输入错误,则什么也不会发生。 该程序应无限期运行。所以最后一个有效输入之后的时间线看起来像 从0到99秒:无输出 100秒:Enter, Quick! 108秒:Sorry, the world has ended with status code -1。 这是代码高尔夫球,因此完成此任务的最短答案(以字节为单位)将获胜!祝好运!

4
救救飞行员!
题 我们被他们的空间站上的机器人军队俘虏了。我们的太空船飞行员在1级监狱中。只有一种逃生方法,它正在救助您的太空船飞行员。这意味着要从N级升级到1级。但是,由于这样做非常危险,因此您需要以最少的步骤进入监狱。 条件 有四种移动方式: 从N级移至N-1级 e.g. from 12 to 11 从N级移至N + 1级 e.g. from 12 to 13 使用从2k到k等级的传送 e.g. from 12 to 6 从3k级到k级使用传送 e.g. from 12 to 4 传送仅是单向的(可以从12变为4,但不可能从4变为12) 每一步都迈出一步 输入值 输入应从STDIN或您编程语言中最接近的替代版本中读取。输入包含一个整数n,其中1 <= n <= 10^8。 输出量 输出应该是n达到第1级所需要的最少步骤数。 例子 Level Minimum number of steps 1 0 8 3 …
12 code-golf 

2
绘制SQL输出表
我敢肯定,我们大多数人都已经在终端中看到了SQL结果,它们都整齐地格式化为行和列。如果您还没有,请参考以下示例: +----------+-----------+----------------+ | column 1 | column 2 | column 3 | +----------+-----------+----------------+ | data | more data | even more data | | etc | just goes | on and on | +----------+-----------+----------------+ 您面临的这个挑战的目标是,在给定表格的列和行数据的情况下,以这种样式绘制表格。在表格的顶部和底部应该有一条水平线,在标题行的正下方。每列之间应有垂直线,表格两边应有一条垂直线。您应该将管道用于垂直线,将连字符用于水平线,并将加号用于相交的位置。 细节: 数据可以通过stdin输入,也可以作为函数的参数输入,但是必须采用某种字符串形式 数据应由字符串定界符分隔 ; 数据将仅包含ASCII字符,不加引号,并且不包含定界符。 数据的第一行将用于列标题 数据将始终具有相同的列数 输入将始终至少包含两行(一个标题,一个数据)。您不必处理空集。 尾随或换行符是允许的 每列应与最宽的元素一样宽,在右侧填充较短的元素(如果在左侧填充数字,则加-5%) 标头和数据前后应有1个填充空间,除非列较宽 您无权使用实际mysql程序生成表 适用标准漏洞 样本输入: column …
12 code-golf 

3
前面的路涂
给定两个参数车道模式和道路长度,打印用于道路和交通服务的车道标记的ASCII表示形式以绘制道路。 输入/输出示例 输入: BTHMLRPHU,21 我不在乎您是否使用两个参数或将数字连接到字符串的末尾,这是明确的。 输入可能来自STDIN,作为函数参数,环境变量,无论您使用哪种语言都可以。 输出: ! | x ## | | x x ! ! B | /\ x HOV3 ## <- | -> | ^^ x HOV3 x ! ! B | \/ x HOV3 ## | | | | ^^ x HOV3 x ! ! | …

14
复合数字序列
复合数字序列 灵感来自这个问题 给定正整数n,您的代码必须输出前n个复合数字。 输入输出 您可以编写程序或函数。输入通过STDIN或函数自变量,输出到STDOUT或函数返回值。 输出可以是列表,数组或字符串。 例子 0 -> 1 -> 4 2 -> 4, 6 3 -> 4, 6, 8 13 -> 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22 规则 与往常一样,不允许出现标准漏洞。 不允许生成素数或合成数的内置函数。 不允许与质数或合成数相关的内建函数。

1
高尔夫大战第一集:幻影光剑
背景主题 介绍 Obi-Wan Kenobi,Qui-Gon Jinn和Darth Maul将要战斗!但是,他们都忘了带各自的光剑。编写一个程序或函数,在给定字符串Jedi作为输入的情况下,生成类似于此*的图像: 并给定字符串Sith,生成类似于此的图像: 图像规格 3个光剑(白色刀片的一端包括圆形边缘(红色表示两个圆形边缘),包括手柄)均为900px长(不包括刀片周围的颜色渐变)。 刀片末端的圆形边缘是一个半圆(显然是它的离散近似值),其直径等于刀片的宽度。 刀片(即光剑的白色部分)宽12像素。 绿色和蓝色光剑之间的距离为200像素(从绿色刀片的中心线到蓝色刀片的中心线)。 所有3个光剑的手柄均为180像素(占总长度的1/5)。因此,包括圆边的刀片本身对于蓝色和绿色光剑为720px长,对于红色光剑的两个刀片为360px长。 蓝色和绿色光剑的手柄在光剑的底部。红色光剑的手柄水平居中。 从白色刀片的边缘到完全白色的渐变长度为1.5 *刀片的宽度(例如,线性部分为18px)。 绿色渐变从RGB(0,255,0)变为白色(255,255,255)(或透明的,如果您更容易实现)。红色渐变从(255,0,0)变为白色,蓝色渐变从(0,0,255)变为白色。 手柄的颜色为RGB(128,128,128)。 光剑周围可能有白色的空白空间。 输入项 无论是Sith或Jedi作为一个字符串。您可以从STDIN中获取此字符串,作为函数参数,命令行参数或任何类似参数。您可能会假设输入将始终是完全相同Sith或Jedi没有其他内容。 输出量 您必须生成一个图像文件,其中包含与输入字符串相对应的图像。您可以相对自由地选择所需的任何图像格式,只要它是真彩色图像即可。 计分 这是代码高尔夫球,因此最短的答案以字节为单位。愿原力与你同在。 *这篇文章中的图片未显示完整尺寸。

2
隐身踢球者//
隐身踢 加密文本的一种常见但不安全的方法是置换字母。换句话说,字母表中的每个字母在文本中始终被其他字母替换。为确保加密是可逆的,同一字母不会替换任何两个字母。您的任务是解密几行编码的文本,假设每一行使用不同的替换集,并且解密的文本中的所有单词均来自已知单词的词典。 输入值 输入由小写字母组成,按字母顺序。这些单词构成了可能出现在解密文本中的单词词典。在字典之后是几行输入。每行如上所述进行加密。 词典中的单词数不超过1,000。没有一个单词超过16个字母。加密的行仅包含小写字母和空格,并且长度不超过80个字符。 输出量 解密每一行并将其打印到标准输出。如果有多种解决方案,那么任何一种都可以。如果没有解决方案,请用星号替换字母表中的每个字母。 样本输入 and dick jane puff spot yertle bjvg xsb hxsn xsb qymm xsb rqat xsb pnetfn xxxx yyy zzzz www yyyy aaa bbbb ccc dddddd 样本输出 dick and jane and puff and spot and yertle **** *** **** *** **** *** **** *** …

8
条码高尔夫:生成号码的UPC
如今,几乎每家商店都使用通用产品代码(UPC)条形码来简化结帐流程。如果这个名称对您没有任何意义,那么您肯定会知道它们的外观: 格式 最常见的系统是UPC-A,它使用12位数字表示每个特定产品。每个数字被编码为一系列黑白条纹,以使机器可以读取代码,长度为7位。总共有11位的模式值指示条形码的开始,中间和结尾。条形码的总长度为12×7 + 11 = 95位。(从现在开始,当使用二进制表示每个位的颜色时,它0是白色和1黑色。) 开头和结尾都有的模式101。然后将这些数字分为2组,每组6个,并按如下所示进行编码,并01010在左右各组之间进行编码。下表列出了每个数字的模式。请注意,根据数字是在右侧还是在左侧,图案会有所不同(这允许条形码上下颠倒扫描)。但是,右边的图案与左边的图案相反(白色交换为黑色,反之亦然)。 如果看不到上面的图像,则这是每个数字的二进制等效项。 # Left Right 0 0001101 1110010 1 0011001 1100110 2 0010011 1101100 3 0111101 1000010 4 0100011 1011100 5 0110001 1001110 6 0101111 1010000 7 0111011 1000100 8 0110111 1001000 9 0001011 1110100 例 假设您拥有UPC 022000 125033。(这些不是随机数。如果要弄清它们的含义,请留下评论。)从此样板开始,每个条形码中的样板都相同: 101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx01010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx101 对于数字,请用其侧面(左或右)的相应编码替换每个数字。如果您仍然感到困惑,请参见下图。 这是二进制的输出,其中|管道将零件分开。 101|0001101|0010011|0010011|0001101|0001101|0001101|01010|1100110|1101100|1001110|1110010|1000010|1000010|101 …

30
签署这个词!
什么是单词签名? 一个字的签名是它的所有的信件整理-的签名this,hist并且hits都hist。 挑战 编写程序时,程序应要求输入,然后打印出该单词的签名。因此,示例程序运行可能如下所示: Give me a string: this The signature signature of 'this' is hist. 不需要任何交互,只要它接受输入并打印签名,就可以。 计分 字节数最小的程序获胜! 排行榜 这是一个堆栈片段,用于按语言生成常规排行榜和获胜者概述。 为了确保您的答案显示出来,请使用以下Markdown模板以标题开头。 # Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,可以将旧分数保留在标题中,方法是将它们打掉。例如: # Ruby, <s>104</s> <s>101</s> 96 bytes 显示代码段 var QUESTION_ID=54945;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),e.has_more?getAnswers():process()}})}function shouldHaveHeading(e){var a=!1,r=e.body_markdown.split("\n");try{a|=/^#/.test(e.body_markdown),a|=["-","="].indexOf(r[1][0])>-1,a&=LANGUAGE_REG.test(e.body_markdown)}catch(n){}return a}function shouldHaveScore(e){var a=!1;try{a|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(r){}return a}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading),answers.sort(function(e,a){var r=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0],n=+(a.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0];return r-n});var …

2
配对电容器
电容器因制造公差高而臭名昭著。在许多情况下这是可以接受的,但有时需要具有严格公差的容量。获得具有所需准确值的容量的常见策略是并联使用两个经过仔细测量的电容器,以使它们的容量总计达到所需范围。 在给定(一组)容量的情况下,此挑战的目标是将电容器配对,以使每对电容器的总容量在给定范围内。您还需要找到最佳的配对对,即配对对,以便找到尽可能多的配对。 约束条件 输入包括选择的格式 容量的无序列表,代表您拥有的(多个)电容器组 一对表示的下部和上部的能力结合的的目标范围(包括) 输入中的所有容量均为小于2 30的正整数,单位为pF(无关紧要)。 除了输入电容列表之外,您拥有的电容器组还包含无限数量的0 pF电容器。 输出以选择的格式包括容量对列表,以使每对容量之和在指定的目标范围内。既没有指定线对的顺序,也没有指定线对中的容量顺序。 输出中的任何电容出现的频率都不会比您拥有的一组电容器中出现的频率高。换句话说:输出的对不能重叠。 满足条件4和5的任何可能输出都不应该包含比程序产生的输出更多的容量对。 您的程序应在O(n!)时间终止,其中n是代表您拥有的电容器组的列表的长度 不得滥用漏洞 该目标范围,不得为空 计分 您的分数是解决方案的长度(以八位字节为单位)。如果您的解决方案设法在多项式时间O(n k)中解决了约k个问题,请将您的得分除以10。我不知道这是否实际上可行。 样品输入 范围100到100,输入数组100 100 100,有效输出: 0 100 0 100 0 100 范围100到120,输入数组20 80 100,有效输出: 0 100 20 80 输出20 100无效 范围90到100,输入数组50 20 40 90 80 30 60 70 40,有效输出: 0 90 20 …

2
抢劫
介绍 经过漫长的战斗,您在一场谜语竞赛中击败了狮身人面像。狮身人面像对您的技巧印象深刻,希望为您提供与您的机灵相称的奖励,并将一条神奇的羊皮纸条分成八个盒子,每个盒子中都包含一个数字,以实现它们的存在。 狮身人面像说:“减少羊皮纸,使盒子重叠,这些盒子将通过加法或乘法合并。当剩下一个盒子时,它的价值将是用金币作为奖励。” 任务 您必须编写一个程序或函数,该程序或函数将一个列表/数组/八个自然数作为输入,并返回/打印通过一系列“折痕”操作可获得的最大奖励。 机械学 “折痕”操作是在某些单元格上执行的,操作者为+或*作为操作者。使用运算符将​​列表的前n个单元格折叠起来并与其目标单元格合并。合并操作中未消耗的任何单元均保持不变。 这是使用n = 3个单元格进行折痕的示例: 使用任何一种加法,将导致以下结果: 或乘法,将导致以下结果: 注意:为简单起见,不允许使用少于1个单元格的折痕,也不允许具有大于或等于列表长度的单元格的折痕。但是,列表的单元格数量可以增加一半以上。 可以将8个单元格的列表加5,从而产生一个新的长度为5的列表: [0,1,2,3,4,5,6,7]使用+操作员会给5个单元格增加一个[9,9,9,1,0]。 计分 标准代码高尔夫规则-产生正确输出且获胜字节数最少的代码。 奖励:如果您的代码还返回/打印了导致最大奖励的折痕操作序列,请将分数乘以0.8。输出示例如下: crease 5 + crease 2 * crease 2 + crease 1 * 例子 使用以下输入和结果测试您的代码,格式为input - maximum reward: [0, 1, 2, 3, 4, 5, 6, 7] - 7560 [0, 9, 0, 3, 2, …

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.