Questions tagged «code-golf»

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

15
字母染色体
介绍 字母挑战已经存在于我们的基因中,下面让我们来演示一下。 挑战 准确打印以下文本: AaBbCc cCbBaA BbCcDd dDcCbB EeFfGg gGfFeE HhIiJj jJiIhH KkLlMm mMlLkK NnOoPp pPoOnN QqRrSs sSrRqQ TtUuVv vVuUtT WwXx xXwW Yy yY ZZ zz ZZ Yy yY WwXx xXwW TtUuVv vVuUtT QqRrSs sSrRqQ NnOoPp pPoOnN KkLlMm mMlLkK HhIiJj jJiIhH EeFfGg gGfFeE BbCcDd dDcCbB AaBbCc cCbBaA 规则 您必须匹配每个字母的大小写 尾随和/或前导换行符和/或空格是允许的 …

4
DAG是过渡传递吗?
给出此挑战的目标是有限有向无环图(DAG),确定该图是否为传递式约简。 关于什么是DAG和传递减少的简要说明: DAG是具有定向边的图(即,您只能在该边上沿一个方向行进),这样,给定图上的任何起始节点,就不可能返回到起始节点(即,没有循环)。 在给定任何起始节点的情况下,如果可以通过任意正数的边沿移动到图中的另一个终止节点,则将该终止节点定义为可从起始节点到达。在一般的DAG中,可能存在从起始节点到目标结束节点的多条路径。例如,使用以下菱形图: 要进入节点D从A,你可以采取的路径A->B->D或A->C->D。因此,D可从到达A。但是,没有路径可以B从node到达节点C。因此,B无法从node到达节点C。 将图的可达性定义为图中每个起始节点的可达节点列表。因此,对于同一示例菱形图,可达性为: A: [B, C, D] B: [D] C: [D] D: [] 具有与上图相同的可达性的另一个图如下所示: 但是,第二个图比原始图具有更多的边。图的可传递约简是具有最少数量的边且原始图具有相同可达性的图。因此,第一个图是第二个图的传递减少。 对于有限的DAG,可传递折减可确保存在并且是唯一的。 输入值 输入是“列表列表”,其中外部列表​​具有顶点数量的长度,而每个内部列表是离开关联节点的边的数量的长度,并包含目标节点的索引。例如,描述上面第一张图的一种方法是(假设基于零的索引): [[1, 2], [3], [3], []] 您可以在任何任意整数值(例如,基于0或1的索引)处开始第一个节点的索引。 输入可以来自所需的任何输入源(stdio,功能参数等)。只要没有给出其他信息,您就可以自由选择确切的输入格式。例如,如果要从stdio接收输入,则可以使每行都是关联节点的边的列表。例如: 1 2 3 3 '' (blank line) 每个邻接表中的索引不一定要排序,并且可能有多个边连接两个节点(例如:)[[1,1],[]]。您可以假设输入图的连接较弱,并且不包含任何循环(即,它是DAG)。 输出量 如果给定的输入DAG是传递折减,则输出为真,否则为假值。这可以是任何所需的接收器(stdio,返回值,输出参数等) 例子 所有示例均使用基于0的索引。 [[1,2],[3],[3],[]] true [[1,2,3],[3],[3],[]] false [[1,1],[]] false [[1,2,3,4],[5,6,7],[5,8,9],[6,8,10],[7,9,10],[11,12],[11,13],[12,13],[11,14],[12,14],[13,14],[],[],[],[]] true [[5,6,7],[2,3,0,4],[5,8,9],[6,8,10],[7,9,10],[11,12],[11,13],[12,13],[11,14],[12,14],[13,14],[],[],[],[]] true …

30
通过输入打印乘法表
在此挑战中,您必须通过输入来打印乘法表,以下是一些示例: Input: 2 Output: 0 2 4 6 8 10 12 14 16 18 20 Input: 20 Output: 20 40 60 80 100 120 140 160 180 200 规则 以字节为单位的最短代码获胜。 这个挑战是一个代码高尔夫,它遵循代码高尔夫的一般规则(code-golf) 如果您的代码无法打印数字,则可以使用字母,这是一个示例: 输入:B 输出:BDFHJLNPRT 您可以选择从0或数字(例如20)开始。您可以选择是否放置空格。挑战是免费的,只需输入并打印乘法表即可。 您的输出必须列出给定数字的时间表的前10个成员。您可以省略0 * n。

