Questions tagged «code-golf»

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

7
使用L形的Tromino将2 ^ N x 2 ^ N网格平铺
当初次向学生讲解数学归纳的证明技术时,一个常见的示例是将2个N ×2 N的网格与L形的Tromino砖砌在一起的问题,从而将一个预定的网格空间留空。(N是一些非负整数。) 如果您还不知道,我将交给您查看证明。有很多讨论它的资源。 您的任务是编写一个程序,该程序使用N的值以及要保留为空的网格空间的坐标,并输出所生成的Tromino平铺网格的ASCII表示形式。 角色O将填充空白区域,并且我们的Tromino旋转4次将如下所示: | +- | -+ -+ | +- | (是的,它可以是含糊其+与去-和|某些安排,但没关系。) 您的程序必须在N = 0(对于1×1网格)下工作,至少N = 8(对于256×256网格)。将给出x和y值,它们是的坐标O: x是水平轴。x = 1是左侧网格边缘,x = 2 N是右侧网格边缘。 y是垂直轴。y = 1是顶部网格边缘,y = 2 N是底部网格边缘。 x和y都始终在[1,2 N ] 范围内。 因此,对于给定的N,x和y,您的程序必须输出2 N ×2 N的网格,该网格完全用L形的三角骨平铺,但x,y网格坐标为O。 例子 如果N = 0,则x和y必须都为1。 O 如果N = 1,x = 1,y …

4
螺旋编程
编写一个命名函数或程序,该函数或程序接受单个整数N并打印(至STDOUT)或返回(作为字符串)下面螺旋的前N个条,从中心的竖线开始并顺时针向外螺旋。 _______________ / _____________ \ / / ___________ \ \ / / / _________ \ \ \ / / / / _______ \ \ \ \ / / / / / _____ \ \ \ \ \ / / / / / / ___ \ \ \ \ \ \ …

4
求ax + b的最大值
您将获得(a,b)列表和x列表。计算每个x的最大ax + b。您可以假设a,b和x为非负整数。 您的程序或函数必须在预期的时间内运行(如果您的代码涉及到该随机性,而不是输入,则为随机性)O(n log n)时间,其中n为总输入长度(两个列表的总和或最大值)。 这是代码高尔夫球。最短的代码获胜。 例 [[2 8] [4 0] [2 1] [1 10] [3 3] [0 4]] [1 2 3 4 5] 输出: [11 12 14 16 20] 说明: 11 = 1*1 + 10 12 = 1*2 + 10 = 2*2 + 8 14 = 2*3 + …

6
根据规范生成矩形
介绍 这项挑战的灵感来自我的2D模式匹配语言Grime。基本上,您将获得一个描述二维字符网格的“语法”,而您的工作是根据该语法生成​​一个网格。另外,从某种意义上说,网格应尽可能小。 输入值 您的输入是一个包含小写ASCII字符以及符号|和的字符串-。为简单起见,输入不包含重复的小写字符。字符串是一类矩形字符网格的规范,它使用堆栈从左到右进行解析,如下所示。 给定一个小写字符c,将任何一个m×n字符的网格压入堆栈。cm, n ≥ 1 给定一个管道|,弹出两个网格A并B从堆栈中弹出(B位于顶部),然后将AB通过串联B而获得的网格推到的右侧A。这要求A并B具有相等的高度。 给定一个连字符-,弹出两个网格A并B从堆栈中弹出(B位于顶部),然后将A/B通过串联B而获得的网格推到的底部A。这需要A并B具有相等的宽度。 确保在解析过程中对进行某些选择m和选择n(每个字母可能有所不同),输入规范正确地描述了一些矩形,该矩形最后留在堆栈上。 输出量 您的输出是由输入指定的字符的矩形网格。在删除任何行或列将使其无效的意义上,网格必须最小。您可以返回以换行符分隔的字符串(带或不带尾随换行符),2D字符数组或字符串数​​组,以最方便的格式为准。 请注意,您不需要完全如上所述地处理输入;唯一重要的是您的输出正确。 例 考虑规格 par-s||e- 首先,我们选择推1×2的矩形p,和1×1的矩形a和r(这样做的原因很清楚更高版本)。然后,我们弹出a和r矩形,并推动它们的垂直串联 a r 接下来,我们推1×2的矩形s,弹出它和上面的矩形,并推动其横向拼接 as rs 然后,我们弹出该矩形和该p矩形,并推动它们的串联 pas prs 最后,我们推入的3×1矩形e,将其弹出并上方的矩形,然后推入垂直串联 pas prs eee 这是程序的输出,或者是至少一种可能性。请注意,即使 ppas ppas pprs eeee 也是由规范生成的,它不是有效的输出,因为可以删除许多行和列。 作为一个更微妙的例子,考虑 co|m|p|il|e|r|- 此规范生成矩形 comp iler 这是有效的输出。但是,它也会产生 commp iiler 这也是有效的,因为没有使无效的行和列都无法删除。 规则 您可以提供完整的程序或功能。最低字节数获胜,并且不允许出现标准漏洞。 额外的测试案例 您可以使用它们来测试您的程序。 Input: …

