Questions tagged «code-golf»

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

3
将样本转换为索引
我们将球放入固定数量的垃圾箱中。这些垃圾箱开始为空。 Empty bin (a=4): 0 0 0 0 然后我们一一将球加到垃圾箱中。 0 0 0 1 or 0 0 1 0 or 0 1 0 0 or 1 0 0 0 我们需要一种快速的方法来循环遍历垃圾箱的所有可能状态,没有重复且没有任何遗漏,并且我们不想列举所有可能的垃圾箱。因此,我们改为为每个bin配置分配一个索引。 我们通过以特定方式对可能的配置进行排序来分配索引: 按总和升序排序:因此,首先0 0 0 0添加可能的配置,然后添加1个球,然后添加2个,依此类推。 然后,从第一个容器到最后一个容器,以升序对每个和进行排序: 0 0 0 2 0 0 1 1 0 0 2 0 0 1 0 …

11
负阶整数挑战,但这是黄金时间!
我在谈论这个问题,如果您有点困惑,请看一下。 主要任务 您的任务是按降序输出级联整数,但每次击中时都增加最大整数1 (对于此问题,1将被视为质数)。尽管这听起来与第一个问题没有什么不同,但棘手的是:所有输出的数字可能只是质数。将这些字符串串在一起,没有空格或换行符。您的输入也将是质数。 例: 1 21 321 5321 75321 1175321 Valid output: 1213215321753211175321 输入值 您的代码只能输入一个:要打印的最高质数。此输入可以来自任何地方(图形,STDIN)。您可以确保输入的是质数。 输出量 您将必须输出结果编号。您可以通过递减计数来获得该数字,仅当其为质数时才计算该数字,然后将所有结果连接到一个数字上。最后一个数字“行”(例如7, 5, 3, 2, 1)必须完整打印。只要可读,输出就可以是任何东西(数字,字符串,图形)。适用于检查测试用例的相同Regex模式: ^(\D*(\d)+\D*|)$ 如果您的输出与此模式不匹配,则您的代码无效。 规则 除非您希望/需要输入,否则请确保输入是素数,不包括错误处理。 输出可能只是一个全连接的数字,因此不会被任何东西分割,甚至不会换行。 您的算法不应检查N出现的第一个实例(例如17in 1175321),而应检查的第一个实例N作为实际数字。 确保您的输入是肯定的,除非您需要/不要添加处理。 测试用例 Input: -2, 0 Output: Any, or none (number isn't positive) Input: 9 Output: Any, or none (number isn't prime) …

8
给定目标日期和星期几,找到最近的日期
查找给定星期几中与TargetDate最接近的日期。 例如,给定日期20161219和星期几Friday (6),答案为20161216。 另一个例子,给定日期20161219为星期几Wednesday (4),答案为20161221。 最后一个例子,给定日期20161219为星期几Monday (2),答案为20161219。 规则: 输入和输出的日期格式必须匹配。在示例中,我使用yyyymmdd,但是您可以使用任何格式,只要年份(至少两位数),月份和月份中的“可读”即可。 星期几以整数形式输入。在我的示例中,星期日是星期几,因此它是星期几1。您可以使用“星期几”中的任何编号,只要您在与示例不同的地方注明即可。 必须容纳1970年到2030年。 允许使用通用语言的日期工具和库,但对那些选择不使用它们的人则赋予了信誉。 最少的字节数获胜。
12 code-golf  date 

