Questions tagged «code-golf»

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

7
行,列,对角线,块
为某个正整数N编写一个正方形的代码块,该代码块的宽度为N个字符,高度为N个字符。 例如,您的N可能为5,该块如下所示: ThisI sMy5B y5Cod eBloc kOkay 该块的行为如下: 提取第一行并作为程序运行时,row需要将准确的文本打印到stdout。 例如,ThisI将打印row。 提取左列并作为程序运行时,col需要将准确的文本打印到stdout。 例如,Tsyek将打印col。 从左上角到右下角的主要对角线被提取并作为程序运行时,dia需要将准确的文本打印到stdout。 例如,TMCoy将打印dia。 当整个块作为程序运行时,包括换行符(带有可选的尾随换行符),blk需要将确切的文本打印到stdout。 例如, ThisI sMy5B y5Cod eBloc kOkay 将打印blk。 细节 所有四个程序都以相同的编程语言运行。 原始块中的N 2个字符可能不是行终止符。 如果您的语言没有标准输出,则可以使用另一种常见的输出方法。所有四个程序的方法都必须相同。 提交的原始块包含最少的不同字符(不包括换行符),则获胜。决胜局以较小的N进入提交。

2
单词搜索难题生成
给定一个字符串列表,找到包含每个初始字符串的最小平方矩阵。字符串可能会水平,垂直或对角线出现,并且会向前或向后出现,例如此问题“ 单词搜索难题”。 单词应放置在正方形中,每个方向(水平,垂直和对角线)至少应包含一个单词。单词应该只出现一次。 因此,输入只是单词列表。例如:CAT, TRAIN, CUBE, BICYCLE。一种可能的解决方案是: B N * * * * * * I * * C A T * A C * * * * * R * Y * * C * T * * C * U * * * * * L B * …

6
迭代除数扭曲
定义 设m和n为正整数。我们说m是一个除数扭曲的n,如果存在整数1 < a ≤ b,使得n = a*b和m = (a - 1)*(b + 1) + 1。如果m可以从获得n通过施加零个或多个除数的曲折,然后m是一个后代的n。请注意,每个数字都是其自己的后代。 例如,考虑n = 16。自以来,我们可以选择a = 2和。然后b = 82*8 = 16 (a - 1)*(b + 1) + 1 = 1*9 + 1 = 10 这表明10是的除数扭曲16。与a = 2和b = 5,然后我们看到7是的除数扭曲10。因此7是的后代16。 任务 给定一个正整数n,n以递增顺序计算的后代,不能重复。 规则 不允许使用内置运算来计算数字的除数。 完整的程序和函数都将被接受,并且只要它是经过排序且无重复的,就可以返回集合数据类型(如某种类型的集合)。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 1 …

1
公平分享披萨
与朋友共享披萨的困难在于,很难确保每个人都得到相同数量的意大利辣香肠。因此,您的任务是决定如何公平地切片披萨,以便每个人都开心。 方向 编写一个程序,给定圆形比萨饼上意大利辣味香肠的位置列表和要制作的切片数量,输出一个程序,将比萨饼切成的角度列表,以使每个切片上的比萨饼数量相同它。 披萨只有一个馅料:意大利辣香肠。 您的朋友不在乎切片的大小,只是他们没有从任何意大利辣香肠中被骗。 比萨饼是一个以原点为中心的圆(0, 0),半径为1。 意大利辣香肠是圆心,只要输入内容表明它们居中且半径为0.1 将输入作为代表要制作的切片数量的整数,以及代表意大利辣香肠在直角坐标系上的位置的有序对列表。(以任何合理的格式) 输出应该是一个以弧度表示的角度列表,该角度表示比萨的“切口”的位置(在范围内0 <= a < 2pi)。(以任何合理的格式)(精度至少应为+/- 1e-5。) 您可以在切片上放上一部分意大利辣香肠(例如,如果一个比萨饼上有一个意大利辣香肠,并且需要由10个人共享,则将比萨切成10次,全部切成薄片切成意大利辣香肠。但是要确保它是公平的) !) 切成薄片(可能必须)切成多个意大利辣味香肠。 意大利辣味香肠可能会重叠。 例子 输入: 8 people, pepperonis: (0.4, 0.2), (-0.3, 0.1), (-0.022, -0.5), (0.3, -0.32) 可能的有效输出: slices at: 0, 0.46365, 0.68916, 2.81984, 3.14159, 4.66842, 4.86957, 5.46554 这是此示例的可视化(每个人都可以得到一半的意大利辣香肠): 更多示例: Input: 9 people, 1 pepperoni …