6
> <>(鱼)打高尔夫球的技巧
因为我已经看到更多&gt; &lt;&gt;提交左右浮动最近,我想这可能是一个好主意,有一个提示页面。 除非它们之间有密切的联系,否则请在每个帖子中坚持一个提示。 官方Python解释器 在线解释器(存在一些错误,但对于大多数情况而言是好的)
14 code-golf  tips 

2
ICS海事标志字母
船舶使用“国际信号代码”标志字母进行通信,尤其是静态信号。 您面临的挑战是编写一个程序或函数,该程序或函数将采用STDIN中的字符串或作为参数,并以ICS标志字母显示相应的文本。如果您的语言未显示在屏幕上,则可以保存到文件。 您的程序或函数应支持大写和小写字母AZ,以及Space和Newline。与其他字符的行为是不确定的。 显示器应足够大,以 能够水平显示至少8个标记,垂直显示 6个标记。如果在收到换行符之前到达右边缘,或者消息太长而无法垂直显示,则行为是不确定的。 标记字母如下所示(罗马字母仅供参考,输出中不需要。) 尺寸图 对于这些标志的尺寸,没有统一的标准,因此,出于本挑战的目的,应遵循以下规定: 标志应为60x60像素,水平和垂直之间应留有30像素的间隙。 A和B上的燕尾切口应深15像素。 所有其他线应为水平,垂直或成45度角。 通过将标志划分为侧面3、4、5或6个正方形的虚构NxN网格来定位特征。请参考上图,但需要进一步说明: A,E,H,K,L和U基于2x2网格:每个颜色区域的宽度应为30像素。F中菱形的点也应位于标志两侧的中间。 J和T基于3x3网格:每个波段应为20个像素。 P,N和S基于4x4网格。Y的对角线也应将标志的边缘分成4个。 C,D,R和X应基于5x5网格。十字架的带和臂的宽度应为12像素。 G,W,M,V基于6x6网格。G的带和W的边界应为10像素宽。M和V上的叉臂应覆盖标志每个边缘的前10个像素和最后10个像素,沿长边缘保留40个像素的三角形区域。 I的圆圈应位于标记的中心,并且直径为30像素。 上述文字的误差为+/- 1像素。如果您的语言仅支持可缩放的图形,则可以将“像素”解释为“单位”。 色彩 颜色应为您的语言或其文档定义的红色,白色,蓝色,黄色和黑色。如果您的语言没有定义颜色,则可以使用以下颜色:红色FF0000,白色FFFFFF,蓝色0000FF,黄色FFFF00,黑色0000000。 背景应为灰色(r,g和b通道相等,强度在25%和75%之间。) 计分/漏洞 这是代码高尔夫。以字节为单位的最短代码获胜。 不允许出现标准漏洞。 不能使用用于显示标志的内置函数或库函数。输出应为非文本(尤其是不得使用unicode字符来构建标志形状。) 例 JFK got my VHS PC and XLR web quiz 应该产生以下

