Questions tagged «code-golf»

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

24
在列表中查找True值的范围
挑战: 编写一个接受布尔值列表并返回True的所有范围的函数或程序。 测试用例: f [F] = [] f [T] = [[0,0]] f [T,T,F,T] = [[0,1],[3,3]] f [F,T,T,F,F,T,T,T] = [[1,2],[5,7]] f [F,T,T,F,F,F,T,T,T,T] = [[1,2],[6,9]] f [T,T,F,F,F,T,T,T,T,T,T,T,T,T,T,F] = [[0,1],[5,14]] f [F,F,T,T,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,T] = [[2,3],[12,19],[33,54],[93,94]] 规则: 您可以选择输入的编码方式,例如列表,数组,字符串等。 必须将输出编码为类似列表的类似列表或显示这样的字符串,因此数组,列表,元组,矩阵,向量等。 布尔值必须被编码为常量,否则可以将T / F进行任何简单的转换为所需的常量 编辑:允许在运行时评估或类似评估。 不要忘记解释如何将输入传递给程序/函数并给出测试用例的输入/输出 转换为所需的输入格式不计在内 不允许出现标准漏洞 如果您的语言具有执行此功能的功能,则不允许 我不会接受我自己的提交 编辑:输出格式是灵活的。如果未打印列表或类似内容,则范围值必须用一个非数字字符分隔,并且也必须分隔范围。 得分: 分数以字节为单位,除非不适合您的语言(例如Piet中的代码) 最低分获胜 输入和输出具有很大的灵活性,但是不允许将T / F替换为可以完成所有工作的功能的解决方案。 …

11
Dyalog APL官方2016年比赛
如果您认为这可能很有趣,但是工作量过多,请考虑参加这个小得多的挑战。 2016年有点有趣(可能还有挫败感!)…… Dyalog的“年度难题”。请享用! 目标 查找Dyalog APL(下载)表达式(允许使用其他语言,请参见下面的“ 资格”),该表达式精确地包含数字2 0 1 6,该数字等于0到100。例如: 20=16 ×2016 2⌊016 2+0+1*6 ... 目的是在每个表达式中使用尽可能少的字符(一个表达式的最小字符数为5 –四位数字2 0 1 6和一个原始函数/运算符)。 规则 每个表达式必须包含数字2 0 1 6(按该顺序),并且不能包含其他数字。预设的常量和变量也不允许。 除了四位数2 0 1 6以外,只能使用内置符号和名称,括号/大括号,空格,高减号和小数点。结果表达式必须是确定性的(即,在重复求值时得出相同的结果)。对于非APL,也可以使用带有名称的功能/操作符;和这里一样的规则。 假定您的语言的所有默认设置。对于Dyalog APL,这意味着⎕ML和⎕IO均为1,并且⎕PP为10。 包括从0到100在内的所有数字的正确表达式的每个条目都将根据这些表达式所使用的字符数(不包括多余空格)(所有101个表达式的最小值505)进行评级。 合格 任何人都可以进入。您可以用任何语言回答,但只有APL回答会被考虑接受。如果您使用APL以外的其他语言,则可以使用代码片段,程序,函数等代替表达式,并且可以打印,将数字保留在可访问的内存位置,或者以其他方式返回结果,只要直接编写代码即可计算为所需的数字,作为您语言的任何标准数值数据类型。 截止日期 2016年11月30日。 奖品 接受您的答案 在Dyalog的2016年名人堂中永生不朽! 提交您的输入 2016年11月30日之后,我将接受最短的答案,并以您的名义将您的答案提交给Dyalog的2016年名人堂。 常问问题 是否允许J(例如37 = ⌈⍟!20J16)? 否:除了四位数字2 0 1 6之外,只能使用内置符号和名称,括号/大括号,空格,高减号和小数点。 输出为字符串可以接受吗? …

