编程拼图和代码高尔夫

编程益智爱好者和代码高尔夫球手的问答

12
为俄语写一个复数函数
在英语中,名词可以采用两种不同的形式,具体取决于它们是单数(一个)还是复数(其他)。例如,我们说“ 1条狗”,但说“ 2条狗”,“ 0条狗”,“ 57条狗”等等。 在俄语中,分为三类。代替俄语中的“ 1条狗,2条狗,5条狗”,它是“ 1собака,2собаки,5собак”。 类别根据以下逻辑进行划分: “单数”:用于1和以1结尾的任何数字,但以11结尾的数字除外。 示例:1собака,21собака,101собака “很少”:用于2、3和4,以及以2、3或4结尾的任何数字,但以12、13和14结尾的数字除外。 例如:2собаки,3собаки,4собаки,32собаки,43собаки,104собаки “许多”:任何不视为“奇异”或“很少”的东西。 例如:0собак,5собак,11собак,13собак,25собак,111собак,114собак 挑战 给定范围为[0,1000]的整数输入,1如果它属于“单数”类别,2如果它属于“很少”类别,并且5如果它属于“许多”类别,则返回。 您的程序可能是一个函数,也可以使用STDIN。您可以打印到STDOUT或从函数返回值 这是一个代码高尔夫挑战,因此以最少的字节数赢得解决方案。

10
帮我打我的号码!
在编写代码高尔夫球程序时,我通常最终会使用一些数字常量。我总是将它们放在十进制中,因为这就是我的想法,但是我只是意识到我的语言支持其他数字格式,这可能会使我略微缩短代码。 挑战 给定一个小于2 ^ 53-1的非负整数,请确定该整数是否具有以下最短表示形式: 小数 十六进制 科学计数法 小数 由于这是我的语言的默认格式,因此该格式无需额外的注释。每个数字都照常表示为十进制。 十六进制 我的语言将0x前缀用于十六进制常量。这意味着,如果一个数字有4个十六进制数字,则将需要6个字节来表示该数字。 科学计数法 我的语言使用以下格式表示科学符号: [Real base] e [10的整数指数] 例如,700将被表示为7e3,并且699将被表示为6.99e3,因为基数必须在-10到10之间(不包括在内)。出于此挑战的目的,因为输入的数字为非负数,所以基数始终将始终至少为0。 输出量 您应该返回一种识别最短格式的方法(即,十进制为0,十六进制为1,科学格式为2)。或者,您可以输出数字本身的最小表示形式。 测试用例 Decimal | Hexadecimal | Scientific | Winner --------------|--------------|-------------------|------------- 0 | 0x0 | 0e0 | Decimal 15 | 0xF | 1.5e1 | Decimal 6999 | 0x1B57 | 6.999e3 | …

3
Buzzby Berkeley机器人Hokey Pokey
Buzzby Berkeley机器人Hokey Pokey 任务 写一个程序或函数来产生ASCII艺术动画,描绘出一系列机器人以Busby Berkeley编号的风格随着Hokey Pokey(或Cokey,如果您愿意的话)的歌词跳舞! 示例输出 输入项 接受三个参数(假设是有效的): N =生产线上的机器人数量(最小值= 6) B =一次“拍子”的持续时间(以毫秒为单位)(最小值= 10) D =连续机器人之间的毫秒延迟(最小值= 0) (在上面的示例输出中:N = 8,B = 380,C = 75) 技术指标 舞台上连续显示N个机器人。 舞台下方一次显示“诗句”中的一行文本(居中到1个字符内,并用引号引起来)。 机器人对每行进行操作,直到每行重复5次为止。 通过使用一组ASCII字符描绘机器人并执行指定的持续时间,然后执行下一个动作,来执行动作。动作的持续时间以“节拍”为单位。1所拍的持续时间是一毫秒数,乙。 当第一个机器人显示一行经文时,它会立即开始对每一行经文执行动作。 随后的每个机器人都将其动作延迟到在其右侧(您的左侧!)机器人开始其动作之后的特定时间(D)为止。 机器人的描述因ASCII字符而异,ASCII字符代表机器人的“天线”,其中有5种可能的类型,每次运行程序时都会随机分布。 每种类型的天线必须至少由一个机械手使用,但是在少于3个其他机械手分开的任何机械手上都不得出现相同类型的天线。任意两种天线的数量相差不得超过1(例如1xType_4和3xType_5是非法的,因为3-1> 1) 诗句与动作 整节经文重复5次,一次重复1行... Line Text Action/Beats, ---- ----------------------------- ------------------------------------ 1 You put your ? in …