10
以字典顺序排序生成一组前置-追加排列
将长度的前置-追加序列定义为可以通过以下过程生成n的数字的排列1, 2, ..., n: 从数字开始1。 用于从每个数字2到n,放置这个号码到该序列的开头或结尾(或前置或追加它,顺序因此得名)。 例如,这是生成长度为4的前置-添加序列的有效方法: 1 21 [beginning] 213 [end] 2134 [end] 您的任务是构建一个程序或函数,该程序或函数将一个n从数字3到的数字30作为输入,并按n字典顺序打印或返回所有长度的前-后加序列(如果您输出的是字符串而不是列表,则表示大于9的数字以字母表示a-u,以保留字符串长度)。例如,这是以下命令n = 4: 1234 [RRR] 2134 [LRR] 3124 [RLR] 3214 [LLR] 4123 [RRL] 4213 [LRL] 4312 [RLL] 4321 [LLL] 通常,长度为2 n-1个前置-追加排列n。 您不得在代码中使用任何使用您语言的内置排序功能。以任何语言进行此操作的最短程序都会胜出。

2
最大程度延长整数间隔
假设您得到了一组不相交的整数间隔[a1,b1],[a2,b2],[a3,b3],...,[aN,bN]。(其中[a,b]是一组大于或等于a且小于或等于的整数b。) 索引处的间隔X覆盖bX - aX + 1值。我们叫这个号码cX。 鉴于每个间隔可以是... 保持不变(保持为[aX,bX]), +通过cX(成为[aX,bX + cX])向数字线的右侧扩展, 或-通过cX(成为[aX - cX,bX])向行的左侧扩展, 给定所有更新间隔的并集仍然可以不相交,那么最多可以包含多少个值? 编写一个函数或程序,该函数或程序采用字符串形式[a1,b1],[a2,b2],[a3,b3],...,[aN,bN]并计算该最大值。如果编写函数,则返回值。如果编写完整的程序,请使用stdin作为输入并将值打印到stdout(或使用最接近的替代方法)。 您可以假设所有值都在正常的有符号32位整数范围内,aX并且小于或等于bX所有索引X。间隔可以是任何顺序,不一定总是增加。它们必须以上述格式作为字符串给出。该字符串可能为空,在这种情况下,答案将为0。 以字节为单位的最短提交获胜。 例 如果输入为[-3,0],[1,2],[4,9]输出,则为22。中间间隔没有空间可以扩展,因此必须保持不变。左右间隔都可以分别扩展到[-7,0]和[4,15]。的联合[-7,0]和[1,2]和[4,15]包含了除3.这是22个值的所有值从-7到15。

2
弦乐建设游戏的制胜策略
背景 爱丽丝和鲍勃玩的游戏叫构造二进制字。要玩游戏,您需要确定一个长度n &gt;= 0,一G组长度为n二进制的单词(称为目标集)和一个长度n字符串(t其中包含字母Aand)B,称为回合顺序。游戏持续进行n几回合,然后依次选择i定义的玩家。游戏结束后,玩家将查看他们构建的二进制单词。如果在目标组中找到了这个词,爱丽丝将赢得比赛;否则,鲍勃获胜。t[i]w[i]wG 例如,让我们来解决n = 4,G = [0001,1011,0010]和t = AABA。爱丽丝得到第一回合,她选择了w[0] = 0。第二轮也是爱丽丝的,她选择w[1] = 0。鲍勃第三回合,他选择了w[2] = 0。在最后一圈,爱丽丝选择w[3] = 1。结果字词,0001在中找到G,因此爱丽丝赢得了比赛。 现在,如果鲍勃选择了w[2] = 1,爱丽丝本可以w[3] = 0在最后一轮选择,但仍然获胜。这意味着无论Bob如何玩,Alice都能赢得比赛。在这种情况下,爱丽丝有一个制胜法宝。可以将这种策略可视化为标记的二叉树,该树在与Bob的转弯相对应的级别上分支,并且其每个分支都包含来自的单词G: A A B A -0-0-0-1 \ 1-0 爱丽丝在转弯时只跟随树枝而玩;无论鲍勃选择哪个分支,爱丽丝最终都会获胜。 输入值 输入为length n,集合G为length的字符串列表(可能为空)n。 输出量 您的输出是Alice拥有获胜策略的周转单列表,这等效于如上所述的二叉树的存在。周转单的顺序无关紧要,但禁止重复。 详细规则 您可以编写完整的程序或函数。对于程序,您可以为输入和输出选择定界符,但两者必须相同。最短的字节数获胜,并且不允许出现标准漏洞。 测试用例 3 [] -&gt; [] 3 [000,001,010,011,100,101,110,111] -&gt; [AAA,AAB,ABA,ABB,BAA,BAB,BBA,BBB] 4 [0001,1011,0010] …
14 code-golf  game 