1
……墨西哥将为此付出代价!
唐纳德·特朗普对该网站上的人们的工作印象深刻。他看到您帮助Ben Carson所做的工作多么了不起,因此他甚至雇用您建造自己的墙。他认为你很棒。现在他再次需要您的帮助。虽然他成功地修建了自己的隔离墙,但现在他需要墨西哥政府来支付这笔费用。他想每英里收费100万美元,他告诉他们美墨边境长1989英里。但是,他们不确定此数字是否准确,因此他们也希望按比例绘制视觉表示。那就是您要进入的地方。您将使用此地图: 并针对边界上每n(50 <= n <= 500)英里绘制一条25像素长的线,该线垂直于该点的边界斜率。使用地图右侧的比例尺,我确定了100英里〜50像素。我为n = 60绘制了前3行的样本,但这些只是近似值: 笔记: 唯一的输入是n。输出应该是地图图像,其中添加了线条,将其绘制到屏幕上或保存在光栅图像文件中(您可以覆盖原始地图文件)。 您可以使用所需的任何文件名保存空白地图文件。它是JPEG,但可以根据需要将其转换为另一种常见的栅格格式。另外,只要您保持尺寸比例不变,并且线条仍然可以缩放,就可以将图像尺寸最多减少50%。 每条线应垂直于该点的边界斜率。应从该点之前的50英里处开始计算坡度,并在该点之后的50英里处终止计算坡度。 准确性: 每条线的斜率可以有±5°的误差范围 每条线之间的间距的误差范围为±20英里(在常规地图上为10像素)。

25
互补色
给定以#rrggbb十六进制格式输入的颜色,请以相同格式输出其RGB补码。 任意颜色R 1 G 1 B 1的RGB补色R 2 G 2 B 2定义为R 2值为255-R 1,B 2值为255-B 1和G 2值为255-G 1的颜色。 十六进制数字可以是大写(#FFAA20)或小写(#ffaa20)。输入和输出的大小写不必保持一致(因此,您可以使用小写输入,但可以使用大写输出,反之亦然)。 由于这是code-golf,因此以字节为单位的最短代码为准。 测试用例(请注意,由于为程序/函数提供自己的输出应导致原始输入(这是 不合理的),因此测试用例应在两个方向上都起作用: In/Out Out/In ---------------- #ffffff #000000 #abcdef #543210 #badcab #452354 #133742 #ecc8bd #a1b2c3 #5e4d3c #7f7f80 #80807f
26 code-golf 

12
四是魔数
在发布此挑战之前,我没有检查沙盒 -似乎是CᴏɴᴏʀO'Bʀɪᴇɴ提出的挑战。 给定一个整数输入,编写一个打印“四是一个魔术数字”之谜的程序 四是魔数 五是四,四是魔数 六是三,三是五,五是四,四是魔数 十一是六,六是三,三是五,五是四,四是魔数 五百是十一,十一是六,六是三,三是五,五是四,四是魔数 如果您已经知道了谜语,或者太懒了而无法解决它,就急于找出谜语是什么,这里有一个解释 下一个数字是上一个数字中的字母数。因此,例如,五个有四个字母,因此下一个数字是四个。 六个有三个字母,所以下一个数字是3,三个有五个字母,所以下一个数字是5,五个有四个字母,所以下一个数字是4 谜题以4结尾的原因是因为四个有四个字母,四个是四个,四个是四个,四个是四个...(四个是魔幻数字) 测试用例 0 => Zero is four and four is the magic number 1 => One is three and three is five and five is four and four is the magic number 2 => Two is three and three …
26 code-golf  number 

8
用1到N填充NxN网格的行,列和对角线
任务 给定输入N,生成并输出一个NxN网格,其中每一行,每一列和两个对角线都包含数字1到N(或0到N-1,如果更容易)。 输入项 输入是一个正整数N。它代表网格中的列数和行数。对于这个问题,您可以假设N将是一个合理的大小,4 ≤ N ≤ 8或者(1 ≤ N ≤ 8如果您获得以下红利)。 输出量 输出将是N× N网格。在网格中,每一行仅包含数字1到N,每列仅包含数字1到N,长度的两个对角线N(一个从(0,0)to (N-1,N-1)到一个从(0,N-1)to到(N-1, 0))仅包含数字1到N。您可以使用数字0到N−1。对于每种N,都有许多可能的解决方案,您只需要打印找到的第一个即可。您无需在数字之间打印空格。 约束条件 您的代码应能够重复产生的结果N >= 7。也就是说,如果您N = 7每次都能实际运行并从代码中获取解决方案,那么您就很好。就绝对限制而言,您的代码N = 7每次运行都应能够在10分钟内解决(即,如果您依赖随机数,则在最坏的情况下,您的代码仍应在10分钟内完成N = 7) 。 例子 输入: 4 一种可能的输出: 1 2 3 4 3 4 1 2 4 3 2 1 2 1 4 3 输入: 5 …