11
计算逆XOR
让f是位域(映射函数{0 1}的大小)n+1大小的位域n应用XOR到i日和i+1次位并将结果写入新位域。 例: f("0101") = "111" 非正式计算: 0 XOR 1 = 1 1 XOR 0 = 1 0 XOR 1 = 1 让f_inverse是的反函数f。由于逆不是唯一的,因此f_inverse返回一个有效的解决方案。 输入:位字段为字符串(即"0101111101011")和给定的自然数k 输出:位字段作为字符串,因此如果f_inverse将k时间应用于输入位字段,则字符串包含结果。(即f_inverse(f_inverse(f_inverse(input)))) 获奖标准:人物最少 奖金: -25如果f_inverse不递归/迭代地应用字符if ,则直接计算输出字符串 Testscript: a = "011001" k = 3 def f(a): k = len(a) r = "" for i in xrange(k-1): r += …
13 code-golf 

4
解决战块剧院难题
游戏BattleBlock Theatre有时包含一个谜题,这是Lights Out的广义版本。您有三个相邻的块,每个块表示一个介于1到4之间的水平,包括小节,例如: | |||| || 如果触摸一个块,则该块以及任何相邻的块都会增加其级别(从4换回1)。当所有三个块都显示相同的级别(与哪个级别无关)时,难题就解决了。由于触摸块的顺序无关紧要,因此我们通过触摸每个块的频率来表示一种解决方案。上述输入的最佳解决方案是201: | --> || --> ||| ||| |||| | || ||| || || || --> ||| 游戏可以很容易地概括出任意数量的方块,尽管对于某些数字而言,并非所有配置都可以解决。 挑战 给定一系列的块级别,返回需要触摸每个块以解决难题的频率。例如,上面的示例将作为给出142并可能产生201结果。如果没有解决方案,请返回您选择的一致输出,这与所有可能的解决方案(例如-1,空字符串)是有区别的。 您可以编写函数或程序,通过STDIN,命令行参数或函数参数以任何方便的列表或字符串格式进行输入,并通过返回值或通过打印到STDOUT进行类似输出。 您的代码应在一分钟内在一台合理的机器上返回所有测试用例的正确结果。(这不是一个完全严格的限制,因此,如果您的解决方案花费一分十秒,那很好,但是如果花费三分钟,那不是很好。好的算法可以在几秒钟内轻松解决它们。) 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。 例子 解决方案不是唯一的,因此您可能会得到不同的结果。 Input Output 1 0 11 00 12 No solution 142 201 434 101 222 000 4113 0230 32444 No solution …