4
帮我解开这些电线!
我的电线都纠结了! 电线缠在一起不是很烦吗?好吧,这只是发生在我身上,所以我想帮助我解开他们!为了方便起见,我已将所有设备与设备断开连接,但它们仍连接到电源插座。您的挑战是弄清楚如何解开它们! 输入值 输入将包含空格,管道和Xs(两种情况)。输入将如下所示: | | | | X | | | | x | X | | | | | 大写字母X表示左导线与右导线相交,小写字母x表示相反。第一行和最后一行将始终为| | | |...。您可以将输入作为逗号分隔的字符串,字符串数组等。格式并不严格,只要它有意义并且不包含任何其他信息即可。 输出量 对于这个挑战,我不仅需要知道需要多长时间,而且还需要确切地知道该怎么做。因此,输出一个整数对的列表,其中的字符R或L不区分大小写,表示要解开哪两条线以及哪种方式(R表示从右到左,反之亦然)。您需要告诉我哪种方式可以穿越他们;我自己不知道这一点。只要您以正确的顺序输出所有整数对+字符并且不输出任何多余的废话(括号,逗号等都可以),输出也非常灵活。导线可以为零或一索引,但索引必须从左侧开始。请注意,您必须从底部而不是顶部解开角度。输出样式必须一致,如果不明显,请指定输出方式。字符的大小写不一致 样本输出 对于上面的示例输入,输出将类似于: 2 3 R 3 4 L 1 2 R 这里的输出格式是用换行符分隔的值列表。这是1索引的。 进一步的规格 X和x沿任一方向垂直堆叠在一起是有效的。由于我很懒,所以我不想不必要地切换电线,因此在这种情况下不要输出任何内容。如果发现该问题,我将轻轻拉动电线使其伸直。 将多个X和x垂直堆叠也是有效的,并且只要两条导线都没有参与其他交叉,我就不需要任何额外的移动(因为我很懒)。因此,如果字符X X x X x x显示在没有任何其他交叉的列中,则输出应仍为空白! 如果不清楚,则R消除X,L消除x。 同一行中可能有两个导线交叉,在这种情况下,这两个交换的顺序无关紧要。您将永远不会得到类似的东西| X …
12 code-golf  string 

1
分组这些单元格!
该挑战基于游戏Layerz。 给定,在stdin上或作为函数参数,单元格的2D矩形数组,其中每个单元格包含一个空格(可以选择使用0代替空格,而不会受到任何惩罚),1、2、3或4 ; 找到一种方法将其划分为有效区域(如下所述),以使每个非空白单元格仅包含一个区域。然后,以任何合理的格式输出找到的解决方案。如果没有解决方案,则要么停止而不产生输出,要么输出一个假值,然后停止。 以下任何内容均构成有效区域: 包含1的单个单元格 包含2个且恰好是其非空白正交邻居之一的像元 包含3个和正好两个非空白正交邻居的像元 包含4个且恰好是其三个非空白正交邻居的像元 这是code-golf,因此以字节为单位的最短有效答案为准。 一些测试用例: 1.一个相当琐碎的: 这是解决方案,每个区域使用不同的颜色: 2.一个更有趣的 这是一个以上的解决方案,但这是其中之一: 3.较小的一个,包含空格,没有任何解决方案(取决于您是使用二进制之一来“捕获”这三个,还是使用三个来获取两者中的两个,要么留下一个一对不相邻的(因此不可分组的)对或单独一个对): 由于此网格没有解决方案,因此在指定该网格的情况下,您的程序应暂停而不产生任何输出。 4.这个(顶部2个向左移动一个单元格)确实有一个解决方案: 解: (右下角的2用于“捕获” 3) 5.因为我们需要一个包含四个方面的测试用例: 一种解决方案:

5
崩溃的艺术
挑战 给定一个可打印的ascii字符的矩形网格作为字符串或通过标准输入,编写一个将非空格字符折叠为底部的函数或程序。 规则: 输出具有与输入相同的尺寸和字符。 在非空格字符(row a,column b)不能有空格字符' '的(a-1, b),(a-1,b-1)或者(a-1,b+1),当行从最底层向上编号。结果是所有垂直桩都应向侧面倒塌。 非空格字符可以在大多数(initial height - final height)位置向左或向右移动(见图1)。 您可以假定图片有足够的空间折叠而字符不会掉出屏幕。 图1:分别@#$显示为的字符的最终位置x,y,z。 .............. ...@.......... ..xxx......... .xxxxx...#.... xxxxxxx.yyy.$. 字符折叠的顺序可以自由选择。尾随空格不行,但尾随换行符是可以的。 这是代码高尔夫球,因此最短答案以字节为单位! 例 (__) (oo) /------\/ / | || * /\---/\ ~~ ~~ ..."Have you mooed today?"... 一种可能的输出: --(_ /----|/|(o_) /|/~\---~\\/o) ..."Have*you~mooed~today?"...

