Questions tagged «code-golf»

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

29
间隔为零
您的任务是编写一个包含两个非负整数i和k(i≤ k)的函数或程序,并弄清楚如果您在选择的基础上将所有整数从i写入k(包括在内),您将写入多少个零。纸 将这个整数(零的个数)输出到stdout或类似值。 -30%如果您还接受第三个参数b,则为整数基数以记下数字。必须处理至少两个基数才能获得此加成。 您可以接受任何喜欢的基础输入,也可以在测试用例之间更改基础。 您可以接受参数i,k并且可以选择b按任意顺序接受。 答案必须处理至少一个不是一元的基数。 测试案例(以10为基础): i k -> output 10 10 -> 1 0 27 -> 3 100 200 -> 22 0 500 -> 92 这是代码高尔夫球;最少的字节数获胜。

2
欧几里得向量
给定两个向量的ASCII艺术,找到结果向量的大小和程度。 输入值 这可以通过STDIN接收,从本地文件读取或通过函数调用提供。这是两个向量输入的示例: ^------> | | | x 这表示北移4个单位,东移7个单位。每个输入的起点将由x(小数120)表示。 所有向量都是水平或垂直线。 每个向量都有以下四个端点之一:^v<>,由短划线(-,十进制45)或竖线(|,十进制124)组成。 平面上的空白点由空格(,十进制32)填充。 输入可以是单个x。 相邻向量始终彼此垂直。 所有向量都是从头到尾的。 输出量 这将是结果点的位移(距起点的距离)及其相对于起点的移动程度。 对于上述输入,输出应为8.06单位和60.3度。每个人都应有3个有效数字。以下是带有3个有效数字的数字的一些示例: 1.00 60.1 453 7.08 4.50 349 所有单位的度量将为<= 999。 这些编号应以以下格式输出。这是使用上面的数字。 8.06 units @ 60.3 degrees 后面可以跟一个空格或换行符。 如果输入是single x,没有位移,因此也没有位移角度,则输出应为空行(单个换行符)或以下格式: 0 units @ - degrees 如果您想获得奖金,指示方向也应该正确-。 如果奖金2、3或两者都完成,则输出应遵循以下模型并遵守与上述相同的限制。 8.06 units @ 60.3 degrees NE 度数应根据标准平面进行测量。 90 …

1
找到以下几组
以下挑战要求您熟悉正式的解析器理论。如果您不知道问题的含义是因为您不知道该问题的含义,那么很多大学课程都涵盖了上下文无关的语法和第一套/跟随套。 我可以推荐此斯坦福课程,特别是讲义08和09(第7页)。我还从这些讲义中提取了备忘单 - 我建议尝试此挑战的任何人都阅读它。 编写一个程序或函数,该程序或函数在无上下文语法的情况下可以找到每个非终结符的后续集合。非正式地,非终结符的跟随集是一组终结符和$(表示输入结束),您可以在该终结符之后的有效句子中找到它们。 输入以单个可打印ASCII字符串或可打印ASCII行的数组形式给出。您可以以任何合理的格式输出集合,使用$(作为文字输出或集合中的字符串等)指示输入的结束。您可以根据以下格式假定输入始终有效。 上下文无关的语法以非常简化的方式给出。每条生产线包含一个生产。每个产品都是用空格分隔的符号列表。终端是一串用撇号(例如'**')括起来的字符。为了简单起见,您可以假定终端不包含空格,但是如果您的程序允许的话,那会很好。非终结符可以是任何不包含空格或的字符串$。空生成(通常用ε表示)只是一条仅包含左侧非终结符的行。第一行是定义开始符号的生产。 例如,以下语法: S→aSa | bSb | ε 将给出为: S 'a' S 'a' S 'b' S 'b' S 输入/输出示例: In: S 'a' S 'a' S 'b' S 'b' S Out: S {'a', 'b', $} In: S A B C A 'a' A C 'b' A …

3
培根密码:隐写术简介
这只小猪推向市场,这只小猪写了一些代码... 啊,等等,我们不是在谈论那培根,而是在谈论弗朗西斯·培根爵士!具体地,密码培根在1500年代末期设计,作为一种将消息隐藏在另一条消息中的方法,即隐写术。 密码通过隐藏文本表示中的消息而不是其内容来起作用。首先,您的邮件字母被编码为二进制(从0到25),如下所示: 注意:请在代码中使用以下编码,不要担心输入中的数字,空格或其他符号,尽管我可能会为那些在编码中包含这些字符的人带来一些好处。如果确实包含其他符号,则字母在编码中仍必须占据0-25的空格。 Letter Encoding A AAAAA B AAAAB C AAABA D AAABB E AABAA F AABAB G AABBA H AABBB I ABAAA J ABAAB K ABABA L ABABB M ABBAA N ABBAB O ABBBA P ABBBB Q BAAAA R BAAAB S BAABA T BAABB U BABAA V BABAB …