2
将字符串与上下文连接
带上下文的字符串 出于此挑战的目的,具有上下文的字符串是字符串的三元组,称为左上下文,数据部分和右上下文。它表示较长字符串的子字符串。我们使用垂直管道|作为分隔符,因此具有上下文的字符串的示例为cod|e-go|lf,其中左侧上下文为cod,数据为e-go,右侧上下文为lf。本实施例代表子串e-go的code-golf。 现在,要使用上下文将两个字符串连接起来,我们使用aa|bcc|dee和cc|de|eee作为示例,进行如下操作。我们按照图中的对齐字符串 a a|b c c|d e e c c|d e|e e e 以便它们的数据部分相邻。在这种情况下,串联的数据部分是数据部分的串联bccde。在这种情况下,左边的上下文是进一步延伸到第一数据部分左边的部分aa。同样,正确的上下文是eee,因此串联是带有context的字符串aa|bccde|eee。对于第二个示例,请考虑a|bb|cd和aabb|cd|,其中第二个单词的权利上下文为空。对齐图是 a|b b|c d a a b b|c d| 第二个单词的左上下文比第一个单词的左上下文延伸得更多。的串联是aa|bbcd|。 但是,等等,有一个陷阱:如果对齐图的字母不匹配,则表示串联不存在!作为一个例子,对图aa|bb|cc和c|c|cIS a a|b b|c c c|c|c 第四列的b和c不一致,因此无法将它们串联在一起。 任务 您的工作是编写一个程序,该程序使用上下文中包含两个字符串的字符串,它们的各部分之间的分隔|符如上所述,如果存在则输出其串联,否则将其串联。“其他”可以是任何值,包括没有输出,只要它不是带上下文的有效字符串,并且在所有情况下都相同。但是,抛出错误是不可接受的。您可以提供STDIN-to-STDOUT程序或函数,也可以接受匿名函数。最小的字节数获胜,并且不允许出现标准漏洞。 测试用例 aa|bcc|dee cc|de|eee -> aa|bccde|eee a|bb|cd aabb|cd| -> aa|bbcd| a|b|cccd aab|cc|c -> aa|bcc|cd a|b|c b||cd -> a|b|cd …
13 code-golf  string 

6
Golfmas 12天
挑战 在圣诞节的12天中的每一天,根据日期输出相应的“圣诞节12天”经文,否则输出“我希望每天都能圣诞节”的合唱。 \n允许使用前导和/或尾随换行符()和尾随空格。您可能没有从任何外部来源阅读。 基本上,您需要做的是读取系统日期并输出“圣诞节12天”的相应经文。 圣诞节的12天 圣诞节的十二天是基督教的节日,从圣诞节(12月25日)开始,到1月5日结束。 例子 如果日期是12月25日(打印出最短/第一节经文): On the first day of Christmas my true love sent to me: a Partridge in a Pear Tree 如果日期是12月31日(打印第七节经文): On the seventh day of Christmas my true love sent to me: 7 Swans a Swimming 6 Geese a Laying 5 Golden Rings …

9
简短的绘图程序
您刚刚邀请了文科专业到您家,您正在告诉他/她 “你知道,我是一个很棒的程序员,我可以做x和y和z ...” 他/他很快就感到无聊,并问您: “如果您真的是一个伟大的程序员,可以编写一个程序让我画图,我只需要使用鼠标在屏幕上画线,并以任何方式选择不同的颜色即可。” 您的代码可能会导入标准库。您的代码可能要求通过键盘选择颜色。 这是代码高尔夫球;最短的代码胜出。 项目符号要点 通过在按住鼠标左键的同时四处移动鼠标来绘制线条。 不需要布雷森汉姆的直线算法,任何内置算法都可以解决问题 如果用户可以通过任何方式更改线的粗细,则可以获得* 0.8的奖励,但这不是强制性的。 我想自己实现线条画应该更好,但是如果您愿意,可以导入一个库,只需在代码描述中说明即可。 最小值为5种不同的颜色(红色,绿色,蓝色,白色,黑色)。如果您随机更改它们,则会得到* 1.2的罚款。您可以根据需要进行更改(按钮和按键都可以)。 最好将它们按在点或徒手画之间进行鼠标绘制(即,就像您在绘画中所做的那样),并为您提供* 0.7的奖励,但任何其他方法都可以:(例如)单击两个点并在这些点之间绘制一条线? 绘图画布必须为600x400 更改颜色应该只更改将来要绘制的线条的颜色。 强制执行“全部清除”命令不是强制性的,但如果您实施该命令,则将获得* 0.9奖励。

