Questions tagged «code-golf»

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

2
找到针尖的干草堆
要想在大海捞针中寻找针头,您需要找到最大的连续干草堆,其中仅 包含一根 针头。请注意,您不能连接对角线上的单元格,只能连接左/右/上/下。 输入值 'N'(针)和'#'(干草)字符的数组(或您选择的许多用户输入行)。输入仅包含这两个字符,并且每个字符必须至少包含一个。例如: N#N#N #NN## ###N# N##N# 输出量 有效的最大干草堆的大小。对于我们的示例,我们将输出11(有11根干草和一根针)。 # # ## ###N# ## # 这是代码高尔夫球,因此最短的代码获胜。适用标准漏洞限制。 测试用例 左侧输入,右侧可能有最大干草堆 情况1:4 N## ## NN# # #NN N #N# # 情况2:7 ### ### N#N # NNN N ### ### 情况3:10 N###N ### #N#N# #N# #N#N# # # N###N ### 情况4:10 N#N#N …

12
计算物体的体积
您可以根据一组给定的尺寸确定对象的体积: 球体的体积可以使用一个数字确定,半径(r) 圆柱体的体积可以使用两个数字确定,即半径(r)和高度(h) 可以使用三个数字(长(l),宽(w)和高(h))确定盒子的体积 可以使用四个数字(边长(a, b, c)和高度(h))确定不规则三角形棱锥的体积。 面临的挑战是在以下输入之一的情况下确定对象的体积: 单个数字(r)或(r, 0, 0, 0)=>V = 4/3*pi*r^3 两个数字(r, h)或(r, h, 0, 0)=>V = pi*r^2*h 三个数字(l, w, h)或(l, w, h, 0)=>V = l*w*h 四个数字(a, b, c, h)=> V = (1/3)*A*h,A由Heron公式给出:A = 1/4*sqrt((a+b+c)*(-a+b+c)*(a-b+c)*(a+b-c)) 规则和说明: 输入可以是整数和/或小数 您可以假设所有输入尺寸均为正 如果Pi是硬编码的,则必须精确到:3.14159。 输出必须至少包含6个有效数字,但可以用较少的数字准确表示的数字除外。您可以将输出3/4为0.75,但4/3必须为1.33333(可以输入更多数字) 如何舍入不正确的值是可选的 无效输入的行为未定义 I / O的标准规则。输入可以是列表或单独的参数 这是代码高尔夫,所以最短的解决方案以字节为单位。 测试用例: …

15
合并两个字符串
介绍 假设S 1 = a...b和S 2 = ..c..。如果我们将它们放在彼此之上,则会得到: a...b ..c.. 我们合并两个字符串,以.液体字符(可以重叠)作为。我们得到这个: a.c.b 如果其中一个字符串比另一个字符串长,我们将应用相同的算法: a.....b ..c.. becomes: a.c...b 和 a.....b ..c....... becomes: a.c...b... 如果两个字符冲突,我们只使用底部字符,例如 a..b ...c becomes: a..c 任务 给定两个非空字符串,输出合并的字符串。注意,您可以假定输入仅包含句点和小写字母(如果更方便,则输入大写字母)。 测试用例 Input Output a....b ..c... a.c..b aaaaaa bbbbbb bbbbbb ab.ab. b.b.b. bbbab. a.......b c c.......b 这是代码高尔夫球,因此以最少的字节提交为准!
18 code-golf  string 