8
研发技能挑战
在《龙与地下城》中,几乎所有事情都是由掷骰子决定的。通常,如果滚动大于或等于指定值,则您尝试做任何您想做的事情都会成功,否则会失败。最常见的是,使用20面模具(又名d20)进行滚动。 其他时候,使用技能挑战系统。它与上述简单系统相似,但是成功是由一个或多个玩家成功个人在失败一定次数之前进行一定次数的掷骰来决定的。例如,玩家可能试图用有限数量的锁扣来挑门上的多个锁。单独的成功掷骰表示成功摘取了其中一个锁,单独的失败掷骰表示破解了一个撬锁。总体而言,成功将意味着在打破所有锁扣之前成功摘取所有锁。 此外,某些卷可以是关键卷。在d20上,掷出1是严重失败,导致整个挑战立即失败(在上面的示例中,玩家可能会意外警告警卫)。掷出20是至关重要的成功,导致立即完成整个挑战(在上面的示例中,玩家可能会找到一组锁的钥匙,从而无需挑选它们)。在关键投掷的情况下,无论先前的成功与失败次数如何,挑战都将立即结束并确定结果。 在此挑战中,将给您带来难度,所需的成功次数以及挑战失败的失败次数。您必须模拟一个尝试挑战的玩家,然后输出结果。 输入值 3个整数,代表在单个掷骰中成功必须达到或超过的值,在挑战中成功所需的成功次数以及挑战失败的失败次数。输入的顺序和格式无关紧要,只要您指定要使用的顺序即可。难度将在1到20之间(包括1和20),成功和失败的次数将在1到100之间(包括1和100)。 输出量 d20掷骰的每个结果(按顺序排列的整数)和挑战的总体结果(真/假值)。格式无关紧要,只要单个结果是按顺序排列的,那么总体结果就可以在所有单个卷之前或之后出现(例如,您不能在卷中间输出整个结果),并且您可以指定要使用的输出格式并始终使用。 示例(括号中的值仅作说明,不包括在内): 输入: 12 5 3 (difficulty successes failures) 输出: 15 (success, 1-0) 10 (failure, 1-1) 5 (failure, 1-2) 16 (success, 2-2) 12 (success, 3-2) 15 (success, 4-2) 19 (success, 5-2) True (overall success) 输入: 15 2 3 (difficulty failures successes) 输出: 0 …
14 code-golf  game  random 