1
有人被贬低了吗?
开脱是将某人或某物扔出窗户的行为。 — 维基百科 输入项 输入将包括两部分: 平面图和房屋/建筑物内的人。 v><^代表一个人,指向箭头所指的方向。输入将仅包含一个人。 -和|表示墙壁,并#表示一个窗口。 是空的空间。 输入的这一部分可以视为单个字符串,也可以作为数组/列表/等。行。永远不会有任何尾随或前导空格,并且输入将始终是一个矩形。 例: -----###--- | | | ^ | ----------- ≥1的整数表示该人行进的距离(以字符为单位)。 输出量 输出应为 1如果该人最终进入窗口“内部”(即,向前移动输入中指定的距离后,该人位于顶部#)。 2如果此人被剥夺了资格(与a联系,#然后继续进行下去)。 3如果此人撞到了墙壁(碰到-或|。一旦撞到墙壁,该人将停止并且不会继续穿过墙壁)。 0 如果上述条件都不成立(并且该人所做的全部是在空白处旅行)。 假设条件 可以假定以下所有条件都是正确的: 此人将永远不会“超出范围”输入区域。 被贬低后,该人将永远不会与另一个人#或-/ 接触|(因此您不必担心2 and和 1 or 3都为真)。 测试用例 对于以下“平面图”: ----- | | |###| | | | ^ | In Out 1 0 …
26 code-golf  string 

8
将日期转换为xkcd表示法
在关于ISO 8601标准日期格式的 xkcd中, Randall用一种非常奇怪的替代表示法偷偷摸摸地: 大数字是以当前顺序显示在当前日期中的所有数字,小数字是该数字出现的基于1的索引。因此,以上示例表示2013-02-27。 让我们为这种日期定义一个ASCII表示形式。第一行包含索引1到4。第二行包含“大”数字。第三行包含索引5到8。如果在一个插槽中有多个索引,则它们从最小到最大依次列出。如果m单个插槽中最多有索引(即,在同一数字上,并且在同一行中),则每一列应为m+1字符宽度且左对齐: 2 3 1 4 0 1 2 3 7 5 67 8 另请参见伴随挑战,以获得相反的转化。 挑战 给定ISO 8601日期(YYYY-MM-DD),输出相应的xkcd日期表示法。 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行参数或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。 从0000到的任何一年9999都是有效的输入。 允许使用尾随空格,不允许使用前导空格。您可以选择输出一个尾随换行符。 适用标准代码高尔夫球规则。 测试用例 2013-02-27 2 3 1 4 0 1 2 3 7 5 67 8 2015-12-24 2 3 1 4 0 1 2 4 5 …

17
Cheela乘法表
该雕(从书龙的蛋罗伯特L.向前)是生活在中子星表面上的生物。他们的身体平坦而圆形,周长有十二只眼睛,因此他们自然使用12进制编号系统。 在Cheela中,照顾小鱼苗和教育年轻人是老年人的任务。由于需要教年轻的Cheela如何进行乘法运算,因此旧式Cheela可以使用乘法运算表。 您的任务是在base中生成一个12x 12乘法表,12如下所示。大写字母A和B用于分别对应于十进制10 和的数字11。 1 2 3 4 5 6 7 8 9 A B 10 2 4 6 8 A 10 12 14 16 18 1A 20 3 6 9 10 13 16 19 20 23 26 29 30 4 8 10 14 18 20 24 28 30 …