3
四色定理
在四色定理的国家不超过四种颜色需要颜色的地图的区域。 挑战 给定一个州边界列表,为每个州ID分配一种颜色,以便没有两个相邻州具有相同的颜色。输出应为CSS样式表,将颜色分配给该州的2个字母的ID代码。这是可以应用于样式表的SVG映射。http://upload.wikimedia.org/wikipedia/commons/3/32/Blank_US_Map.svg 规则 最短代码胜出 可以使用任何州边界列表 只能使用4种颜色。 状态列表可以硬编码 建议:使用CSS fill:属性更改颜色,例如#AL{fill:green} 这是国家边界的清单 AL-FL AL-GA AL-MS AL-TN AR-LA AR-MO AR-MS AR-OK AR-TN AR-TX AZ-CA AZ-CO AZ-NM AZ-NV AZ-UT CA-NV CA-OR CO-KS CO-NE CO-NM CO-OK CO-UT CO-WY CT-MA CT-NY CT-RI DC-MD DC-VA DE-MD DE-NJ DE-PA FL-GA GA-NC GA-SC GA-TN IA-MN IA-MO IA-NE IA-SD …

11
科赫雪花的图形表示
产生科赫雪花 科赫雪花是一个三角形,每个三角形n的每一边中间都添加了另一个等边点:http : //en.wikipedia.org/wiki/Koch_snowflake#Properties 我们已经有一个kolmogrov复杂 科赫雪花的挑战的n=4。新的挑战是绘制n介于1和之间的任何Koch雪花10。 规则 雪花可能未在程序或文件中进行硬编码-它们必须由您的程序生成。 您的程序必须支持n1到10之间的所有大小。 边数必须由用户通过std-in输入。 您必须在屏幕上打印雪花的图形表示。 n等于,1、2、3和4的样本科赫雪花(绿线仅是为了清楚起见,请勿复制它们): 如果出现决胜局,具有最高投票数的程序将获胜(流行比赛)。