3
绘制欧盟估计标志
欧盟指令(Unicode的U + 212e,您可能不能简单地为这一挑战打印)所使用的“估计”符号的规范非常精确。 要复制此问题的一些限制,请执行以下操作:使用矢量或光栅图形将符号渲染到文件或屏幕。如果对输出进行光栅化,则图像的尺寸必须为264像素×240像素或更大。不得绘制任何其他帮助线或长度指示器。

15
计算斐波那契系数
背景 斐波那契数列定义为 f(1) = 1 f(2) = 1 f(n) = f(n-1) + f(n-2) 与阶乘相似,Fibonorial是前n个斐波纳契数的乘积。 g(n) = f(1) * f(2) * ... * f(n-1) * f(n) 与二项式系数相似的斐波诺式系数定义为 a(n, 0) = 1 a(n, k) = g(n) / ( g(n-k) * g(k) ) = f(n) * f(n-1) * ... * f(n-k+1) / ( …

3
两个向量的线性组合
执行摘要 给定代表两个向量及其各自“权重”的输入,则产生的输出也代表这些向量的加权总和。 挑战 输入将包含以下字符的一行或多行: 正好出现一次数字0,它表示二维平面中的原点; 正好是另外两个数字(1-9;可以是或可以不是相同的数字),它们相对于原点的位置代表矢量,并且其值代表这些矢量的权重; 一些“背景字符”。求解器可以选择特定的背景字符;例如,我将选择“。” (主要是为了人类可读性)。或者,背景字符可以是任何看起来像空白的东西。 (求解器可以选择输入是单个多行字符串还是单行字符串数组。) 例如,输入 ....2 .0... ...3. 表示权重为2的坐标(3,1)处的向量,权重为3的坐标(2,-1)处的向量。 输出应与输入几乎相同,并进行以下更改: 由求解器选择的“结果字符”,将被添加到由输入矢量的加权和指定的位置(等效地,在输入矢量的适当线性组合的位置); 在同一张图片中,需要多少背景字符以适合原点,两个输入向量和输出向量。如果需要,可以包含额外的背景字符;唯一的限制是,如果背景字符是可见字符,则整个输出的形状必须是矩形,并且每个不代表矢量的字符都必须是背景字符。(如果将空格用作背景字符,则无需强制执行这些约束。) (通常,如果我们有一个权重为a的向量(v,w)和权重为b的第二向量(x,y),则它们的加权总和为a(v,w)+ b(x,y)=(av + bx,aw + by)。) 在前面的示例中,适当的线性组合为2 *(3,1)+ 3 *(2,-1)=(12,-1)。如果我们使用“ X”作为结果字符,那么输出看起来像 ....2......... .0............ ...3.........X 要么 ................ ...2............ 0............... ..3.........X... ................ ................ 通常的代码高尔夫评分:最短的答案(以字节为单位)获胜。 输入和输出示例 如果使用空格,则上面的输入看起来像 2 0 3 和输出看起来像 2 0 3 X 前导/尾随空格字符/行无关。如果读者看不见它们,那很好。(话虽如此,在其余示例中,我将回过头使用“。”作为背景字符,以使其更易于阅读。) …

30
创建并写入文件
挑战 创建一个新文件并将字符串写入Hello World其中。 限制条件 您的挑战必须写入文件系统中磁盘上的文件。 该文件可能不是在解释器正常运行期间生成的日志文件。 该文件只能包含字符串Hello World。允许包含尾随换行符或最小空格。没有其他内容。 除非需要运行程序,否则不允许命令行标志/管道(等)。(例如perl -p) 笔记 这是代码高尔夫球,因此最短的程序以字节为单位。 遵循规则的精神而不是文字。

2
计算字符串的运行
请考虑以下W. Rytter 摘自字符串运行次数的定义。请注意,单词,字符串和子字符串大致都是同义词。 字符串中的游程是字符串中不可扩展的(具有相同的最小周期)周期段。 单词w的周期p是任何正整数p,因此只要定义了该方程式的两边,w [i] = w [i + p]。令per(w)表示w的最小周期的大小。我们说单词w是周期iff per(w)<= | w | / 2。 例如,考虑字符串x = abcab。per(abcab) = 3作为x[1] = x[1+3] = a,x[2]=x[2+3] = b并且没有更短的期限。abcab因此,该字符串不是周期性的。但是,该字符串abab是周期性的per(abab)= 2。 字符串w中的游程(或最大周期性)是一个区间[i ... j],其中j> = i,使得 w [i ... j]是周期为p = per(w [i ... j])的周期词 最大。形式上,w [i-1] = w [i-1 + p]或w …
11 code-golf  string 

9
将ASCII艺术带入三维
在这个挑战中,您必须将ASCII艺术(通常是2D)带入3D! 怎么样? 像这样, X X DD X D D X X DD 至... X X DD X X DD D X X DDDD X XDDD X X DD 那我们该怎么做呢? 给定ascii艺术和N,重复N一次。 对于每个字符(我们将其称为A): 设B成正好是1右1的字符A 如果B是空格或未定义: 设置B为A。 眼镜 第一个输入可以是带有换行符的字符串,也可以是代表2D ASCII艺术的字符串列表。 您可以使用%END%标记输入的结尾,但这不是必需的。 第二个输入将是N。这将是一个正整数。 字符串的所有行都将具有相同的长度。 例子 输入: ("###\n###",1) 输出: ### #### ### 规则 基本的代码高尔夫球规则适用。 另外,如果您有任何疑问,请务必在评论中提问!

5
评估战略战斗
在游戏Stratego中,主要的游戏机制是当您用自己的对手攻击对手的棋子时。在这个挑战中,您的工作是模拟其中一场战斗,并说出谁能幸免。 眼镜 您将获得一对表示Stratego件的字符串作为输入。这些碎片是其中之一"S 1 2 3 4 5 6 7 8 9 10 B"(S是间谍,B是炸弹)。这对中的第一个将成为攻击者,第二个将被攻击。 以下是确定战斗结果的规则: 较高的数字胜过较低的数字:["4", "6"] -> ["6"]。 如果两者相同,则都死:["7", "7"] -> []。 间谍位于底部,甚至位于以下1:["S", "2"] -> ["2"]。 但是,如果间谍攻击10,则间谍会获胜:["S", "10"] -> ["S"]。 但是如果10攻击者是,则正常规则仍然适用["10", "S"] -> ["10"]。 如果有任何东西袭击炸弹,则炸弹获胜:["5", "B"] -> ["B"]。 但是,矿工(a 3)可以化解炸弹:["3", "B"] -> ["3"]。 炸弹永远不会成为攻击者。 监视者(a 1)可以使用常规机制进行攻击,但是他们也可以尝试“猜测”其他玩家的等级,可以用任何理智的符号表示。 如果他们猜对了,另一片死亡:["1(5)", "5"] -> …

3
所有阿姆斯壮数字
阿姆斯壮数字(AKA Plus完美数字或自恋数字)是一个数字,等于其数字的n-次幂的和,其中n是数字的位数。 例如,153具有3数字,和153 = 1^3 + 5^3 + 3^3,153阿姆斯壮数字也是如此。 例如,8208具有4数字,和8208 = 8^4 + 2^4 + 0^4 + 8^4,8208阿姆斯壮数字也是如此。 在2013年11月14日,我们测试了数字是否为阿姆斯特朗数字。 现在,我们要列出所有阿姆斯特朗编号。确切有88阿姆斯壮数字: 1 2 3 4 5 6 7 8 9 153 370 371 407 1634 8208 9474 54748 92727 93084 548834 1741725 4210818 9800817 9926315 24678050 24678051 88593477 146511208 472335975 534494836 …

6
最长算术子序列
给定一个非空的有限整数序列,返回最大长度的算术子序列。 如果有多个相同的最大长度,则可以返回它们中的任何一个。 定义: 一个算术序列是这样的序列a(1),a(2),a(3),a(4),...,例如,有一个恒定的c,使得a(m+1)-a(m) = c对于所有m。换句话说:两个后续项之间的差是恒定的。 给定一个序列,b(1),b(2),b(3),b(4),...一个子序列就是一个序列b(s(1)),b(s(2)),b(s(3)),b(s(4)),...,其中1 <= s(1),s(m) < s(m+1)对于所有m。换句话说:采用原始顺序并删除所需的任意多个条目。 例子 Input Output [4,1,2,3,6,5] [1,3,5] or [1,2,3] [5,4,2,-1,-2,-4,-4] [5,2,-1,-4] [1,2,1,3,1,4,1,5,1] [1,1,1,1,1] or [1,2,3,4,5] [1] [1] 一些较长的测试用例: Length: 25 Input: [-9,0,5,15,-1,4,17,-3,20,13,15,9,0,-6,11,17,17,9,26,11,5,11,3,16,25] Output: [15,13,11,9] or [17,13,9,5] Length: 50 Input: [35,7,37,6,6,33,17,33,38,30,38,12,37,49,44,5,19,19,35,30,40,19,11,5,39,11,20,28,12,33,25,8,40,6,15,12,27,5,21,6,6,40,15,31,49,22,35,38,22,33] Output: [6,6,6,6,6] or [39,33,27,21,15] Length: 100 Input: [6,69,5,8,53,10,82,82,73,15,66,52,98,65,81,46,44,83,9,14,18,40,84,81,7,40,53,42,66,63,30,44,2,99,17,11,38,20,49,34,96,93,6,74,27,43,55,95,42,99,31,71,67,54,70,67,18,13,100,18,4,57,89,67,20,37,47,99,16,86,65,38,20,43,49,13,59,23,39,59,26,30,62,27,83,99,74,35,59,11,91,88,82,27,60,3,43,32,17,18] Output: [6,18,30,42,54] or …

3
苹果酱推子
过去,所有1337个孩子在聊天室中都使用了文本推子。我不了解你们,但是我想像他们一样感到很酷。唯一的问题是,它们的旧脚本和应用程序与所创建的软件紧密耦合,因此我不能随便在任何地方使用这一惊人的功能。我还希望该解决方案易于移植,因此您需要使代码尽可能小,以使其适合我的软盘(我只希望携带一张软盘,但是如果您的源代码太大,我可以携带多个:P)。 输入值 颜色列表(RGB,十六进制,名称等) 文字格式 您的程序应该期望颜色列表至少包含2种颜色。 要格式化的文本可以是大于零的任何长度,并且字符将限于可打印的ascii。(提示:较长的文本输入可能要求您将中间颜色重新用于连续字符) 输出量 除了字体和/或标记/样式外,输出文本应与输入文本没有任何不同(注意:如果输出包含html标记,则需要对输入进行html编码)。您可以输出带有标记/样式的文本(html样式标签,控制台颜色等)或褪色文本的图片。除非输入中没有足够的字符来满足此要求,否则所有彩色十六进制应出现在输出中。如果是这种情况,请查阅优先级规则,以确定输出中应显示哪些颜色的十六进制。输出中的顺序或这些颜色仍应为输入顺序。 颜色优先规则 如果输入是一个字符,将使用第一种颜色 如果只有两个字符,将使用第一个和最后一个颜色 如果存在三种以上的颜色,并且多于一种字符,则应优先使用第一种和最后一种颜色,然后按输入顺序排列其余颜色。 如果字符多于颜色,则字符应使用中间颜色从一种颜色淡入另一种颜色 示例(优先级规则分别为1-3): #颜色| 颜色0 | ... | 颜色n | 文字 3 ff0000 0000ff ffff00 M-> -> -> 3 ff0000 0000ff ffff00 hi 4 ff0000 0000ff ffff00 0fff00 sup 为了清楚起见,文本颜色应从一种颜色的十六进制逐渐淡入另一种颜色。淡变不必完全均匀,但是除非字符不足以使淡变好,否则淡变不应是突然的。通常,此淡入淡出是通过为rgb值增加/减少一定间隔来为每个字符选择中间颜色来实现的,该间隔由必须使用的字符数和颜色之间的差异决定。例如,如果我们需要介于(#ff0000)和(#000000)之间的单一颜色,则可以选择它位于中间的颜色。最佳输出将看起来很漂亮。 示例(优先级规则4): 3 ff0000 ff7f00 f0ff00 To be or not …
11 code-golf 

1
递归Steiner链
斯坦纳链是一组N个圆,每个圆与两个其他不相交的圆以及该链的上一个和下一个圆相切,如下图所示: 在此挑战中,您将编写一个程序/函数以递归方式绘制Steiner链,也就是说,给定链的圆将是链的另一次迭代的基础圆: 挑战 编写一个程序/函数,该程序/函数接受图像尺寸以及表示链的每个连续迭代中圆圈水平的整数列表,并输出绘制了递归Steiner链的图像。 输入值 您的程序/函数将接受2个参数: s -图片的宽度和高度 ls -表示链的每个连续迭代中存在的圆数的正整数列表,从最上链到最下链排序 输出量 您的程序/函数将输出尺寸为sx 的图像,s显示可追溯的Steiner链。 顶层基圆将与图像一样大,直径为s,位于图像内部 为了简化起见,Steiner链的2个基圆将是同心的,即2个基线圆的中心点将是相同的 给定的外半径,R和圆的在链条的数量,N为内半径的公式R'是R' = (R-R*sin(pi/N))/(sin(pi/N)+1) 链的圆以及内部基圆将是链的下一次迭代的外部基圆 在通过链环递归时,下一个链的顺序应对应于中的下一个值 ls 在通过链的内圈递归时,顺序应与其父顺序相同(例如[5,2]): 所有链条应在深度为 ls 链条的旋转无关紧要: 但是,递归链相对于其父母中心点的旋转应相同: 所有圆都应画出轮廓或实心填充 颜色选择留给实现,除了漏洞(例如,用相同的颜色填充所有内容) 示例运行 在以下示例中,颜色由确定(depth of the recursion)^4。 您可以在此处找到源。 chain(600,[5,4,3]) chain(600,[11,1,1,1,1,1,1]) chain(600,[5,6,7,8,9])

5
打印AdamN磁贴
Adam7是用于栅格图像(例如PNG)的隔行算法。之所以称为“ Adam7”算法,是因为它是Adam M. Costello发明的,并且是通过遵循一定的模式7次而生成的。Adam7算法令代码高尔夫真正有趣的一件很酷的事情是,只要奇怪,该模式就可以重复任意次。早在1996 PNG年制定标准时,仅9次迭代就足够了,因为9次迭代过于复杂,而5次迭代效率不高。 这是图块的第一次迭代: a 很简单 这是一个“ Adam1”图块。这是我们进入下一个迭代的方式,即“ Adam3”图块。 由于上一张是1x1,我们将高度和宽度加倍,下一张将是2x2。首先,我们从左上角的“ a”开始。 a- -- 第2步,将此模式复制到右侧,然后将我们的字母增加一个。 ab -- 步骤3与步骤2相同,但请向下复制而不是向右复制。 ab cc 繁荣。“ Adam3”图块。让我们也执行“ Adam5”,这样您就可以实际了解算法的工作原理。因此,此图块将再大一倍4x4。同样,我们从a左上角的a开始: a--- ---- ---- ---- 将此模式加倍,增加字母,然后将其移至右侧: a-b- ---- ---- ---- 再次,这次下来。 a-b- ---- c-c- ---- 同样,这次是在右边。 adbd ---- cdcd ---- 再次,这次下来。 adbd eeee cdcd eeee 这是“ Adam5”图块。这是Adam7磁贴的ASCII表示形式: …

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.