7
解码虚空
无效列表是一个不包含任何非列表对象的列表。或者,如果您喜欢递归定义 空清单无效 仅包含其他无效列表的列表是无效的 所有无效列表的深度都是有限的。 以下是空白列表的一些示例(使用python语法): [] [[]] [[],[]] [[[]]] [[[]],[]] [[],[[]]] 以下是一些不是无效列表的示例: ["a"] [[...]] [1] 2 [[],([],[])] 任务 编写两个单独的函数(或根据需要编写程序)。一个应采用一个正整数(如果需要,还可以包括零)作为参数并返回一个无效列表,另一个应采用一个无效列表并将其返回一个整数。这两个函数应始终彼此相反。也就是说,如果你传递的输出f到g你应该得到的原始输入f的结果g。这意味着映射必须为1:1,即,对于每个整数,可能仅存在一个为其g提供该整数的空列表,而对于每个空隙列表,应仅存在一个为其提供该空列表的整数f。 您实质上是在创建双射 您可以选择使用无效列表的字符串表示形式(带或不带逗号和空格),而不是语言的本机列表类型。 计分 您的分数将是两个职能的总和。这是代码高尔夫球,因此您应力争将这一总和最小化。
25 code-golf 

30
数模列表及其在列表中的索引
一个简单的例子:将 一个正整数列表作为输入,并在列表中输出其从1开始的索引的模数。 如果输入整数是{a, b, c, d, e, f, g}则输出应该是{a%1, b%2, c%3, d%4, e%5, f%6, g%7}其中%是模运算符。 测试用例: 10 9 8 7 6 5 4 3 2 1 0 1 2 3 1 5 4 3 2 1 8 18 6 11 14 3 15 10 6 19 12 3 7 5 …
25 code-golf  math  number 

11
他没有来-挑战挑战
编写一个给定字符串的程序或函数,如果有的话,它将zalgo剥离。 扎尔戈 对于本文,zalgo被定义为以下Unicode范围内的任何字符: 组合变音标记(0300–036F) 合并变音符号扩展(1AB0–1AFF) 组合变音符号补充(1DC0–1DFF) 组合符号的变音符号(20D0–20FF) 合并半角线(FE20–FE2F) https://zh.wikipedia.org/wiki/Combining_character#Unicode_ranges 输入项 可以通过命令行参数,STDIN或您的语言支持的任何其他标准输入法来传递 将是可能包含zalgo或其他非ASCII字符的字符串 输出量 输出应为不包含任何zalgo的字符串。 测试用例 Input -> Output HE̸͚ͦ ̓C͉Õ̗͕M͙͌͆E̋̃ͥT̠͕͌H̤̯͛ -> HE COMETH C͉̊od̓e͔͝ ̆G̀̑ͧo͜l͔̯͊f͉͍ -> Code Golf aaaͧͩa͕̰ȃ̘͕aa̚͢͝aa͗̿͢ -> aaaaaaaaa ññ -> ñn ⚡⃤ -> ⚡ 计分 因为这是代码高尔夫,所以以字节为单位的最短答案会获胜。

9
数字储物柜!
给定正整数<100(从1到99,包括1和99),输出那么多的储物柜。 储物柜的定义如下: +----+ | | | | | | | nn | +----+ 其中nn的储物柜号码以10为底。如果有1位数字,则其前面用0表示。例如,2号储物柜显示数字02。 储物柜可以堆放,但最多只能堆放2个: +----+ | | | | | | | on | +----+ | | | | | | | en | +----+ on表示奇数,en偶数。储物柜也可以彼此相邻放置。 +----+----+ | | | | | | | | | | 01 | …

11
完美回文
您的任务是确定一个字符串有多少完美的回文。您的典型回文(例如12321)是一个完美的回文。完美是1。 要确定字符串的完美性,您可以看到可以将其分成多少部分,每个部分都是回文。如果存在歧义,例如with aaaa,可以将其拆分为[aa, aa]or [aaaa]或[a, aaa]or [aaa, a],则最短集合将被覆盖,aaaa得分为1,这是最短集合的长度。 因此,您必须编写一个程序或函数,该程序或函数将接受一个非空输入并输出其完美程度(这是可将其拆分为集合中每个元素为回文的最短集合的长度)。 例子: 1111 -> 1 [1111] abcb -> 2 [a, bcb] abcbd -> 3 [a, bcb, d] abcde -> 5 [a, b, c, d, e] 66a -> 2 [66, a] abcba-> 1 [abcba] x -> 1 [x] ababacab -> 2 [aba, bacab] …