2
图上的张力,第二部分:橡皮筋
这是有关“拉紧功能”的两个挑战中的第二个挑战。这是稍微简单的第一部分。 让我们在位置(x 1,y 1)至(x m,y m)上将m钉子钉入板中。将橡皮筋绑在第一个和最后一个上,并在其他钉子周围伸展,使橡皮筋依次穿过所有钉子。请注意,橡皮筋现在描述了二维空间中的分段线性参数化函数(x(t),y(t))。 现在在位置(x 1,y 1)至(x n,y n)处将另外n个钉子钉入板中。如果现在我们除去所有第一个和最后一个钉子(橡胶的末端绑在这两个钉子上)之外的所有m个钉子,橡皮筋将缩短,直到其紧紧缠绕在新钉子上,从而产生另一个分段线性函数。 作为一个例子,取M = 12条初始钉在位置(0,0),(2,-1),(3/2,4/3),(7/2,1/3),(11/2, 16/3),(1、16 / 3),(0、1),(7,-2),(3、4),(8、1),(3,-1),(11、0),并且n = 10个另外的钉子在位置(1、1),(3、1),(4、4),(1、3),(2、2),(5,-1),(5、0 ),(6,2),(7,1),(6,0)。以下三个图显示了上述过程: 对于较大的版本:右键单击->在新选项卡中打开 如果您在可视化时遇到一些困难,这是橡皮筋收紧的动画: 挑战 给定两个“钉子”列表,如果绷紧的橡皮筋从横穿第一个列表中所有钉子的形状开始,则在第二个列表周围绘制绷紧的橡皮筋。 您可以编写程序或函数,并通过STDIN,ARGV或函数参数接受输入。您可以在屏幕上显示结果,也可以将图像保存到文件中。 如果将结果栅格化,则每侧至少需要300像素。最终的橡皮筋和钉子必须至少覆盖图像水平和垂直方向的75%。x和y的长度比例必须相同。您需要在第二组(至少使用3x3像素)中显示钉子,并在字符串中显示至少1像素宽的指甲。您可以包括也可以不包括轴。 颜色是您的选择,但是您至少需要两种可区分的颜色:一种用于背景,一种用于指甲和细绳(尽管这些颜色可能具有不同的颜色)。 您可能会假设第二个列表中的所有钉子都距离橡皮筋的初始形状至少10 -5个单位(这样就不必担心浮点精度了)。 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。 更多例子 这是另外两个示例: {{1, 1}, {3, 3}, {2, 4}, {1, 3}, {4, 0}, {3, -1}, {2, 0}, {4, 2}} {{2, 1}, …

8
行号-实现nl
您的任务是实现一个类似于nlGNU核心实用程序中的命令行工具的程序。 禁止出现标准漏洞。 您不得使用任何内置或外部函数,程序或实用程序来对文件或字符串的行进行编号,例如文件nl本身或=GNU sed中的命令。 规格 输入值 该程序接受文件名作为参数。您的代码不必跨平台。应该使用运行代码的操作系统的文件名格式,即,如果您恰巧在Windows上,则目录分隔符可以为\或/。 您必须能够获取64个输入文件,包括-已指定的文件。如果给出的数目超过64,则仅处理前64个。 在文件名列表中,-代表标准输入。 如果给出了文件名,请按给出的顺序读取文件并连接其内容,并在文件名和末尾之间插入新行。如果您无法读取一个或多个文件名(因为文件不存在或您没有读取权限),请忽略它们。如果指定的所有文件名均无效,则不输出任何内容。 如果未提供文件名,请从标准输入中读取。如果未提供文件名或未提供文件名,则仅从标准输入中读取-。 输出量 程序将输出带有标准行编号的输入作为标准输出(您可以假定输入具有\n,\r\n或\r行尾;请选择对您方便的任何一种,但要指定哪一个): <5 spaces>1<tab><content of line 1 of input> <5 spaces>2<tab><content of line 2 of input> ... <4 spaces>10<tab><content of line 10 of input> ... <3 spaces>100<tab><content of line 100 of input> ... ... 行号分配了6个空格,并在这些字符的末尾插入;其余的变成空格(例如1将有5个前导空格,22将有4个前导空格,...)。如果输入足够长,则最终将在行上用完行号的空间999999。在999999行之后,您不得输出任何内容。 如果输入为空,则不输出任何内容。 退出状态 较低的数字优先:如果遇到错误1和2,则以状态1退出。 如果成功接收到输入,并且状态行成功编号并输出,则以状态0退出。 …

9
在Applescript中打高尔夫球的技巧
您在Applescript中打高尔夫球有哪些秘诀?我正在寻找可以应用于一般至少在某种程度上特定于Applescript的高尔夫问题代码的想法(例如,“删除评论”不是答案)。
13 code-golf  tips 

1
Code-Golf Ascii艺术迷你高尔夫
介绍 让我们玩一些迷你高尔夫球!高尔夫球用a表示,.球洞用a表示O。您想在每个孔上都打一个孔,但是您不擅长推杆。实际上,您拒绝尝试斜放!只能上下左右移动。 您打算通过放置额外的保险杠来作弊\,/因此可以一杆入球。如图所示,球从保险杠上以直角反弹。 记住要打个招呼!告诉我们您的方向。 孔洞 1:第一个孔很容易,直杆!无需在此处放置保险杠。 输入: . O 输出: right . O 2:另一个基本的方法,短时间转。球从保险杠撞入洞中。 输入: . O 输出: left / . O 要么 down . O / 3:有些孔已经保险杠! 输入: . \O 输出: right . \O \/ 要么 right / \ . /\O 4:有些孔太复杂了! 输入: / \ \ / / . …

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.