Questions tagged «code-golf»

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

5
使方括号
每个程序员都知道方括号[]{}()<>真的很有趣。为了加剧这种乐趣,可以将一组交织在一起的括号转换成可爱而模糊的图表。 假设您有一个包含方括号的字符串,例如[{][<(]})>(())。第一步是将琴弦顺时针旋转45度。(在Mathematica中,几乎可以使用来完成Rotate[ur_string,-pi/4])。这是第一步的结果: [ { ] [ < ( ] } ) > ( ( ) ) 接下来,在每个字符之间添加一个对角线空间。 [ { ] [ < ( ] } ) > ( ( ) ) 接下来,从最左边的括号开始,并在其与犯罪伙伴之间画一个正方形。 +---+ | | | { | | | +---+ [ < ( ] } ) > ( ( …

15
找到对应词
给定一个完全由q代表四分音符的s和e代表八分音符的s 组成的字符串的输入,输出已切分的四分音符的索引。 概要法很复杂,但是出于此挑战的目的,我们对“同步化”的定义将非常简单:四分音符从“节拍”开始,即节拍在n / 4中计为“和”时间。 可替代地,这可以被定义为在奇数个八分音符之后的任何四分音符。例如,*下面标记为的音符被视为已切分,并且还显示了它们的索引: eqqeqqeqqe ** ** 12 78 Output: 1 2 7 8 输入将始终包含4/4次的所有小节(四分音符是小节的四分之一,八分音符是小节的八分之一)。(输入也永远不会为空。)输出可以是单个字符串,其元素由任何不包含数字的定界符分隔,也可以是数组/列表/等。如果需要,输出可以是基于1的(即第一个索引是1而不是0),并且它也可以使用任何数字基(一进制,十进制等)。 由于这是code-golf,因此以字节为单位的最短代码为准。 测试用例: In Out ----------------------------------------------- eqqqe 1 2 3 qeqeq 2 qqqeqqeeeeqeqeqeqqeqqeqq 4 5 10 14 19 20 eeeeeqeeqeeqqqqeqeqeeqe 5 8 11 12 13 14 18 21 qqqq <none> eeeeeeee <none>
33 code-golf  music 

11
正在播放什么歌曲?
受此xkcd启发 您为Shazam工作,他们为您提供了一个项目。一些客户抱怨他们的应用程序占用了手机太多的空间,因此他们希望您编写精简版的应用程序代码。不幸的是,您现有的代码只能理解单词“ na”,因此您必须尽快发货。没关系,我们将竭尽所能。 挑战 您必须编写一个完整的程序来接受用户输入,或者接受命令行参数,然后打印歌曲的标题和艺术家。由于我们正在努力解决抱怨程序大小的客户,因此您的代码必须尽可能短。输入将是一个完全由na组成的字符串,它们之间有一个空格。小写/大写是任意的。这被认为是有效的输入:Na Na nA na NA这是无效的输入:nah nah NA naNa banana您必须确定正在播放的歌曲,并以这种格式将其打印出来: Song: <trackname> Artist: <artist> 如果输入正好是 8 na,则匹配两首独立的歌曲,因此您必须同时打印两首: Song: Batman Theme Artist: Neal Hefti 和 Song: Na Na Hey Hey Kiss Him Goodbye Artist: Steam 如果输入正好是 10 na,则必须打印: Song: Katamari Damacy Artist: Yuu Miyake 如果输入正好是 11 na,则必须打印: Song: …

18
毕达哥拉斯的另一条腿
毕达哥拉斯的腿在战争中被炸断了。它必须被截肢,尽管他快要死了,他还是挺身而出,完全康复了。现在,用拐杖走路一年后,他有幸得到假肢!不过,有几种合适的方法,但是哪一种适合呢? 任务 给定一个正整数作为毕达哥拉斯三重奏的一条腿的长度的输入,输出另一条腿的所有可能性。例如,毕达哥拉斯最小的三元组是(3,4,5),它形成一个三角形,其两个腿的长度分别为3和4,长度为5的斜边。 例子 Leg:5 12 Leg:28 21 45 96 195 Leg:101 5100 Leg:1001 168 468 660 2880 3432 4080 5460 6468 10200 38532 45540 71568 501000 规则 输入将是单个正整数n。 输出可以是任何顺序,可以使用任何定界符,可以使用任何基数(尽管该基数​​必须一致),并且可以使用可选的左括号和右括号,以及可选的尾随空格。也就是说,1 2 3,[1,2,3],和1,11,111所有适合这种输出规格。 您可能会假设该值n永远不会大于语言限制的第四根的四分之一(不使用库)。实际上,您可以假定输入将小于此值或10,000,以较小者为准。 毕达哥拉斯正等着你,所以最好快而简短地编写代码!
33 code-golf 

30
合并阵列
任务很简单:整合一个整数数组。合并此数组包括以下内容: 所有0实例都需要移到数组的末尾。 非零整数之间不应有0。 所有非零索引都应保留其顺序。 挑战 以最少的字节数合并数组。 您正在合并一个随机长度的数组,该数组的大小最大为您的语言的最大值,并包含随机整数。输入可能是您语言的任何自然方式。 例子 输入项 0 5 8 8 3 5 1 6 8 4 0 3 7 5 6 4 4 7 5 6 7 4 4 9 1 0 5 7 9 3 0 2 2 4 3 0 4 8 7 3 1 …

29
它是前缀代码吗?
在信息论中,“前缀代码”是一个字典,其中所有键都不是另一个的前缀。换句话说,这意味着没有一个字符串以其他任何字符串开头。 例如,{"9", "55"}是前缀代码,但{"5", "9", "55"}不是。 这样做的最大优点是,可以将编码的文本记下来,并且它们之间没有分隔符,并且仍然可以唯一地解密。这在诸如Huffman编码之类的压缩算法中得到了体现,该算法始终会生成最佳的前缀代码。 您的任务很简单:给定一个字符串列表,确定它是否是有效的前缀代码。 您的输入: 将是任何合理格式的字符串列表。 仅包含可打印的ASCII字符串。 将不包含任何空字符串。 您的输出将是一个true / falsey值:如果是有效的前缀代码,则为True,否则为falsey。 这是一些真实的测试用例: ["Hello", "World"] ["Code", "Golf", "Is", "Cool"] ["1", "2", "3", "4", "5"] ["This", "test", "case", "is", "true"] ["111", "010", "000", "1101", "1010", "1000", "0111", "0010", "1011", "0110", "11001", "00110", "10011", "11000", "00111", "10010"] 以下是一些错误的测试案例: ["4", "42"] …

5
重力模拟器
声明 您会得到一系列落入2D网格的球的静止图像。这个网格被不可变和坚不可摧的墙壁包围着,因此所有动作都包含在其中。您的任务是确定重力完成所有工作后场景的状态是什么。 网格内的元素 - 落地,不会改变落球的方向。 \ 向右滑动,可将球向右(一)的位置更改。 / 左滑动,改变球向左一(1)位置的路径。 o 一个球。 规则 球掉了。 地板和滑梯都不会掉落。 如果球撞击滑梯,使其滑过墙壁(\#或#/),或穿过地板,则滑梯将充当地板。 当一个球击中另一个球时,它将变成一个球,但将其力量增加到两个球的总和。 新球(已加入)将继续照常运行。 当球不再移动时,将其替换为力量。 球的力量永远不会超过9。 输入项 网格将以字符串变量的形式给出,其名称以您选择的语言中最短的名称为准。默认情况下,我们将使用它a作为输入。输入样本,与收到的完全一样: ##########\n# \ #\n#o #\n# - -\o #\n#/- \ #\n# \oo-/\#\n#-/ \ /#\n# \ \ #\n# /#\n########## 对于生成的随机网格,请使用https://repl.it/B1j3/2。请改用我生成的页面(没有广告,没有废话,只有输入和输出) 注意换行符为\n。将输入打印到屏幕上(挑战不是必需的)将显示如下内容。尽管我在安全空间旁边放置了四个难题。 ########## ########## ########## ########## # \ # # o -/# # …


3
Tiny Lisp,微小的口译员
Lisp程序员吹嘘Lisp是一种功能强大的语言,可以通过很少的原始操作集来构建。让我们通过打高尔夫一种叫做方言的口译员来付诸实践tinylisp。 语言规格 在本规范中,任何结果被描述为“未定义”的条件都可能在您的解释器中做任何事情:崩溃,静默失败,产生随机的gobbldegook或按预期工作。此处提供了Python 3中的参考实现。 句法 tinylisp中的标记是(,)或一个或多个可打印ASCII字符的任何字符串,括号或空格除外。(即以下正则表达式:[()]|[^() ]+。)任何完全由数字组成的令牌都是整数文字。(前导零都还好。),其中包含非数字字符的任何标记是一个符号,甚至是数字好看的例子一样123abc,3.14和-10。所有空格(至少包括ASCII字符32和10)都将被忽略,除非它们分隔标记。 tinylisp程序由一系列表达式组成。每个表达式可以是整数,符号或s表达式(列表)。列表由括在括号中的零个或多个表达式组成。项目之间不使用分隔符。以下是表达式示例: 4 tinylisp!! () (c b a) (q ((1 2)(3 4))) 格式不正确的表达式(特别是括号不匹配的表达式)会产生不确定的行为。(参考实现自动关闭打开的parens,并停止对不匹配的关闭parens进行解析。) 资料类型 tinylisp的数据类型是整数,符号和列表。尽管内置函数和宏的输出格式未定义,但它们也可以视为一种类型。列表可以包含任意数量的任何类型的值,并且可以任意嵌套。必须至少从-2 ^ 31到2 ^ 31-1支持整数。 空列表(()也称为nil)和整数0是唯一在逻辑上被视为false的值。所有其他整数,非空列表,内建函数和所有符号在逻辑上均为真。 评价 程序中的表达式将按顺序求值,并将每个表达式的结果发送到stdout(稍后会详细介绍输出格式)。 整数文字求值。 空列表()将自动求值。 一个或多个项目的列表将评估其第一项并将其视为函数或宏,并以其余项作为参数来调用它。如果该项目不是函数/宏,则行为未定义。 符号将作为名称求值,并在当前函数中给出绑定到该名称的值。如果该名称未在当前函数中定义,它将在全局范围内求值为其绑定的值。如果未在当前或全局范围内定义名称,则结果是未定义的(参考实现给出错误消息并返回nil)。 内置函数和宏 tinylisp中有七个内置函数。函数先对每个参数求值,然后对它们应用一些运算并返回结果。 c-缺点[命令列表]。接受两个参数,一个值和一个列表,并返回通过将值添加到列表的前面而获得的新列表。 h-头(用Lisp术语表示为car)。取得一个列表并返回其中的第一项;如果给出nil,则返回nil。 t-tail(cdr,用Lisp术语)。获取列表并返回一个新列表,其中包含除第一项外的所有列表;如果为nil,则返回nil。 s- 减去。取两个整数并返回第一个减第二个。 l- 少于。取两个整数;如果第一个小于第二个,则返回1,否则返回0。 e-相等 接受两个相同类型的值(两个整数,两个列表或两个符号);如果两者相等(或每个元素相同),则返回1,否则返回0。未定义测试内置函数是否相等(参考实现按预期工作)。 v-评估。取得一个表示表达式的列表,整数或符号,然后对其求值。例如做(v (q (c a b)))与做是一样的(c a b); …

30
帮我打开盒子
我有一个ASCII艺术框,需要一个程序来打开它。 例子 输入: ------- | | |_____| 输出: / / / / / / / | | |_____| 规格 第一行仅包含-,其中至少3个 中间的行将以|空格开头,以| 所有中间行将相同 最后一行将以|have 开头,_以a结束| 所有行的长度将相同 打开盒子: 每一个-都应由/升序和位置替换。

4
拆分ASCII
给定ASCII加换行符的95个可打印字符,将其分成两个相等的48个字符组(以下称为A组和B组)。在两组之间创建您选择的一对一映射(您可以自行决定)。换句话说,如果这是程序所需要的,则A可能映射到a,反之亦然,但A也可能映射到>,反之亦然。 将ASCII分成两组后,分别使用每个组中的字符编写两个程序和/或函数。换句话说,编写一个仅使用组A中字符的程序/函数,编写另一个仅使用组B中字符的程序/函数。 这些程序必须能够接收一个字符作为输入。如果输入是A组字符,则用A组中的字符编写的程序应输出/返回相同的字符;如果输入是B组字符,则映射的A组字符应输出/返回相同的字符。组A程序应始终输出组A字符。同样,如果B组程序是B组字符,则应输出相同的字符;如果输入是A组字符,则应映射所映射的B组字符。 可能还不清楚,所以这里有个例子。如果假设所有大写字母都在A组中,所有小写字母都在B组中,并且已选择这些字母的一对一映射是从一个到另一个,则:那么这里有一些样本输入/输出: 程序A: Input Output A A D D a A q Q 程式B: Input Output A a D d a a q q 其他规则: 这两个程序不需要使用相同的语言。 它们不必同时是程序或函数。一个可以是程序,另一个可以是功能,没关系。 他们不需要以相同的方式工作,具有相似的长度,诸如此类。他们必须完全符合上述其他规则。 是的,您的程序中只有一个可以使用换行符,并且只有一个可以使用空格(可以是相同的程序,也可以是不同的程序)。 您不需要在每个程序中全部使用48个字符。 正常情况下,禁止出现标准漏洞。所有程序都必须是自包含的,没有文件包含您选择的映射。 评分标准:高尔夫代码。具体来说,两个程序的文本字节总和。 请像这样发布您的答案: 语言-#字节+语言-#字节=#字节 对您的映射的明确描述。如果很复杂,请使用如下图表: ABCDEFGHIJKLMNOPQRSTUVWXYZ (etc.) zyxwvutsrpqonmlkjihgfedcba (etc.) 或者,您也可以解释一下(前48个映射到后48个顺序),然​​后按常规回答。

22
特朗普需要您的帮助来阻止Starman!
一个来自星空的人来到了地球!幸运的是,美国总统唐纳德·特朗普(Donald Trump)死于无边。使用此模具,他可以想出您作为Podunk市长必须使用的数字,以确定应该派遣谁来制止入侵者!但是请注意,您只能在青蛙背面发送有限数量的字节! 给定用户输入(将为正整数),您必须根据数字所在的类别返回字符串。 如果该数字是斐波那契数字,则必须输出Ness。 如果该数字是Lucas数字,则必须输出Lucas。 如果数字是双方一个Lucas数和Fibonacci数,你必须输出特拉维斯。 如果数字是既不 AA Lucas数也不是斐波那契数,你必须输出皮皮。 例子 这是一堆测试用例: 1 =>特拉维斯 2 =>特拉维斯 3 =>特拉维斯 4 =>卢卡斯 5 =>尼斯 6 =>皮皮 7 =>卢卡斯 8 =>尼斯 610 =>尼斯 722 =>皮皮 843 =>卢卡斯 规则 这是代码高尔夫球,最短的答案以字节为单位。 您的程序可以是完整程序,也可以是(n匿名)函数。 奖金 您可以使用一些奖金来帮助您的青蛙更快地将数据提供给特朗普总统: 对于-15字节:如果输入数字为2016,则必须输出Trump,因为他处于总统任期的顶峰。

11
这个问题有起有落
输入将包含以下字符: ^:上一个 v:下去一个 ▲或k:上两个 ▼或j:下两个 例如,以下输入: ^^▲^v▼▲^^v 将产生以下输出: ^ ^ ^ v ▲ v ▲ ^ ▼ ^ \e[B不允许使用诸如游标之类的转义序列。您必须使用空格和换行符生成输出。 这里还有一些测试用例。 ▲v^v^v^v^v^v^v^v▲ ▲ ▲ ^ ^ ^ ^ ^ ^ ^ v v v v v v v v ^^^^^^^▲▲▲▼▼▼vvvvvv ▲ ▲ ▼ ▲ ▼ ^ ▼ ^ v ^ v …

15
平衡词
这项挑战已发布在DailyProgrammer subreddit上,我认为这将是进行代码高尔夫挑战的最佳人选。确定字母是否平衡是基于其到平衡点的距离以及字母的值。字母的值可以通过采用字母的一个索引位置或从ASCII值中减去64来确定。此外,字母的值乘以它与平衡点的距离。让我们看一个例子STEAD: STEAD -> 19, 20, 5, 1, 4 ASCII values This balances at T, and I'll show you why! S T EAD -> 1*19 = 1*5 + 2*1 + 3*4 Each set of letters on either side sums to the same value, so T is the anchor. 但是,应注意,并非所有单词都是平衡的。例如,该词WRONG在任何配置中都不平衡。同样,单词必须在一个字母上保持平衡,而不是两个字母之间。例如,SAAS如果两个字母中间有一个字母,则将保持平衡A,但是由于没有字母,它将不平衡。 任务 …
33 code-golf 

11
自我修改相乘
...至少对于“自我修改”的某种定义 任务 在此挑战中,您的任务是编写三个字符串A,B并且C满足以下属性。 字符串的B长度至少为1。 对于每种n ≥ 0,字符串都是您选择的编程语言中的有效程序(表示完整的可运行程序或函数定义)。上标表示的重复,因此,这意味着字符串,,,等。每一个程序需要一个字符串作为输入,并返回一个串作为输出。ABnCACABCABBCABBBC 对于任何m, n ≥ 0程序,如果程序使用输入运行,它将返回。对于非这种形式的输入,程序可能会执行任何操作,包括崩溃。ABmCABnCABm*n+1C 格式program(input) -> output如下: AC(AC) -> ABC ABC(AC) -> ABC ABBBBBC(AC) -> ABC AC(ABC) -> ABC AC(ABBBBC) -> ABC ABC(ABC) -> ABBC ABBC(ABC) -> ABBBC ABBBBC(ABBBC) -> ABBBBBBBBBBBBBC ABBBC(ABBBBBBC) -> ABBBBBBBBBBBBBBBBBBBC 规则和计分 你的分数是总长度A和C较低的分数更好。请注意,虽然B不计入分数,但它必须由A和生成,C如第一个示例中所示。 不允许出现标准漏洞。不允许程序直接或间接访问其自己的源代码(除非将它们作为输入提供)。您需要识别字符串A,B并C以某种方式在您的答案中,并鼓励您解释您的解决方案。

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.