7
将n的幂相加
方向 编写一个程序,给定输入整数n(n &gt;= 0),输出最小的正整数 m,其中: n = a[1]^b[1] + a[2]^b[2] + a[3]^b[3] + ... + a[k]^b[k] a并且b是相同长度的有限序列 的所有元素a均小于m 的所有元素b均小于m 的所有元素a均不同且为整数a[x] &gt;= 0 的所有元素b均不同且为整数b[x] &gt;= 0 a[x]并且b[x]都不都是0(因为0 ^ 0是不确定的) 这是代码高尔夫球,因此最少的字节获胜。 例子 In 0 -&gt; Out 1 Possible Sum: In 1 -&gt; Out 2 Possible Sum: 1^0 In 2 -&gt; Out 3 …

15
填空
输入值 非负整数n,以及s仅包含字母数字字符和下划线的非空字符串_。的第一个字符s不是_。下划线s被解释为可以用其他字符填充的空格。 我们定义“无限字符串”的无限序列如下。字符串被无限次重复多次。对于所有的,字符串从得到通过用的字符填充它的空格,使得第一的被替换,所述第二带,等等。由于第一个字母不是,每个空格最终都会被填充,因此我们用无限字符串表示,其中每个字符串都已被其最终值替换。s1 = s s s...sk &gt; 1sk+1sks1_sks1[0]s1[1]s_s∞_ 输出量 作为字符串的前n几个字符。s∞ 例 考虑输入n = 30和s = ab_c_。我们有 s1 = ab_c_ab_c_ab_c_ab_c_ab_c_ab_c_ab_c_... 替代的空白,我们有s1s1 s2 = abacbab_ccab_caabbc_abcc_abacbab_cc... 我们再次用空格代替,结果是s1 s3 = abacbabaccabbcaabbc_abcccabacbab_cc... 另一种替代: s4 = abacbabaccabbcaabbcaabcccabacbabbcc... 据此,我们已经可以推断出的前30个字符,分别是s∞ abacbabaccabbcaabbcaabcccabacb 这是正确的输出。 规则 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。输入错误会导致崩溃。 测试用例 0 "ab__" -&gt; "" 1 "ab__" -&gt; "a" 3 "ab__" -&gt; "aba" …
14 code-golf  string 

4
那几乎是Lisp!
挑战 您的挑战是为一种类似Lisp的语言设计一个解释器,此后将被创造出来:GLisp。GLisp的程序代码将包含任意数量的由方括号表示的嵌套表达式,格式如下: (func arg1 arg2 ...) 注意,解释器必须在方括号,函数和参数之前和之后允许多余的空格字符。 种类 您将实现四种类型,整数,列表,布尔值和函数。可以使用自己的语法将整数和布尔值显式插入源代码中。您的解释器必须假设一系列数字字符表示一个整数(您不必实现显式插入负整数的语法)。您的解释器还必须假定true和false被指定为布尔值。用户无法明确定义函数,它们将始终返回单个值(任何长度的列表都计为单个值)。 功能 需要实现以下功能,格式为Function,Arity。如果Arity n以加号开头,则表示一个n或多个参数。除非另有说明,否则您可以假定赋予函数的所有参数都属于同一类型。您还可以假设如果没有为certian类型指定任何行为,则可以假定该函数的任何参数都不会属于该类型。下图将引用参数: (func argument1 argument2 ... argumentn) +,2+ 如果所有参数均为Integer类型,则必须返回参数之和 如果所有参数均为List类型,则必须按升序(arg1+arg2+ ...)返回参数的串联 如果所有参数的类型均为Boolean,则必须返回逻辑上所有参数序列 (+ 1 2 3 4 5) -&gt; 15 (+ (list 1 2) (list 3 4)) -&gt; (list 1 2 3 4) (+ true true true) -&gt; true -,2+ …