1
转置词云
背景 我想做一个漂亮的词云,像这样: these are words floating 我计算了(x,y)每个单词的第一个字母的-coordinates,将它们插入到我的词云生成器中,然后让它完成工作。但是,我不小心使用了(y,x)-coordinates,因此结果如下所示: these floating words are 由于我懒得重新计算坐标,因此我需要您为我移调“ cloud”一词。 输入值 您的输入是一个由小写ASCII字母和空格组成的矩形网格。这意味着每行都用空格填充以具有相同的长度。输入可以作为多行字符串或字符串数​​组。 甲字是字母一个水平段,其位置是在(x,y)其最左边的字母,网格之中的左上角的坐标- (0,0)。总会有至少一个单词,并且没有尾随空格或空格。但是,可能会出现前导的行或列的空间。 输出量 您的输出是另一个矩形的字符网格,通过将每个单词随位置移动(x,y)到位置而获得(y,x)。您的输出不得包含多余的尾随行或空格列。前导行和列必须保留,并且输出必须是矩形。 您可以假定此转换不会创建重叠的单词,也不会将多个单词合并为一个单词。这意味着在输出上运行程序应产生原始输入。 规则和计分 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 为了清楚起见(并且因为Stack Exchange不喜欢仅使用空格的行),所以每一行均以竖线字符结尾|。 这些不是实际输入或输出的一部分,您应该删除它们。再次注意,在每个输出上运行程序也应产生相应的输入。 Input: oneword| Output: oneword| Input: spaces| Output: | | spaces| Input: | row| Output: row| Input: these are| words | | floating | Output: …
18 code-golf  string  grid 

1
沙堆整数
挑战 您将得到一个正整数n作为输入。输出应为基于以下指定规则的金字塔形沙堆: 每个整数都从相同的初始起点“下降”,就像沙子掉落成圆锥形一样。 如果能够,大于比直接在其下方的数字大的数字将落在右侧。 如果可能,小于直接在其下面的数字的数字将落在左侧。 当它碰到沙堆时,等于其正下方数字的数字将保留在原位。 如果数字可以分别向下移动和向左/向右移动,则它们可以左右移动。也就是说,如果根据方向的不同,在左下方和左/右方向已经有一个数字,则当前下降的数字不会移动。 一个数字将继续从沙堆中跌落,直到无法将其移动到下一个位置或撞到地板上为止。 笔记 初始比较检查仅适用于遇到的第一个整数,不适用于每次连续遇到的整数,因为它在沙堆中翻滚。 尾随空格可以,但尾随新行不行。 除需要保留沙堆结构的地方外,没有任何前导空间或新行。 您可以编写完整的程序或功能。 您可能会假设输入将仅包含某些组合[0-9]。 这是代码高尔夫,最短的代码(以字节为单位)将被3月的Ides标记为赢家 例子 1个 1 12345 35 124 54321 13 245 555444333222111 2 2 2 135 1345 13445 111222333444555 4 4 4 135 1235 12235 7313623030872935273465247457435345345350 3 3 3 3 34 355 3644 239475 201277445 020373685575
18 code-golf  math  number 

2
连锁词填字游戏风格
挑战 给定单词列表,["Programming", "Puzzles", "Code", "Golf"]输出单词crossword-style: 编程 ü ž ž l 电极 ls F 算法 您必须按给定顺序处理列表。 单词从水平开始以交替的方向打印。 这两个单词在第一个单词的第一个字母处相交,第二个单词也存在该单词。如果该字母在第二个单词中多次出现,请选择第一个。 示例: ["no", "on"]变为: o n o 而不是 n o n 补充说明 列表中的相邻单词将至少包含一个普通字母。["Hi", "there"]不是有效的输入。 言语永远不会碰撞。在第一个可能的交点处将始终有足够的空间来打印单词。["Hello", "there", "end", "hello"]不是有效的输入 匹配区分大小写。 单词可以向左扩展到顶部。 水平单词的字母必须用一个空格分隔。 输入列表将至少包含两个单词。 所有单词都将与正则表达式匹配: [A-Za-z]+ 您可以根据需要打印任意数量的尾随空格或换行符,只要单词已正确链接。 另一方面,您可能无法添加其他前导空格。最左边浮动的单词的前导空格为零,其他行的前导空格太多,所有行都正确排列。 您的程序必须能够处理任意数量的单词 规则 允许功能或完整程序。 输入/输出的默认规则。 有标准漏洞。 这是代码高尔夫球,因此最低字节数获胜。Tiebreaker是较早提交的内容。 测试用例 输入列表在第一行,输出从第二行开始。 …