30
高尔夫自定义斐波那契数列
的斐波那契序列是一个相当众所周知的事情在这里。哎呀,它甚至有自己的标签。但是,尽管如此,我们肯定会坚持我们的根源1, 1, ...(或者是它0, 1, ...?我们可能永远不会知道...)。在此挑战中,规则是相同的,但是您无需获得n斐波那契序列中的第一个项目,而是获得n以Fibonacci式序列中的第一个项目x, y, ...。 输入项 三个整数,按您想要的任何顺序。n是输出序列中术语的索引(0或1索引)。x而y在当前的程序运行的斐波那契序列中的前两个项目。 输出量 n斐波那契数列中的第个词,以x,开头y。 测试用例 (0索引) n x y out 5 0 0 0 6 0 1 8 6 1 1 13 2 5 5 10 10 2 2 178 3 3 10 23 13 2308 4261 1325165 0 0 1 0 1 …

12
回文残留
我写这篇文章的今天是3月31日。在美国,这是3/31。我正在331和一个数字玩耍以提出挑战,结果发现它的残基(模数小)是回文的。331%2=1, 331%3=1, 331%4=3, 331%5=1, 331%6=1(11311)。 您面临的挑战是,给定一个整数时n > 2,输出n取模余数时具有回文残差的第一个正数[2,n]。 例如,对于输入7,输出应为1, 42, 43, 140, 182, 420, 421。这是解释这种情况的图表: mod num | 2 3 4 5 6 7 ----------------- 1 | 1 1 1 1 1 1 42 | 0 0 2 2 0 0 43 | 1 1 3 3 1 1 140 …