5
二元函数的性质
抽象代数中的许多重要主题都涉及对集合起作用的二进制函数。在研究此类主题时,已定义了此类功能的许多属性。 您的挑战将是确定给定域上的给定二进制函数是否拥有这些属性中的五个。 物产 关闭 如果每个可能的输出都在域中,则关闭二进制函数。 关联性 如果将二进制函数应用于一系列输入的顺序不影响结果,则该二进制函数为关联函数。也就是说,$如果(a $ b) $ c始终等于,则是关联的a $ (b $ c)。请注意,由于该值(a $ b)用作输入,因此必须关闭关联功能。 可交换性 如果交换输入的顺序不会更改结果,则二进制函数是可交换的。换句话说,如果a $ b始终等于b $ a。 身分识别 如果e域中存在某个元素,则二元函数将具有一个identity元素,a $ e = a = e $ a以便a该域中的所有元素都具有。 幂等 如果将二进制函数应用于两个相同的输入给出该数字作为输出,则该函数是幂等的。换句话说,如果是域中的a $ a = a所有人a。 输入值 您将获得矩阵形式的函数,该函数的域为数字0 ... n-1,其中n为矩阵的边长。 该值(a $ b)在矩阵中被编码为第at行的bth元素。如果输入矩阵为Q,则a $ b=Q[a][b] 例如,**域上的幂函数(在Python中)[0, 1, …

5
我需要将多少个平方,立方,四次幂等求和为n?
您会得到一个非负整数n和一个integer p >= 2。您需要将一些次p幂(p=2即正方形,p=3表示立方体)加在一起才能得到n。这始终适用于任何非负数n,但您不知道需要多少次p幂(任何正整数)。 这是您的任务:找到p可以求和的最小n 次方n。 例子 >>> min_powers(7, 2) 4 # you need at least four squares to add to 7 # Example: (2)^2 + (1)^2 + (1)^2 + (1)^2 = 4 + 1 + 1 + 1 = 7 >>> min_powers(4, 2) 1 # you need at least …

11
七人制游戏!谁说的
“ Sevens”游戏的玩法如下:n玩家围成一个圈,从1开始向上计数,然后向左移动(或从一个玩家A到另一个玩家B)。 当一个数p,有一个7在它或者被整除7达到,那么谁说话数量的球员p-1,未来的球员说之后p,必须说p+1和人说话颠倒顺序。例如,如果球员B说6,球员C说7,B说8,和球员A说9。 注意:对于那些想在现实生活中玩游戏的人,如果一个人忘记了一个数字(或者在sevens未说过的版本中,偶然说了一个seven),则将他们从圈子中删除,但是我们将在此挑战中忽略此细节。 挑战本身就是打印在七人制足球的完美游戏中每个玩家应该说出的数字,直到m输入n玩家的输入。 作为一个例子,其中五人,A,B,C,D,和E,是玩,直到他们到达30。他们以这种方式玩 A: 1 6 8 13 15 19 23 30 B: 2 7* 12 16 18 24 C: 3 11 17* 25 D: 4 10 21* 26 28* E: 5 9 14* 20 22 27*29 其中sevens标有*。请注意,在27和28,我们进行了两次反转,并且从D到正常播放E。 请注意,输出不必采用上述格式。我只是以某种方式将其打印出来,以使其更加清晰。 规则 输入是任意顺序的两个整数,m代表要说的最后一个数字,n代表玩家的数量。 输出可以是多个数组或多个字符串,每个播放器一个。如果使用字符串,则不必使用分隔符(尽管,如果可以在代码测试中添加一些分隔符,我们将不胜感激。)如果您实际上可以某种方式将它们打印成一个圆圈,那也是可以接受的,而且也很酷。 输出不必指定哪个玩家是哪个玩家(很明显,第一个玩家是说的那个人1),但是如果由于某种原因未对输出进行排序,则应弄清楚哪个玩家在说哪个数字集。如果您明确指出哪些玩家正在说话,也可以忽略不说话的玩家。我将在下面添加更多可能的输出示例。 这是代码高尔夫,因此最少的字节数获胜。 与往常一样,如果问题仍然不清楚,请告诉我。祝你好运,打高尔夫球! 例子 >>> …

4
解释StackyMath!
是时候实施我新的基于堆栈的语言了!它称为StackyMath。这将是一种基于堆栈的语言,在堆栈上有8种操作以及向堆栈中添加数字的方式。 操作清单: /:司。在堆栈的前2个数字上执行。将结果推回堆栈。 *:乘法。在堆栈的前2个数字上执行。将结果推回堆栈 -:减法。在堆栈的前2个数字上执行。将结果推回堆栈 +:加法。在堆栈的前2个数字上执行。将结果推回堆栈 ^:求幂。在堆栈的前2个数字上执行。将结果推回堆栈 %:模数。在堆栈的前2个数字上执行。将结果推回堆栈 !:阶乘。在堆栈上的最高编号上执行。将结果推回堆栈 D:复制堆栈上的最高编号 用伪代码定义的操作: /: push(pop divided by pop) *: push(pop times pop) -: push(pop minus pop) +: push(pop plus pop) ^: push(pop to the pop) %: push(pop mod pop) !: push(factorial pop) D: t = pop; push(t); push(t) 如何将数字压入堆栈: 将数字添加到堆栈很容易,只需将原始数字放在您需要的程序中即可。如果您需要在堆栈上放置多个数字,可以用逗号(,)分隔它们。您的程序将不需要处理-输入中的数字,如果用户想要一个数字,则应按想要取反的数字,然后按0和-。程序输入中的数字也限制为正整数。 输入: 您的程序应从命令行或从std …

1
箭迷宫逃生
题 您有一个50 x 50的字符数组。每个单元格都有一个箭头,指向四个方向中的任何一个。没有单元格为空。输入单元格时,必须按箭头指定的方向退出它。箭头也可能指向您来自的方向,从而导致死角。 您可以从迷宫最外边界的任何单元开始,找到一条进入迷宫的路径,并导致您从其他某个单元退出。输入将以包含<,>,^和v的数组的形式给出。输出将是一位数字(布尔值,整数或字符,将执行任何操作),其值为0(表明该任务是不可能的)或1(表明您拥有完成了任务)。 示例(实际数组将大于此) ^ v < > > < v < v > v ^ 输出将是 1个 因为您可以从右侧的<输入,这将导致您通过路径“ <v v”从底部v退出 任务是编写最短的代码,将迷宫作为输入,并确定规则中指定的路径,并输出一位数字0或1 也允许输出TRUE和FALSE而不是实际数字。
14 code-golf  maze 

5
整个字母
整个字母 在此挑战中,您很难记住字母。为了避免这种情况,您可以上下移动字母,直到找到字母为止。 因为您希望代码具有可移植性,所以将使用字母块来编写代码。您的字母块数量有限,因为大多数字母块都被盗了,因此您需要确保代码尽可能短。 例子 输入/输出对由空白行分隔: Ac ABc Ad ABcd fA fedCBA adB abcdcB Hello, World! HGfefghijkllmno, WVUTSrqpopqrqponmlkjihgfed! 挑战 您的目标是将相邻字母与A-Za-z它们之间所有的字母中间字母()链接在一起。如果大小写不同,则应在中间转换大小写。如果资本不能在中间平均转换,则在中间之后分解。如果字符不是字母字符,则不应进行任何转换。 获奖 这是代码高尔夫球,因此以字节为单位的最短代码胜出! -10%奖金:如果您的代码链接数字
14 code-golf  string 

12
所有人都说……
目标给定不包含字符[或的文本输入],请执行以下操作: 对于Amen具有至少一个大写字母的每个实例(因此,所有Amen不包含的实例amen),都输出相同的名称Amen(保留大写)。 对于/all the people said[?: ]/i(这是一个正则表达式)的每个实例,还输出Amen(任何情况都可以)。 在每个输出之后,您可以选择任何常量分隔符,例如换行符,空格或什么都不做。 这是一个代码高尔夫球,因此以字节为单位的最短程序获胜。 IO范例 Input: I said AMEN! AMEN, PEOPLE! Output: AMENAMEN ; any separator is fine, I choose none. Input: amen amen amen amen Output: ; nothing Input: ; empty Output: ; nothing Input: *blah blah blah* And all the people said? Output: …

22
字符串压缩和排序
给定一个字符串列表,输出一个单个字符串,该字符串是通过从每个位置的每个字符串中提取一个字符,然后按ASCII序号对其进行排序,然后将它们附加到输出字符串中而形成的。换句话说,对于n输入字符串,n输出的第一个字符将是按顺序排序的每个输入的第一个n字符,输出的第二个字符将是按顺序排序的每个输入的第二个字符,因此上。您可以假设这些字符串的长度均相等,并且至少会有一个字符串。所有字符串将仅由ASCII可打印字符组成(序号32-127)。 Python中的参考实现(在线尝试): def stringshuffle(strings): res = '' for i in range(len(strings[0])): res += ''.join(sorted([s[i] for s in strings],key=ord)) return res 例子: "abc","cba" -> "acbbac" "HELLO","world","!!!!!" -> "!Hw!Eo!Lr!Ll!Od" 规则 禁止出现标准漏洞 这是代码高尔夫球,因此最短答案以字节为单位 排行榜 这篇文章底部的堆栈摘录从答案a)生成了排行榜,a)是每种语言的最短解决方案列表,b)则是总体排行榜。 为了确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,可以将旧分数保留在标题中,方法是将它们打掉。例如: ## Ruby, <s>104</s> <s>101</s> 96 bytes 如果您想在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: ## Perl, 43 + …
14 code-golf  string 