3
产生惰性微波输入
相关:对我的微波炉编程并生成惰性值。 我的同事是如此懒惰,以至于在编程微波炉时他甚至都不想动手指。(实际上是这样!) 帮助他找到最接近他想要的时间的微波输入,但是所有数字都相同。如果两个输入导致与所需时间的时差相同,请选择一个数字少的输入。如果两者的位数相同,则选择较小的数字-这样他就不必等待那么长时间。 输入是完美主义者将输入的整数,例如4304分钟30秒,100而60每一个都是1分钟。它将大于0且不超过9999。 输出必须为整数,例如4444分44秒和5555秒。 如果总时间少于1分钟40秒,则输入和输出都只能在几秒钟内(无分钟)。 这是code-golf,因此您的代码必须尽可能短。 测试用例: 30 → 33 60 → 55 70 → 111 90 → 88 100 → 55 101 → 66 120 → 77 130 → 88 200 → 99 201 → 222 500 → 444 700 → 666 1000 → 888 1055 → 999 …
18 code-golf  number  date 

4
单损整数:缺少单个元素的串联序列
我定义了一种组合序列的方法,该方法意味着将序列中的每个数字连接为一个字符串,然后将结果设为整数。 [1, 2, 3] -> 123 对于每个至少包含3个连续整数的有限序列,该序列中恰好缺少一个元素,并且该丢失的元素可能不是序列中的第一个或最后一个元素,请输出合并后的序列产生的整数。我将其称为“单个有损整数”。 [1, 2, 3] -> {1, 3} (missing an element) -> 13 这个单损整数序列是以下子序列(分区?)的并集: 第一个子序列{n, n+2}是A032607。 {n, n+2} -> 13, 24, 35, 46, 57, 68, 79, 810, 911, 1012, ... {n, n+1, n+3} -> 124, 235, 346, ... {n, n+2, n+3} -> 134, 245, 356, …