30
回答链斐波那契
(灵感来自ASCII的95个字符... 95电影行情) 挑战 给定输入n,输出nth 斐波那契数。您可以使用0或1建立索引,请在您的提交中注明。很简单,是吗?要注意的是,您必须采用上一个答案的字符集,从中删除两个字符,然后添加一个单独的字符。单独的字符必须 不是来自前一个答案的字符集 来自(可打印的ASCII,空格,换行符,水平制表符)的集合 因而你总字符集的大小将正好一个比前一个上回答的更小的集合。 最初的答案 第一个提交必须包含一个子集(所有可打印的ASCII,空格,换行符和水平制表符),并且删除了两个字符。此后的每个提交都必须将其答案限制为这种原始的纯ASCII格式(这意味着您不能添加Unicode或扩展ASCII字符……很抱歉,APL等人,Jelly)。 实例和说明 假设第一个答案在C中,并且包含(几乎所有可打印的ASCII,换行符和水平制表符),并从其字符集中省略%和^。然后,第二个提交必须从上一个字符集(几乎所有可打印的ASCII,换行符和水平制表符)中删除两个字符,并添加%或^。也许这是一个单行的PowerShell答案,而忽略了换行符。等等。 如果上一个答案print(){}!*+的字符集为12个字符,则您提交的内容可能有print(){}!10个字符和一个附加字符,print(){!+10个字符和一个附加字符,依此类推。 如果以前的答案有print(){}!*+其字符集(12个字符),提交的内容可能不具有print()和&(8个字符)作为它的字符集,因为12 - 8 > 1。 如果以前的答案有print(){}!*+其字符集(12个字符),提交的内容可能不会有print(){}!(10个字符),再加上额外的字符*作为其字符集,因为即使那是11个字符,则*包括在上一组。 并非您的字符集中的每个字符都必须对提交内容有所帮助。例如,如果先前的答案print(){}!*+以其字符集为准,并且您的语言具有内置功能,!可以计算斐波那契数列并#启动注释,则您的提交可能!#print(){}仍然有效。 您可以多次使用字符集中的同一字符。例如,假设您的字符集为!*#_,您的答案可能是!!!**#**#_!!并且将是可接受的。 除了您的代码(并且解释也不错!)之外,还请明确列出您的字符集,以使以后的提交更加容易。 获奖 挑战的获胜者将是发布第二个最新提交的人(即不是最后发布的人,因为他们打破了链条)。 最终规则 通常的答案链规则适用: 同一个人不能连续发布两次 如果一个答案被认为是无效的(例如,它使用了禁止字符或计算不正确),则需要将其删除(以及所有后续的答案也都将其链接) 张贴“同时”的两个用户将不得不保留较早的提交 同一语言不能连续发布两次。为了该规则的目的,相同家族的语言(例如,Python 2和Python 3)被视为“相同语言”。 最后的事情: 如果按“最旧的”排序,则此帖子效果最佳,以便正确排列答案。 Kyle Gullion在这里用Python构造了一个代码检查器,以验证您是否丢失或使用错误的字符。

30
将;#转换成您的语言
相关于:生成;#解释器并生成;#代码 ;# -旋风指南 这是一种简单的语言,带有两个命令。它唯一的数据结构是一个累加器,它被初始化为0。 ; 累加器 #计算127模的累加器值,并打印相应的ASCII字符。然后,将累加器重置为0。 源代码可能包含其他字符(可打印的ASCII +空格),但是这些字符被视为注释,对程序执行没有影响。 挑战 由于大多数计算机未;#预装,因此拥有一个可以将;#代码转换为其他语言的工具将非常有用。在这个挑战中,您将编写一个程序来完成此任务。 输入项 一些;#通过参数或STDIN获取的源代码。此源代码可能包含(注释);或以外的其他字符#。 输出量 代码与您提交的语言相同,该;#代码在执行时将打印/返回与原始代码相同的字符串。如果对您的语言更方便,此结果代码可能会在目标字符串之后输出尾随换行符。 笔记 需要注意的一件事是转义序列,例如打印反斜杠或打印引号的代码。另外,请;#注意可能包含与您的语言中的关键字或命令类似的内容的代码。 其他限制 所有程序都必须终止(我通常将其视为默认值,但有人对此询问,因此在此说明)。 例子 input: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;# output (python): print(";#") input: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;# output (element): \'`
25 code-golf 

12
查找原始字符串,不重复,中间不重复
有时会发生这样的情况:在输入句子时,我会分心,最终两次连续输入相同的单词两次。 为了确保其他人不会对此感到烦恼,您的任务是编写一个解决此问题的程序! 任务 给定一个输入字符串(如果对您的语言而言很重要,则可以假定不包含换行符的仅ASCII输入。)str,在其中间某处包含一个子字符串,该子字符串立即连续出现两次,并返回带有此字符串的一个实例的字符串子字符串已删除。 如果存在多种可能性,则返回可能的最短答案(即,选择最长的连续重复子串并删除该子串)。 如果有多个等长的连续重复子字符串,请删除第一个(即从前向后读取该字符串时遇到的第一个)。 您可以假设输入正确(即始终包含一个连续的重复子字符串),这可能有助于降低它的负担。 例子 输入:hello hello world->输出:hello world。 输入:foofoo->输出:foo。(因此:是的,字符串可能只包含两次重复部分)。 输入:aaaaa->输出:aaa,因为最长的重复连续子字符串在此处aa。 输入:Slartibartfast->这不是有效的输入,因为它不包含连续的重复子字符串,因此您无需处理这种情况。 输入:the few the bar->这是另一个无效的输入,因为重复部分应立即跟随原始部分。在这种情况下,the并且the之间用其他分隔符隔开,因此此输入无效。 输入:ababcbc->输出:abcbc。两个可能最长的连续重复子串是ab和bc。如ab字符串前面所述,这是正确的答案。 输入:Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo。输出:Buffalo buffalo buffalo buffalo Buffalo buffalo。(执行的替换应区分大小写)。 输入:Sometimes it happens that while typing a sentence, I am distracted and I end up typing the …

21
雕刻一些ASCII珠宝!
3月13日被认为是“ 国家珠宝节”,这是这一挑战的主题。所以,给定一个整数n,其中n大于0,创建一个ASCII宝石。例如: n = 1 n = 2 n = 3 ______ ____ / \ __ / \ \ / / \ \ / \ / \ / \ / \ / \/ \/ \/ 底部定义为珠宝中最高的一对\/。其余的是顶部。对于上面的示例,其中n = 1: Bottom: \ / Top: __ \/ / \ 如您所见,底部由n + 1多层构成,\/中间各层之间有(1 * …

24
提出一个数字
介绍 假设您要计算数字列表的尾部最大值,即每个非空后缀的最大值。一种方法是重复选择一个数字,然后用后面出现的更大的数字代替,直到不可能为止。在这一挑战中,您的任务是执行此算法的一个步骤。 任务 您的输入是一个整数列表L,它可以为空。您的输出应为列表L,其中一个数字L i正好被另一个L j代替,其中L i <L j和i <j。 换句话说,您应该用一个更大的数字代替一个数字。 您可以在所有有效对之间自由选择i和j,并且选择可以是不确定的。 如果这样的i和j不存在(即L不增加),则您的输出应保持L不变。 例 考虑输入L = [3,1,4,-1,2]。可能的操作是替换3由4,替换1由4,替换1通过2,或替换-1由2。因此,可能的输出为: [ 3 , 1 , 4 , -1 , 2 ] ------------------------------ [( 4), 1 ,( 4), -1 , 2 ] [ 3 ,( 4),( 4), -1 , 2 ] [ 3 ,( …

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.