Questions tagged «code-golf»

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

27
一个月中有几天?
给定一个月的文本表示形式(不区分大小写的全名或3个字符的缩写),请返回该月的天数。 例如,december,DEC,和dec都应该返回31。 2月可以有28天或29天。 假设输入的是正确格式之一的月份。

24
Deranged!Combinatorics:计算子因子
次因子或rencontres数字(A000166)是一个数字序列,类似于排列组合中显示的因子阶数字。特别是ñ个subfactorial N!给出的数量紊乱一套的ñ元素。排列是一种排列,其中没有元素保持在相同位置。可以通过以下递归关系定义子因子: !n = (n-1) (!(n-1) + !(n-2)) 实际上,相同的递归关系也适用于阶乘,但是对于子阶,我们从以下内容开始: !0 = 1 !1 = 0 (对于阶乘,我们当然有1!= 1。) 给定n,您的任务是计算!n。 规则 像阶乘一样,子阶数增长非常快。如果您的程序只能处理输入n以便可以用您的语言的本机数字类型表示!n,那是很好的。但是,理论上,您的算法必须对任意n有效。这意味着,您可以假设积分结果和中间值可以用您的语言准确表示。请注意,如果常数e以有限精度存储或计算,则排除常数e。 结果必须是一个精确的整数(尤其是您不能用科学计数法近似结果)。 您可以编写程序或函数,并使用接收输入和提供输出的任何标准方法。 您可以使用任何编程语言,但是请注意,默认情况下,这些漏洞是禁止的。 这是代码高尔夫球,因此以字节为单位的最短有效答案为准。 测试用例 n !n 0 1 1 0 2 1 3 2 4 9 5 44 6 265 10 1334961 12 176214841 13 2290792932 14 32071101049 20 …

30
倒数(1 / x)
挑战 给定一个(浮点数/小数)数字,返回其倒数,即1除以该数字。输出必须是浮点数/十进制数,而不仅仅是整数。 详细规格 您必须以浮点数/十进制数的形式接收输入... ...具有至少4位有效数字(如果需要)。 越多越好,但不计入分数。 您必须使用任何可接受的输出方法进行输出... ...数字的倒数 可以定义为1 / x,x -1。 您必须输出至少4位有效数字精度(如果需要)。 输入为正或负,绝对值在[0.0001,9999]范围内。小数点后的位数永远不会超过4位,从第一个非零位数开始,位数也不会超过4位。输出必须精确到第一个非零数字的第4位。 (感谢@MartinEnder) 以下是一些示例输入: 0.5134 0.5 2 2.0 0.2 51.2 113.7 1.337 -2.533 -244.1 -0.1 -5 请注意,永远不会为您提供精度超过4位数字的输入。 这是Ruby中的示例函数: def reciprocal(i) return 1.0 / i end 规则 允许所有接受的输出形式 禁止标准漏洞 这是代码高尔夫球,以字节为单位的最短答案将获胜,但不会被选择。 澄清说明 您将永远不会收到输入0。 赏金 在大多数语言中,这一挑战显然是微不足道的,但是在更加深奥和不寻常的语言中,它却可以提供一个有趣的挑战,因此,一些用户愿意为在异常困难的语言中做到这一点而加分。 @DJMcMayhem将对最短的大脑Flak答案奖励+150点奖励,因为众所周知,对于浮点数来说,大脑Flak非常困难 @ L3viathan将为最短的OIL答案奖励+150积分。OIL没有本机浮点类型,也没有除法。 @Riley将为最短的sed答案奖励+100积分。 @EriktheOutgolfer将为最短的Sesos答案奖励+100积分。在诸如Sesos这样的fuckfuck衍生产品中进行除法非常困难,更不用说浮点除法了。 …

7
自解释口译员
根据乔治·爱迪生(George Edison)对这个问题的评论,编写最小的自我解释口译员。 您可以使用自己选择的语言。 空的语言不计算在内。您的程序必须至少两个字符长。 该程序不需要解释整个语言,只需解释图灵完备的语言功能子集(包含解释器)即可。 不算数。 请勿使用您语言的内置eval功能或等效功能。apply等等也一样。