7
生成Brainf *** NOP
有时,在编写脑力激荡的代码时,您会感到需要使其长度超过鼓励调试的时间。您可以通过><在其中放一个来做到这一点,但是那有什么乐趣呢?您将需要更长或更短的NOPey,以使任何人都无法阅读您的代码。 快速入门Brainfuck Brainfuck是UrbanMüller于1993年创建的一种深奥的编程语言,以其极简主义而著称。(维基百科) Brainfuck是一种基于八种命令的语言:+-><,.[]。该代码在图灵机之类的东西上运行:可以在上面更改值的无限磁带。在此挑战中,我们将重点关注前四个: + increment the value at the pointer - decrement the value at the pointer > move the pointer right < move the pointer left 脑干NOP 脑干NOP是一系列脑干角色,当从任何状态执行时,脑筋都不会改变状态。它们由上述四个字符组成。 挑战 面临的挑战是编写一个程序或函数,当执行该程序或函数时,将生成给定长度的随机性NOP。 输入项 您将收到一个非负偶数整数作为输入n。(NOP不可能是奇数n。) 输出量 您将输出一个长度为的随机性NOP n。 规则 NOP的定义:在将程序的输出插入到Brainfuck程序的任何位置时,该程序的行为不得以任何方式改变。换句话说,它不得更改解释器的状态。 请注意,例如+>-<,这是不正确的,因为它更改了两个单元格的值而没有将它们改回来。发布前,请先测试您的解决方案。 另请注意,这+>-<->+<是一个NOP,仅通过删除就不能将其减少为零>< <> +- -+。因此,您不能使用仅将它们彼此插入的算法。 长度的每个有效NOP n必须有非零的机会出现在输出中。但是,分布不必一定是统一的。 讨论中的“脑干”解释器具有无限精确的任意精确细胞带。也就是说,您可以无限地向两个方向移动,并无限地增加/减少每个单元格。 该程序必须在1分钟内在n我的计算机上完成= 100,因此不能生成所有可能的NOP并选择一个。 如果输入的内容无效(非整数,负数,奇数等),则可以执行任何您想做的事情,包括崩溃。 …

3
打高尔夫球自己喝啤酒
是星期五!这意味着该喝啤酒了! 可悲的是,今天我们将打高尔夫球而不是喝啤酒。:( 挑战 输出啤酒并饮用。您采取的饮酒量会改变您的输出。 ps 您的程序应采用一个输入字符串。该字符串只能由串联sip的组成。 如果输入为空字符串,则应输出完整的啤酒杯,包括泡沫。 你喝的越多,啤酒杯就越空。 如果您喝0 ip,则您的啤酒仍然有泡沫。这种泡沫的输出始终是相同的(请参见示例)。 如果喝一口,则应输出啤酒杯,然后输出新行和字符串Yuck, foam.。 如果您喝一口或多杯,啤酒杯中将不再含有泡沫,而应露出玻璃杯的顶部。喝泡沫算一口。 如果您喝了6口或更多,则应输出一个空的啤酒杯,然后输入新行和字符串Burp。 每喝一口,啤酒杯就会变空。啤酒杯的装满量取决于啤酒中气泡的数量°(°)。泡沫后,每次喝一口,应去除一连串的气泡。每行啤酒最多可包含气泡1,最多可包含5气泡。这些气泡的位置应为100%随机。 例子 输入 empty input string, or no input at all 输出 oo o oo oooooooooooo o| ° ° |\ | ° | \ | °° ° |} | | ° ° | / | ° …

30
AGM系列孔1:计算算术-几何平均值
这个问题的灵感来自于总部。 关于系列 这个问题现在是有关AGM方法的系列文章的一部分。本系列的第一篇文章将关于实际计算AGM。您可以像对待其他任何代码高尔夫挑战赛一样对待它,并回答它而不必担心系列赛。但是,在所有挑战中都有排行榜。 什么是算术几何均值 两个数的算术几何均值定义为反复采用算术和几何均值收敛的数。您的任务是在一些n迭代后找到该数字。 澄清说明 您可以a, b, n采用任何合理格式的三个数字。 对于n迭代,取算术和几何平均值a,并b与设置那些a和b。 对于两个数字a和b,算术平均值被定义为(a + b) / 2。 几何平均值定义为√(a * b)。 a并且b应该互相接近。 然后,输出a和b。 您不必担心浮动不精确等问题。 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 测试用例 [0, [24, 6]] -> [24, 6] [1, [24, 6]] -> [15.0, 12.0] [2, [24, 6]] -> [13.5, 13.416407864998739] [5, [24, 6]] -> [13.458171481725616, 13.458171481725616] [10, [100, 50]] …