1
Python建议:内省函数调用的可移植性
在Python中,您可以dir在任何对象上使用该函数来获取其实例函数名称的列表: &gt;&gt;&gt; dir('abc') ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__','__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', …
14 code-golf  tips  python 

5
磁性雕塑
这是我先前在构造图时遇到的挑战的宽松延续。 背景 一位古怪的艺术家雇用您来估计他的雕塑的结构完整性。他通过拿起一堆立方体形状的磁铁,然后将它们一个个地扔进一大堆中来创作自己的艺术品。为了更好地分析他的方法,我们使用以下二维模型。我们从一个空的地板开始,然后将磁铁#放在任何整数坐标上,例如0: | v # =============== 0 如果将另一个磁铁放到处0,它最终会位于前一个磁铁的顶部: | v # # =============== 0 现在,让我们在放另外一个磁铁0,然后在放一个1: | #v ## # =============== 0 如上所示,一个下落的磁铁粘在它通过的第二个磁铁上(第一个只是使它减速)。第二个磁体不必直接位于第一个磁体的下方,并且两侧的磁体仍视为一个磁体: # # ##|## # v # ### # # # =============== 0 艺术家希望您计算最终雕塑中的最大垂直间隙,即,同一列上的两个磁体之间或磁体与其下方的地面之间的最大空白空间。在上图中,该数字将为3(在列上2)。 输入值 从左到右读取的整数列表,代表艺术家放下磁铁的坐标。您可以假设坐标满足-1024 &lt;= i &lt; 1024并且列表的长度最大为1024,如果有帮助的话。 输出量 最终雕塑中的最大垂直间隙。-1由于我们的雕刻家是达达主义者,因此空雕塑有缝隙,并且必须包括这种情况。 附加规则 您可以提供功能或完整程序。最短的字节数获胜,并且不允许出现标准漏洞。带有说明的代码是首选。 测试用例 [] -&gt; -1 …
14 code-golf  grid 

4
编写魔术拼写检查器
游戏《挥舞的双手》介于纸笔魔术:聚会和精心制作的剪刀石头布之间。每转一圈,您就为每个手写下八个手势之一: 扭动的F姜 提供的Palm S小憩 Wave D指点 C圈数 staB N整理 几乎没有其他重要的优先规则: 如果双手示意,P您将自动投降。(这是一种简化,但是我们继续。) 一次只能用一只手做手势B。 同一只手执行的一系列手势可以投射一个咒语,其中每个咒语都与一个特定序列相关。这些序列可以重叠,但是每个手势只能用作单个咒语的最终手势(因此,您一次最多可以创建两个咒语)。有些咒语要求双手同时做出手势。 您的任务是给定每只手的手势列表,以确定在当前回合中可以施放哪些咒语。对于每只手,列表中的最后一个字母代表当前回合选择的手势。 这是手势序列的列表。大写字母表示单手执行的手势,小写字母表示双手进行的手势。 B Stab cDPW Dispel magic cSWWS Summon elemental cw Magic mirror DFFDD Lightning bolt DFPW Cure heavy wounds DFW Cure light wounds DPP Amnesia DSF Confusion DSFFFc Disease DWFFd Blindness DWSSSP Delayed effect DWWFWc Raise …
14 code-golf  string  game 

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.