22
生命,宇宙和ASCII艺术的答案
简单的挑战:尝试以尽可能少的字节输出以下文本: the answer toli fetheuniv ersea nde ver ything the ans wer tol ife the uni ver sean dev ery thin gth ean swer tolifetheuni ver seandeveryth ing the ans wer tol ifetheuniver sea ndeverything 原始图形包含332个字符。 规则 无输入或未使用的输入。 输出可以采用任何合理的格式(字符串,字符串列表,字符矩阵等)。 如果愿意,可以在图形中使用大写而不是小写。 允许尾随空格和换行符。 这是代码高尔夫球,因此每种语言中最短的程序/功能可能会获胜! 笔记 我们已经确定这是“高尔夫”的重复项目。我们对高尔夫编程并不陌生,您知道规则,我也是如此。这个问题是关于搜索和替换文本的。在这里,您必须使用给定的文本绘制形状,并且至少有两个当前答案证明,在这种情况下,高尔夫语言可以击败普通的压缩算法。

25
魔术弹出数
有一个著名的棘手算法可以计算 32位无符号整数中的设置位数: int popcount(unsigned x) { x = (x & 0x55555555) + ((x >> 1) & 0x55555555); x = (x & 0x33333333) + ((x >> 2) & 0x33333333); x = (x & 0x0F0F0F0F) + ((x >> 4) & 0x0F0F0F0F); x = (x & 0x00FF00FF) + ((x >> 8) & 0x00FF00FF); …

30
465安排
这是挑战。编写一些代码以输出范围内的所有整数。听起来很简单,但这是棘手的部分。它将以最低的编号开始,然后是最高的编号。然后是数组中尚未存在的最低数字。然后是尚未出现的最高点。 例: 让我们以1到5为起点 数字是[1、2、3、4、5]。 我们取第一,所以[1]。剩余数字为[2、3、4、5]。我们以最后一个新数组为[1,5]。剩余数字为[2、3、4]。我们以第一个新数组为[1、5、2]。剩余数字为[3,4]。我们采用最后一个新数组为[1、5、2、4]。剩余数字为[3]。我们以第一个新数组为[1、5、2、4、3]。没有剩余的数字,我们完成了。输出[1、5、2、4、3] 规则: 这是代码高尔夫球,用任何语言用最少的字节写。 没有标准漏洞。 请链接到在线口译员吗?(例如https://tio.run/) 两个输入,均为整数。范围的下限和范围的上限。 我不在乎输出的数据类型是什么,但是它必须以正确的顺序显示数字。 例子 低:4高:6结果:4 6 5 低:1高:5结果:1 5 2 4 3 低:-1高:1结果:-1 1 0 低:-1高:2结果:-1 2 0 1 低:-50高:50结果:-50 50 -49 49 -48 48 -47 47 -46 46 -45 45 -44 44 -43 43 -42 42 -41 41 -40 40 -39 …
24 code-golf 

4
不是不是!…还是?
介绍 实话实在很难理解,尤其是对于不熟悉实话的程序员。 创建口译员来帮助我们所有人在城市环境中生存是您的工作。 挑战 给定一个英语句子作为输入,创建一个程序或函数来确定句子的结果是肯定的还是否定的。 这句话包含0到2否定词。众所周知,双重否定会导致积极。因此,您的代码必须根据以下规则输出或返回true / falsey值: No negative words -> truthy One negative word -> falsey Two negative words -> truthy 否定词列表: no,not,none 以结尾的任何东西 n't never,neither,nor nobody,nothing,nowhere 有一种情况。每当句子以开头时No,,在确定结果时该词都不会被视为否定词(它确实计入否定词的数量,因此可以再增加一个)。 该句子将遵循基本的语法规则(大写,标点符号),并且仅包含可以从词典中找到的单词(幸运的是,这不会使问题标题无效)。该句子将不包含任何专有名词(对不起,博士,您不在了)。 测试用例 真相: Yes. It's noon. Hello, World! What is this? Ain't no thang! Never say never. No, it's noon …

30
以n为底的数字的ASCII艺术解压缩
这是受Magic Octupus Urn的05AB1E答案的启发。 给定两个参数,一个正整数和一个字符串/字符列表: 将数字转换为base-n,其中n是字符串的长度。 对于每个字符,用该字符替换基数为n的该字符索引的所有出现。 打印或返回新字符串。 例子: Input: 2740, ["|","_"] 2740 -> 101010110100 in base 2 -> Replace 0s with "|" and 1s with "_" Output: _|_|_|__|_|| Input: 698911, ["c","h","a","o"] 698911 -> 2222220133 in base 4 -> Replace 0s with "c", 1s with "h", 2s with "a", and 3s …

21
我应该按几次?
我们都习惯了老式的电话键盘,对吗?供参考,如下所示: 给定一个仅包含小写ASCII字母和单个空格的字符串,您的任务是返回一个敲击次数,以便使用上面的电话键盘键入完整的字符串。 对于不熟悉此功能的人,以下是它的工作原理: 2例如,带有数字的键也记录有字符串abc。要键入a,必须按一次此键,因为b必须按两次,并且c必须按三次。 对于同一键上的连续字母,必须等待1秒钟再按一次。因此,如果要键入cb,则必须按3次c,等待一秒钟,然后按两次b,因此仍需点击5次。 除一个空格仅需按1 次外,其他所有键也是如此。另请注意,键7和上9有四个字母。应用相同的算法,唯一的区别是字母数。可以在上图(但小写)或以下列表中找到与每个键对应的字符串,其中包含您可能会收到的所有字符: "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz", " " 测试用例 输入->输出(说明) “”-> 0(不要轻敲) “ water”-> 8(“ w,a,t”分别需要敲击1次(在键9、2和8上),“ e”需要2次敲击(在3号键上),“ r”需要3次敲击(在7号键上) ),1 + 1 + 1 + 2 + 3 = 8) “肥皂”-> 9(4 + 3 + 1 + 1) “坎德拉”-> 13(3 + 1 …

7
扩大六角形
给定ASCII艺术六边形作为输入,输出边长都长一个单位的一个。 _____ ____ / \ / \ / \ / \ / \ \ \ => \ \ \ / \ / \____/ \ / \_____/ 输入六边形将具有180度对称性,但否则边的长度可以全部不同。在上方,边长(2,4,3)扩大为(3,5,4)。边长将为非零。 六边形由下划线_,斜线/和反斜线组成\。请注意,在水平边缘(带下划线)中,顶部边缘位于其自己的线上,而底部边缘则不在。 输入输出 我将成为一个粘糊糊的人,在这里需要使用ascii-art格式:输入和输出应该是一个包含换行符的字符串,该字符串代表图像,而不是行列表。当然,您的代码可以依次打印每一行以产生图像,或者,如果您的语言可以做到的话,您也可以读一次STDIN来输入。 细节 如果需要,输入可以包含可选的尾随换行符,但否则将没有空行。您可以选择在输入中没有尾随空格,也可以选择将每行填充为相同长度(最长行的长度)的空格。 与输入一样,输出应与屏幕的左边缘齐平。您可能在上下都有多余的换行符以及尾随空格。 测试用例 输入,然后输出。 _ / \ \_/ __ / \ / \ \ / \__/ ____ / \ …

3
从数组中绘制树
给定一个可能嵌套的非空单位数字正整数(不能保证唯一)的数组,请使用箱形绘图字符将ASCII艺术形式的输出输出为树┌ ┴ ┐ ─ │ ┬ ┼。(这些是从“代码页437”复制的,但是您可以使用任何等效的表示形式)。 数组的每个整数都应该是树的叶子。数组中处于同一级别的元素应位于树的同一级别。所有元素都应由足够的空格分隔以区分(由您决定宽度之间的最小间隔)。 例如,给定array [[1, [2]], [3, [4, 5]]],输出以下树 ┌─┴─┐ ┌┴┐ ┌┴─┐ 1 │ 3 ┌┴┐ 2 4 5 对于数组[1, 2, 3],树可能看起来像 ┌─┼─┐ 1 2 3 但是数组[[1, 2, 3]]看起来像 │ ┌─┼─┐ 1 2 3 虽然数组[1, [1, [1, [1]]]]看起来像 ┌─┴┐ 1 ┌┴─┐ 1 ┌┴┐ 1 │ …

13
两个回文不足
一些数字(例如)是以10为底的回文数:如果以相反的顺序写数字,则会得到相同的数字。142411424114241 一些数字是2个回文的总和。例如或。110=88+22110=88+22110=88+222380 = 939 + 14412380=939+14412380=939+1441 对于其他数字,仅两个回文是不够的。例如,不能将21写成2个回文的总和,而您能做的最好的就是。21 = 11 + 9 + 121=11+9+1个21=11+9+1 编写一个函数或程序,该函数或程序采用整数输入n并输出n不能分解为2个回文之和的th数。这对应于OEIS A035137。 一位数字(包括0)是回文。 序列的标准规则适用: 输入/输出灵活 您可以使用0或1索引 您可以输出n第一n项或第一项,或无限序列 (作为旁注:所有整数都可以分解为最多三个回文的总和。) 测试用例(1索引): 1 -> 21 2 -> 32 10 -> 1031 16 -> 1061 40 -> 1103 这是代码高尔夫球,因此最短的答案为准。

9
生成Graeco-Latin正方形
免责声明:我不知道任何非蛮力解决方案 对于两组相同长度的Graeco-Latin正方形,是排列,每个像元包含第一组元素和第二组元素的唯一(在整个正方形上)对,这样,该对中的所有第一元素和所有第二元素在其行和列中都是唯一的。就像人们可能猜到的那样,最常用的集合是希腊字母和拉丁字母的前个字母。nnnn×nn×nn \times nnnn 这是4x4 Graeco-Latin正方形的图片: Graeco-Latin方块听起来很有用(Wikipedia文章提到“实验设计,比赛安排和构造魔术方块”)。给定正整数,您的任务是生成 Graeco-Latin平方。nnnn×nn×nn\times n 输入项 正整数 ; 确保存在一个 Graeco-Latin平方(即)。n>2n>2n > 2n×nn×nn\times nn≠6n≠6n \ne 6 输出量 侧面长度为n的Graeco-Latin正方形,它是二维数组,数组数组,展平数组或直接输出。 笔记 您不必专门使用希腊字母和拉丁字母;例如,也允许输出正整数对。 如果您选择使用不能任意扩展的字母,则必须(理论上;您的代码不必在宇宙热死之前完成)支持至少20的最​​大边长。 这是代码高尔夫球,因此最短的代码获胜!
24 code-golf 

17
创建低于50,000的蛇行列表
偷袭数字挑战 我想知道在1到50,000之间有多少个蛇行数字? 在此游戏中,蛇行数字是指可以通过向上,向下,向左或向右移动一个键在传统数字键盘(下面的格式)上键入的数字。 7 8 9 4 5 6 1 2 3 0 例如,如果您以数字5开头,则可以选择4、6、8或2作为下一个有效动作-但是,由于7、3、9和1与当前键成对角线,因此它们是禁止进入的。因此,如果您有5个,然后是2个,则下一个可行的键选择又是0、1、3或5。 在此Code Golf练习中,您将输出一个列表,其中包含1到50k之间的所有正数,以及所有符合条件的数的最终计数。 规则 数字不能以零开头。 数字必须是整个正整数。 从左到右读取的每个连续数字必须在数字键盘周围“蛇行”。 蛇不能斜跨钥匙穿过 可以从数字1和2访问数字0 数字不能配对(例如:22) 有效的蛇行号码示例: 12369 45201 1254 10102 1 12 987 无效数字的例子 1238 - 8 is not connected 0001 - multiple leading 0s 0101 - leading 0 159 - snake …
24 code-golf 

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.