1
我想看着你渴死
您是在两个城镇之间穿越沙漠的旅行者。您不能携带足够的水不停地穿越。这是经典拼图的变体。 规则 沙漠看起来像这样:一个WxH网格,其中大部分是空白空间。标S有空格的地方是您开始的地方,E是您要结束的地方,一个标有数字N的正方形容纳N单位水。标有.保持零水的方块。 ..................................... ........S............................ ..................................... .........7........................... ..................................... .......................3............. .....5............................... ................................2.... ..................................... ..................................... ..................................... ...............................E..... ..................................... ....................7................ ..................................... ..................................... 您以5单位水开始于S。 您最多可以携带5单位水。 每转你 向上,向下,向左或向右移动一个方块, 消耗1单位水, 拿起或放下一定数量的水。 这样会标出一个转弯:(direction)(+|-)(units of water),+表示您正在拿水,-正在放水。 示例变为: D+0 Move Down R+0 Move Right D+2 Move Down, pick up two units of water. U-1 Move Up, drop one unit …
12 code-golf  game  search 

1
证明2 + 2 = 2 * 2(和类似的)
输出此类陈述的完整正式形式,例如1+2=3,2+2=2*(1+1)等。 介入 如果您知道Peano Arithmetic,则可以跳过本节。 这是我们定义自然数的方法: (Axiom 1) 0 is a number (Axiom 2) If `x` is a number, the `S(x)`, the successor of `x`, is a number. 因此,例如S(S(S(0)))是一个数字。 您可以在代码中使用任何等效的表示形式。例如,所有这些都是有效的: 0 "" 0 () ! 1 "#" S(0) (()) !' 2 "##" S(S(0)) ((())) !'' 3 "###" S(S(S(0))) (((()))) !''' ... …

17
生成/ *行号注释* /
您的任务是编写一个程序(或函数),该程序将字符串作为输入并将文本追加到满足以下规则的每一行的开头: 附加的文本必须包含行号。您可以使用基于0或1的索引。 文字必须是您所用语言的注释。注释定义为语法上有效的一段代码,不更改程序状态。删除注释不应更改程序。 注释的末尾只能包含换行符。 您不必为仅包含空格和注释的行添加行号。 技术指标 您可以假定输入将是您所用语言的有效程序。 在缩进敏感的语言(如Python)中,您可以在所有缩进之后放置行号注释。您可以选择制表符或空格作为缩进字符,但必须在帖子中指定。 您可以假设代码中的每个语句最多占用1行的全部内容;即没有多行字符串或反斜杠继续。 测试用例 蟒蛇: #0 a = int(input()) #1 while a: #2 print(a) C :(老实说,我对此编译感到惊讶) /*0 */#include <stdio.h> /*1 */int main() /*2 */{ /*3 */ char c; /*4 */ c = getchar(); /*5 */ do /*6 */ { /*7 */ putchar(c); /*8 */ …

9
多边形数!
介绍 在数学中,多边形数是表示为以规则多边形形状排列的点或小卵石的数字。点被认为是alpha(单位)。这些是二维图形数字的一种类型。 例如,数字10可以排列成三角形: * ** *** **** 但是不能将10布置成正方形。另一方面,数字9可以是: *** *** *** 一些数字(例如36)既可以布置为正方形,也可以布置为三角形: ****** * ****** ** ****** *** ****** **** ****** ***** ****** ****** 按照惯例,1是任何数量的边的第一个多边形。将多边形放大到下一个尺寸的规则是将两个相邻的臂延伸一个点,然后在这些点之间添加所需的额外边。在下图中,每个额外的层都显示为红色。 三角数: 平方数: 尽管点不再像上面那样形成完全规则的晶格,但也可以根据此规则构造边数更多的多边形,例如五边形和六边形。 五角数字: 六角数: 资料来源:维基百科 你的任务 给定正整数N(1 <= N <= 1000),则打印每种类型的多边形N都是从三角数开始,直至包括余角(20角)数。 例如,数字10是一个三角数和一个十进制数,因此输出应类似于(您可以选择自己的输出格式,但看起来应该像这样): 3 10 测试用例 1 -> 3 4 5 6 7 8 9 …