6
扩展速记递增整数序列
给定以简写递增整数序列格式输入的数字列表,请完整输出该序列。 速记递增整数序列格式的工作原理是找到每个数字n ,其位数比前面的数字m少。以d为n中的位数,将m的最后d位替换为n的所有数字 。这是一个示例输入: 123 45 6 7 89 200 应用替换规则,我们首先将45变成145,因为45 <123: 123 145 6 7 89 200 重复应用相同的规则,将变为: 123 145 146 7 89 200 123 145 146 147 89 200 123 145 146 147 189 200 现在对序列进行了排序(没有适用规则的数字),因此这是最终输出。 您可能会认为 尽可能使用速记符号。例如,输入将为 12 3,永不12 13。 数字永远不会减少,而保持相同的数字位数。例如,输入永远不会是333 222。 应用简写规则将永远不会导致该数字仍然小于序列中的前一个数字。例如,输入永远不会是 123 12。 数字将始终为正整数,并且永远不包含前导0(如果使用字符串格式)。 完整的扩展序列将永远不会包含重复的数字。(但是,速记顺序可能;例如10 …
18 code-golf 

5
用字母填充孔
有时候,当我无聊时,我会拿一些文字并在字母中填上“空洞”。但是,填补漏洞不是您最无聊的事情吗?我认为我们应该使它自动化,以便可以更好地利用我们的时间。 适用标准代码高尔夫球规则。 输入值 一个字符串,包含字母数字字符(az,AZ,0-9)和空格的序列。 输出量 图像包含渲染的字符串,并填充了孔。您可以使用任何人类可读的字体,只要它仍然需要填补空白即可。您可以将图像保存到文件i.png(PNG格式),也可以只显示图像。 图片属性: 黑色文字 白色或透明背景 填充: 图片的尺寸最大为文字尺寸的两倍 填充应与背景颜色相同,白色或透明 例 输入: Example text 输出:

26
输出变戏法者序列
的杂耍序列被描述如下。从输入a 1开始,下一项由递归关系定义 该序列在达到1时终止,因为所有后续项将为1。 任务 给定一个n大于或等于2 的输入,编写一个程序/函数/生成器/等。输出/返回相应的变戏法者序列。输出可以是任何合理的形式。您不得使用用于计算变戏法者序列的内置程序或任何直接产生结果的内置程序。您可以假设序列以结尾1。 测试用例 Input: output 2: 2, 1 3: 3, 5, 11, 36, 6, 2, 1 4: 4, 2, 1 5: 5, 11, 36, 6, 2, 1 这是代码高尔夫球。以字节为单位的最短代码获胜。

13
模制ASCII艺术
系统会为您提供一个不包含换行符的可打印ASCII字符串,以及一个包含空格()和哈希(#)的多行“ mold” 。 您必须在字符串中一个接一个地输入字符,并使用字符串中的字符按从左到右,从上到下的顺序替换哈希。如果字符串太短而无法填充模具,则停止输出;如果字符串太长,则截断字符串以准确填充模具。 示例字符串/模具(字符串太长,被截断): Loremipsumdolorsitamet,consecteturadipiscingelit.Namsuscipitmagnanoneratgravidacondimentum.Vestibulumnecnisllorem.Fuscemolestieviverranibh,eueleifendnislplaceratnon.Namblanditturpislacus,vitaemolestielacusimperdietquis.Nullapulvinar,exquissollicitudinfacilisis,eratnullavolutpatlectus,etluctusenimvelitegetex.Inhachabitasseplateadictumst.Donecinterdumnullalacinia,sodalesloremin,eleifendturpis.Pellentesqueanisimi.Aeneannonlobortisdiam,quisaliquetquam.Aeneanaugueipsum,imperdietsedaliquetnon,volutpategetsapien.Nullampharetranullaquispretiumornare.Aliquamfermentumvestibulummassavitaevehicula. ########################################################### ##### ############## ###### ###### ###################### ##### ## ###### # ##### ###### ######## ###### ###### # # #### #### ##### ###### ####### ###### ##### ###### ### ### ##### ###### ####### ####### ##### ###### ##### ### ########### ###### ####### ### ###### ###### ###### ### ########## …

10
下一个公众假期
澳大利亚人喜欢公共假期和饮酒。昨天,1月26日是澳大利亚国庆日,这是一个公共假期。我很高兴昨天没上班,并渴望知道下一次我的公共假期!不幸的是,我喝太多了,我自己也无法解决。 编写一个程序,该程序将采用澳大利亚日期/时间表示法(dd / mm)的日期作为输入,并输出直到下一个公共假日的天数。因为我是昆士兰(QLD)居民,所以我只对影响昆士兰人的公共假期感兴趣: 25/03 | 耶稣受难日 26/03 | 复活节星期六 28/03 | 复活节星期一 25/04 | 安扎克纪念日 02/05 | 劳动节 03/10 | 女王生日 25/12 | 圣诞节 26/12 | 节 礼日27/12 | 圣诞节假期 请注意网站上的以下内容: 圣诞节假期 当元旦,圣诞节或节礼日为周末时,将添加一个额外的公共假日。 因为圣诞节在星期天,所以有一个额外的公共假期。圣诞节仍然是公众假期。 因为我是早起的人,所以您应该将当前日期包括在内(因为这是我将在下一个公共假期检查程序的最可能的时间)。也就是说,如果输入了公众假期的日期,则输出应为0; 如果输入公共假期的前一天,则输出为1。 我只对从现在(27/01)到年底的日期感兴趣。您需要考虑的最终日期是31/12,这是您的输出结果1(元旦)。 禁止出现标准漏洞。 输入值 输入将始终为5个字符:4个字母,以连字符-或斜杠分隔/ 输入的日期只能是27/01到31/12之间的日期 输出量 直到下一个澳大利亚昆士兰州公众假期的天数,包括输入日期:应为0和之间的数字153(最长的间隔) 没有新行或错误 例子 01-05 = 1 02-05 …
18 code-golf  date 

3
评估滑手
介绍 Skat是一款传统的德式纸牌游戏,可容纳3位玩家。副牌由32张牌组成:王牌,王牌,王后,杰克,10套,9套,8套,7套所有4套服(俱乐部,黑桃,心,钻石)。 在每个回合中,有一个玩家独奏,而另外两个则与他对抗。在回合开始时,每位玩家被发10张牌,剩下的2张牌称为skat,并面朝下放在中间。独奏者由投标阶段确定。这是您在此挑战中必须处理的游戏部分,有关此内容的更多信息,请参见下文。 赢得竞标阶段的玩家将成为独占玩家。他拿起小号,然后放下两张牌(可能是相同的,另一支球队不知道),拿下王牌,然后回合开始。 一轮包括十个技巧。赢得花样的玩家将领导下一张,直到玩完所有纸牌为止。我不会在这里解释这些规则,但是您应该知道拥有很多王牌是很好的。如果您想了解规则,请查看我在本文开头链接的Wikipedia文章,但对于本挑战而言并不需要。 挑战 您想教您的两个儿子如何打skat。这些规则并不难,因此很快就会被采纳。唯一给他们带来困难的是出价,特别是计算他们手牌的游戏价值。因此,您决定编写一个小程序,输出给定当前手牌可以出价的最大游戏值。 计算游戏价值 每只手都有一定的游戏价值。它由您所拥有的连续千斤顶的数量和您要选为王牌的西装决定。让我们从第一个因素开始吧! 杰克因素 千斤顶总是王牌,他们击败其他所有王牌。四个千斤顶之间的强度顺序为: 俱乐部杰克(最高) 黑桃杰克 杰克之心 钻石杰克(最低) 在进一步的说明中,我将使用此处分配给他们的编号来引用它们。 您还记得从您手中的Jacks获得的某种因素是游戏价值的一部分吗?大!这是您的获取方式: 该千斤顶系数是依次排列的最高千斤顶数(请参阅上面的顺序),再加上1。因此,如果您拥有全部4个千斤顶,则为4 +1 =5。如果只有前2个千斤顶,则为2 +1 = 3。 另外,为了使事情更复杂一点,杰克因数也可以是您所缺少的按顺序排列的最高杰克数加1。因此,如果您缺少第一个杰克,则为1 +1 = 2。缺少他的前3个,即3 + 1 =4。下面是使用上面的编号的示例: [1, 4] -> 1 + 1 = 2 [1, 2, 4] -> 2 + 1 = 3 [2, 3, 4] …

4
一周中压缩的天数
输入星期几列表,则输出列表中最短的排序表示形式。 输入的格式是由一个或多个双字符子串的字符串Su(星期日), Mo(星期一), Tu(等), ,We,Th, Fr和Sa。输入不一定必须以排序的顺序给出。 要将输入转换为输出格式, 从星期天开始按星期几对输入进行排序(例如ThMoSaSuFrTuWe-> SuMoTuWeThFrSa)。 如果不引起歧义,请将缩写词减少到一个字母。例如,之所以SuMoTuWe成为,SMTW是因为第一个S不可能在星期六,因为这样会使输出未排序(与T相同)。但是,ThFrSa应该成为ThFS,因为星期二和星期四都在星期五之前,并将其减小以TFS产生歧义。 如果输出为now MTWTF,则D改为输出(代表“ 工作日 s”)。同样,SS应该成为E一周结束。最后, SMTWTFS应该成为A对所有天。 输入和输出都必须是单个字符串。 由于这是code-golf,因此以字节为单位的最短代码为准。 测试用例: In Out | In Out -----------------------|-------------------- SuTu STu | SuTuWe STW SuTuSa STuS | SuWeTh SWT TuThSa TTS | TuThSu STT Su Su | Sa Sa WeTh WT | FrTh ThF WeTu …

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.