3
合并100岁生日
我最近将自己以及我的妻子和孩子的年龄相加,并意识到在不久的将来,我们的年龄总和将恰好达到100岁。 挑战 对于由合并的(总计)年龄和出生日期列表组成的输入,请输出所有合并年龄加起来等于给定总数的日期。 输入的合并年龄(以年为单位)将为正整数 输入的出生日期列表将是日期列表(无论哪种格式对您的语言来说都是方便的),日期列表必须包含日,月和年的数字表示形式。自特定纪元以来的天数,该数值不可接受。您可以假设输入日期列表按时间顺序排序。 输出将是单个日期,格式与输入日期相同 就合并年龄而言,一年即被视为365.25天 对于某些输入,将不可能找到所有出生日期之后的日期,如果它们都加起来等于合计年龄。例如,考虑两个相隔20年的出生日期,但我们希望相加10年。在这种情况下,输出将是较早出生日期的10岁生日。换句话说,对于该人的出生日期之前的所有日期,其年龄均为0 输出将是组合年龄加起来至少等于输入年龄的第一个日期 您可以使用内置的日期时间功能 您必须支持可追溯到1970/01/01的日期。 例子 在这里,我以YYYY / MM / DD格式给出所有日期,但是您可以选择任何格式。 Input Output 10 2000/01/01 2010/01/01 100 1975/03/05,1978/07/23,2008/11/12,2012/12/20 2018/11/22 100 1975/03/06,1978/07/23,2008/11/12,2012/12/20 2018/11/23 100 1975/03/09,1978/07/23,2008/11/12,2012/12/20 2018/11/23 100 1975/03/10,1978/07/23,2008/11/12,2012/12/20 2018/11/24 3 1990/08/01,1995/07/02 1993/08/01 50 1975/03/05,1978/07/23,2008/11/12,2012/12/20 2001/11/13 请注意,在最后两个示例中,根据规则5,输出日期位于输入日期的范围内。
26 code-golf  date 

30
计算一个数的除数
介绍 这是一个非常简单的挑战:只需计算一个数的除数即可。以前我们遇到过类似但更复杂的挑战,但我打算将此作为入门级。 挑战 创建一个程序或函数,给定一个严格的正整数N,该程序或函数输出或返回其具有的除数,包括1和N。 输入:一个大于0的整数。您可以假设该数字可以用您的语言的本机数字类型表示。 输出:它具有的正整数除数的数量,包括1和数字本身。 提交内容将以字节计分。尽管您可以使用任何合理的方法来生成字节数,但您可能会发现此网站很方便。 这是代码高尔夫球,因此最低分获胜! 编辑:看来FryAmTheEggman的5个字节的Pyth答案是赢家!不过,请随时提交新答案。如果您能得到更短的答案,我将更改接受的答案。 测试用例 ndiv(1) -> 1 ndiv(2) -> 2 ndiv(12) -> 6 ndiv(30) -> 8 ndiv(60) -> 12 ndiv(97) -> 2 ndiv(100) -> 9 排行榜 这是一个堆栈片段,用于按语言生成常规排行榜和获胜者概述。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 # Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,则可以通过打败旧分数来保持标题。例如: # Ruby, <s>104</s> <s>101</s> 96 bytes 如果要在标题中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志的惩罚),请确保实际分数是标题中的最后一个数字: # Perl, 43 …

5
旅行的O
世界是五乘五的细胞阵列。它包裹在所有侧面。可以像... XXXXX XXXXX XXOXX XXXXX XXXXX 您是O。您喜欢环游世界,并且遵循以下规则(以C为当天): 在黄金时期,您会怀旧。返回到昨天开始的地方。 在奇怪的日子里,你会想家。如果可能,将水平步移到离家更近的地方,如果可能,将水平步移到离家近的地方。忽略世界包装是为了确定紧密度。 在偶数天,您都会感到冒险。向南移动C / 2步。 在平常的日子里,您会感到冒险。移到东墙。 在斐波那契的日子里,世界向南扩展了一排。 在三角天,世界向东扩展一列。 如果要同时应用上述两个或多个规则,请按照列出的顺序应用它们。例如,在一个奇特的黄金日,首先返回到昨天开始的地方,然后再离家更近一步。 您生活在(初始)世界的中心,即位置(2,2),从西北角零索引开始。从第一天开始您的旅程。 输入项 一个整数N。 输出量 您的X和Y坐标在第N天,从西北角零索引,以一个空格分隔。 测试用例及解释 给定输入3,正确的输出为: 2 3 我们可以一次完成这一天。从第1天开始,我们需要执行以下操作: 奇数,正方形,斐波那契和三角形 素数,偶数和斐波那契 素数,奇数,斐波那契和三角形 视觉形式: 第1天第2天第3天 XXXXX XXXXXX XXXXXX XXXXXXX XXXXX XXXXXX XXXXXX XXXXXXX XXOXX-> XXXXOX-> XXXXXX-> XXXOXXX XXXXX XXXXXX XXOXXX XXXXXXX XXXXX XXXXXX XXXXXX …
26 code-golf  grid 

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.