17
代码高尔夫:转发sdrawkcaB sdrawkcaB转发转发sdrawkcaB
任务 用户输入一个句子-仅单词。除字母或空格外的任何输入(包括整数和标点符号)都应引发异常:“句子只能使用字母”。 输出具有一种模式,其中某些单词是反向的,而其他单词是正常的。 模式从正常单词开始,接下来的两个单词反转,然后接下来的两个单词正常,模式继续。 以下是单词应为正常位置和单词经反转位置的示例: 正常-反转-反转-正常-正常-反转-反转-正常... 输入范例 她在海边卖贝壳 输出范例 她在海岸边偷走贝壳 附加规则 如果使用大写字母,则它们应保留在最初张贴的字母上。 最初在输入上发布的任何多个空格都应减少为一个空格。例如Programming Puzzles and Code Golf变成Programming selzzuP dna Code Golf 最短的代码胜出!! 祝您编程愉快...

4
计算给定大小的阿贝尔群
背景 上一次,我们计算了给定大小的组,这不是一个简单的问题。 这次,我们将仅计算Abelian组,即具有可交换运算的组。形式上,一组(G,*)是阿贝尔如果X * Y = Y * X为所有的x,y在ģ。 这种方法使问题变得更加简单,因此我们将有效地对其进行计数。 任务 编写一个程序或函数,该程序或函数接受一个非负整数n作为输入,并打印或返回n阶的非同构阿贝尔群。 一种计算组数的方法(将用A(n)表示)是通过观察以下内容: A(0)= 0 如果p是素数,则A(p k)等于k的整数分区数。(由OEIS A000041提供) 如果n = mk,并且m和k是互质的,则A(n)= A(m)A(k)。 您可以使用此方法或任何其他方法来计算A(n)。 测试用例 Input Output 0 0 1 1 2 1 3 1 4 2 5 1 6 1 7 1 8 3 9 2 10 1 11 1 …

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.