9
绘制希尔伯特曲线
希尔伯特曲线是一种空间填充曲线,它基本上将一条线映射到一个平面。线中的每个点仅对应于平面中的一个点,而平面中的每个点仅对应于线上的一个点。显示的是希尔伯特曲线的迭代0到4: 迭代0到4: 该任务的目标:如上所述,编写绘制希尔伯特曲线第四次迭代的代码。您的代码应该完整-换句话说,如果您创建绘制希尔伯特曲线的函数,则您的代码必须调用该函数。输出可以直接显示在屏幕上,也可以将输出写入图像文件。曲线可以旋转或翻转,但直线必须相交成直角,并且输出不能拉伸。可以理解ASCII技术,但不会被接受。以字节为单位的最短代码胜出!

5
在Python脚本中添加注释,并使其成为双语的Python / C ++“程序”
给定以下Python 3脚本: def greet(): print("Hello, world!") greet() 前面加上一些行该文本文件,以便它可以同时作为一个Python程序执行以及编译和运行一个C ++程序产生相同的输出你好,世界!(包括末尾的换行符): $ python3 bilingual.py.cpp Hello, world! $ g++ bilingual.py.cpp && ./a.out Hello, world! 该解决方案将通过整个程序的非空白字符计数来评分,包括Python脚本: sed 's/\s//g' bilingual.py.cpp|wc -c

2
动画Adven the Adventurer
挑战 您的任务是为穿越冒险家(即万圣节)迷宫的Adve the Adventurer设置动画。Adve是一个•; 不过,他性格流畅,因此他不介意由其他角色代表。 要为Adve制作动画,请打印出每一帧;框架是其中包含当前位置的地图。Adve每转一圈向前移动一个空间,永不后退。他从第一行开始,到最后一行结束。 输入值 任何合理的格式,例如带有定界符的字符串或字符串数​​组。您可以假设输入将是一个大于3 * 3的地图,仅包含一个可能的路径。出现的唯一字符是#和。 输出量 框架。 示例迷宫(好吧,迷宫) 这是一张没有Adve的地图;第一帧和最后一帧是此空白地图(此地图为9x15): ### ##### ## ##### ## ###### ## # ####### # # ### # # # # # # # ### # ####### # #### #### #### #### ### ##### ### ##### ### ##### ### 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 的确切该输出可以找到这里(37帧)。 …
12 code-golf  string 

11
方形不螺旋的弦!
给定一个字符串,首先将其平方如下: 首先,编写字符串。 abcde 接下来,编写向左旋转的字符串。 abcde bcdea 继续这样做,直到您编写了len(string)行。 abcde bcdea cdeab deabc eabcd 现在,从这样的字符串中读取: ----+ +--+| |+>|| |+-+| +---+ 这使: abcdeabcdcbaedcbcdeabaede 打印此字符串。 测试用例 abcdef -> abcdefabcdedcbafedcbcdefabcbafedefaf cena! -> cena!cenanec!anena!cec!a! ppcg -> ppcgppcppgcpcgpg abc -> abcabacbc ab -> abab a -> a -> 如果测试用例不正确,请发表评论。 请记住,这是code-golf,所以字节数最少的代码将获胜。
12 code-golf  string 

30
查找列表的“展开大小”
让我们通过以下规则定义u嵌套列表l(仅包含列表)的“展开大小”功能: 如果l为空,u(l)则为1。 如果l为非空,u(l)则等于中每个元素的展开大小的总和l。 您的任务是编写一个将列表作为输入并输出(或返回)列表未包装大小的程序(或函数)。 测试用例: [] -> 1 [[[]],[]] -> 4 [[[]],[[[[]],[]]],[[[]],[[[[]],[[],[[]]]]]]] -> 19 [[[[]]]] -> 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.