Questions tagged «code-golf»

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

6
六角迷宫时间!
是时候进行另一个迷宫挑战了,但并不是您所知道的。 此挑战的规则与大多数迷宫挑战略有不同。磁贴类型定义如下: S:迷宫的起始位置 E:您要到达的位置 0:你无法穿越的墙 +:您可以越过的地板 您可以沿六个方向之一旅行:左上,右上,左,右,左下或右下。 \ / -S- / \ 迷宫不包裹。目的是找到从S到的最短路径字符串E。 输入: 输入是用空格隔开的线条,如所示的迷宫。后面没有空格。 输出: 一个字符串R,L和F在那里 R 向右旋转(顺时针)60度 L 向左旋转(逆时针)60度 F 在您指向的方向上移动一个空间 你开始指向 left-up 最短路径由生成的字符串的长度计算,而不是访问的位置数。您的程序必须打印最短路径作为解决方案。 如果迷宫无法解决,则应输出Invalid maze!。 (>>>是输出) 0 0 0 0 0 + 0 + 0 0 0 0 + + 0 0 + 0 + 0 + …

1
这是候选人卡尔文数吗?
这项挑战是对我们的传奇挑战作家( Calvin's Hobbies)(现在更名为Helka Homba)的致敬,其精神与“ 生成丹尼斯数字 ”相同 。 卡尔文(Calvin)是PPCG的杰出贡献者,在整体声誉中名列第六,在我们所有人当中,毫无疑问,最佳挑战写作技能是无可争议的。但是,当然,对于这一挑战,我们将重点关注他的用户ID。 起初26997可能看起来不太有趣。实际上, 从几个方面来说,这几乎是有趣的。例如,这是26997 mod <n>某些值的图表n: n | 26997 % n ----+----------- 3 | 0 4 | 1 5 | 2 6 | 3 7 | 5 :( 8 | 5 9 | 6 10 | 7 但是,26997是可以用表示的少数几个数字之一,其中整数> 0。(n * 10)n - nn 这是可以用这种方式表示的前几个数字,此后我们将其称为加尔文数字: …

6
披萨好吃吗?
这个问题是通过启发,是逆这个。 丹尼斯(E),门把手(D),马丁(M)和克里斯(C)点了一份披萨。矩形的比萨饼被分成方形的块,每个块上都标有其预定的食用者。 编写一个程序或函数,给定一个矩形比萨,该比萨由每个字母的0个或多个组成,确定是否: 每个人的每个片段都是相互联系的。这意味着所有相同的字母应彼此直接相邻(没有对角线连接)。 每个人的切片数对于所有人都是相同的。 您必须输出真/假值,并带有可选的尾随换行符,以指示给定的披萨是否公平。 有效的测试用例: DDDDDDDDDDDDMCCCCCCCCCCC DEEEEEEEEEEDMMMMMMMCCCCC DEEEEEEEEEEDMMMCCCCCCCCC DEEEEEEEEEEDMMMMMMMMCCCC DDDDDDDDDDDDMMMMMMMMMMMC DEMC DD EE MC MC EEDDMMMCCC EEEDDDMMCC 无效的测试用例: EDM EDMCCMDE DDDDDDDDDDDDMCCCCCCCCCCC DEEEEEEEEEEDMMMMMMMCCCCC DEEEEEEEEEEMDMMCCCCCCCCC DEEEEEEEEEEDMMMMMMMMCCCC DDDDDDDDDDDDMMMMMMMMMMMC DDMMEECC DMMEECCC 以字节为单位的最短代码获胜。

24
阿特巴什自我回文症
考虑一下Atbash转换: A|B|C|D|E|F|G|H|I|J|K|L|M Z|Y|X|W|V|U|T|S|R|Q|P|O|N 其中A⇔Z和L⇔O,例如,存在一些单词共有的有趣特性。当将某些字符串翻译成等同于atbash的字符串时,所说的翻译就是原始单词的反转。我称这些为Atbash自回文症。 例如,让我们翻译WIZARD: W→D 我→R Z→A A→Z R→我 D→W 结果是DRAZIW,它被向导反转了。因此,向导是一种atbash自我回文症。 目标给定一串可打印的ASCII字符,如果该字符串是atbash自回文,则输出或返回真实值,否则输出假值。(这是通过STDIN,最接近的等价函数,功能输入等完成的。如果您的语言不能执行任何这些操作,请考虑选择其他语言,您可以对输入进行硬编码。)您应该不区分大小写。如果输入是回文,并且不受atbash序列的影响,那么您仍然应该输出true,因为回文+本身就是回文。这是一个代码高尔夫球,因此以字节为单位的最短程序获胜。 测试用例 "Input" => true, false "WIZARD" => true "Wizard" => true // case doesn't matter "wIzArD" => true "W I Z A R D" => true "W IZ ARD" => false // the atbash of this is …

3
填充任意冰块托盘
假设此空间网格和X代表一些形状奇异的空冰块托盘的横截面: X X X X X X XX X XX X XXXXXX XXXXXXXXXXXXX 不带X的列表示无法容纳水的托盘中的孔或缝隙,从而排入了无限容量的水槽。从网格的最左边或最右边掉落的水也进入这个无尽的水槽。 如果我们将水龙头放置在托盘上方,并让它们充满水直到所有隔间中的水位保持稳定,则填充的确切隔间将取决于水流​​在托盘上方的确切位置。(假设有稀薄,稳定的水流,没有飞溅。) 例如,如果我们的水龙头F在最左边的网格列上方 F X X X X X X XX X XX X XXXXXX XXXXXXXXXXXXX 水会跌落到该X列的最顶部,并左右扩散,左半部分溢出到下方的水槽中,右半部分填充2×1隔室。一旦隔间装满,右边的一半水就无处可流,只能流入水槽,并且各处的水位基本稳定。 关闭水龙头,托盘现在看起来像这样:(与~水一起使用) X X X X~~X X XX X XX X XXXXXX XXXXXXXXXXXXX 同样,如果我们将水龙头定位如下: F X X X X X X …

4
亚皆老街ASCII艺术
编写一个使用正整数的程序(或函数)。 如果输入为1,则打印(或返回)并排相邻的两个菱形,每个菱形的边长为1斜线: /\/\ \/\/ 对于每个N大于1的输入,请查看输出,N-1并为每对相邻的菱形插入一个新的菱形,它们之间的边长是两个相邻菱形的边长之和。打印(或返回)这个新的菱形图案。 因此,当2输入时,我们查看的输出1,可以看到有两个相邻的菱形,它们的边长均为1。因此,我们在它们之间插入了边长2(1 + 1)的菱形: /\ /\/ \/\ \/\ /\/ \/ 对于输入,3我们看一下输出,2并在两对相邻菱形之间添加两个边长为3(1 + 2和2 + 1)的菱形: /\ /\ / \ /\ / \ /\/ \/ \/ \/\ \/\ /\ /\ /\/ \ / \/ \ / \/ \/ 继续该模式,输出为4: /\ /\ /\ / \ / \ /\ …

18
文字右对齐
您的工作是获取一个字符串输入和一个数字,然后将字符串向右对齐,使文本的宽度成为数字。当一行太长时,请将其断开,然后将其余部分放在下一行,重复进行直到不需要。如果一条线比宽度短,则用空格填充。可能会出现多个换行符,并且应将其与其他任何单个字符一样对待。 例如,字符串 Programming Puzzles & Code Golf 该数字5将产生: Progr ammin g Puzzl es & Code Golf 而相同的字符串和数字10将产生: Programmin g Puzzles & Code Golf 字符串 a b 而数字5会产生: a <-- note the 5 spaces b 最短的代码胜出!
27 code-golf  string 

2
Vim-用注释字符包围注释行
今天,我意识到我经常喜欢在代码中定义以下部分: #################### # Helper Functions # #################### 但这很乏味。假设我有这样一行: # Helper Functions # vim将其包装在最短的击键集合中是#什么?移位,并不能算作这一挑战击键。 测试用例: Input: "#test test test#" Output: ################ #test test test# ################ Input: "#this is a nice block comment#" Output: ############################## #this is a nice block comment# ############################## Input: "# s p a c e s must be …
27 code-golf  vim  comment 

25
反转和反转字符串
反转和反转字符串 挑战 在这个挑战中。您将要编写一个程序,该程序将输出或返回输入(反向和反向)。 首先,每个字符都应转换为其字符代码。然后,应将其转换为base-2。接下来,该字符串应颠倒。之后,字符串应取反(1-> 0和0-> 1)。最后,应将其转换回以2为基数,然后再转换回一个字符。如果某个字符导致无法打印,则可以选择输出该字符,但不必将其删除。 H -> 72 -> 1001000 -> 0001001 -> 1110110 -> 118 -> v e -> 101 -> 1100101 -> 1010011 -> 0101100 -> 44 -> , l -> 108 -> 1101100 -> 0011011 -> 1100100 -> 100 -> d l -> 108 -> 1101100 …

10
钩长产品
甲杨图是在左对齐的行和顶部对齐的列盒的布置。对于每个框,其上方和左侧的所有空间均被占用。 XXXXX XXX XXX X 盒子的挂钩长度是其行右边和框下面的盒子数,也可以自己计数一次。例如,第二个盒子的钩子长度为6: X**** X*X X*X X 这是所有钩子长度: 86521 532 421 1 您的目标是在此处计算弯钩长度的乘积8*6*5*2*1*5*3*2*4*2*1*1 = 115200。 (如果您对这个表达式的重要性感兴趣,请阅读钩子长度公式。) 输入:行大小的集合,如数字[5,3,3,1]或重复的一元符号(如[[1,1,1,1,1], [1,1,1], [1,1,1], [1]]或)"XXXXX XXX XXX X"。您可以根据需要将列表排序为升序或降序。该列表将为非空,并且仅包含正整数。 输出:挂钩长度的乘积,为正整数。不必担心整数溢出或运行时。 不允许专门处理Young图或整数分区的内置函数。 测试用例: [1] 1 [2] 2 [1, 1] 2 [5] 120 [2, 1] 3 [5, 4, 3, 2, 1] 4465125 [5, 3, 3, …

1
ASCII分数
在temp文件夹的深处挖掘,您会发现一些钢琴作品。不幸的是,这些作品只写有音符名称和时长,并且您只能访问文本终端。因此,您的任务是编写一个程序以将合成显示为ASCII艺术。 输入项 您的程序应接受两个字符串作为输入。第一个字符串代表高音谱号的音符(带有高音谱号),第二个字符串代表低音谱号的音符。 这些笔记将以科学的音高符号传递。顶部人员的笔记总是会之间C4和C6包容性。底层员工的笔记总是会之间C2和C4包容性。 每个音符都将拿出一个时间,这将是一个:1,2,4,8。它们分别代表整个音符(半缩音符),半音符(最低音符),四分音符(钩针)和八分音符(颤音)。 其他持续时间的注释将永远不会出现在输入中。 您可以自行决定如何将音符和持续时间分开,以及如何将每个音符与输入中的其他音符分开。以下是高级职员的样本输入: E4/4 A4/8 C#5/8 E5/2 在此,音符之间用空格隔开,并且持续时间与音符之间用正斜杠分隔。这些距离不是固定的,您可以选择更改或完全省略。 您可以假设每位职员至少有一张便条。输入中没有休止符。 输出量 您的程序将分数输出为ASCII艺术作品,并符合以下说明。 谱号应该是输出左侧的第一件事(两个谱号之间的距离不应更改): ^ | | ------|/---- / -----/|----- / | ---/--__---- | / \ ---\-\|-|--- \ | / ------|----- | \_/ ----___----- / \ | ---\---|---- | | -------/---- / -----/------ ------------ 如果音符的条干(圆旁边的垂直线)应指向五线谱的中线以下,则应指向上方。如果音符在谱线的中线上方,则应指向下方。如果音符在中线,则词干可以指向任一方向。(唯一的例外是奖金,并且在连接八分音符时发生,稍后将进行说明)。茎应该从圆的上面/下面的线开始,并且要6高。 除整个音符外,所有类型的音符都有词干。八分音符的标志由不同行上的两个正斜杠表示(请参见下面的示例音符)。 填充的音符头(用于四分音符和八分音符)由表示(@)。空的音符头(代表一半和全部音符)由表示( )。 …

7
放大钻石拼贴
任何规则的六角形都可以用钻石平铺,例如: ______ /_/_/\_\ /_/\_\/\_\ /\_\/_/\/_/\ \/_/\_\/_/\/ \_\/_/\_\/ \_\_\/_/ 我们将考虑上面的大小拼贴1(因为钻石的侧面是由一个/或\每个组成)。相同大小的瓦片2看起来像: ____________ / / /\ \ /___/___/ \___\ / /\ \ /\ \ /___/ \___\/ \___\ /\ \ / /\ / /\ / \___\/___/ \/___/ \ \ / /\ \ / /\ / \/___/ \___\/___/ \/ \ \ / /\ \ / …

24
快速排序!
好吧...有59个(现在有60个)标记为sorting的问题,但没有简单的quicksorts。 必须解决。 对于那些不熟悉quicksort的人,以下是细分,由Wikipedia提供: 从数组中选择一个元素,称为数据透视。 对数组重新排序,以使所有值小于枢轴的元素都位于枢轴之前,而所有值大于枢轴的元素都位于枢轴之后(相等的值可以任意选择)。分割之后,枢轴处于其最终位置。这称为分区操作。 将上述步骤递归应用于值较小的元素的子数组,并分别应用于值较大的元素的子数组。 规则 规则很简单: 用您选择的编程语言实现数字快速排序。 支点应随机选择,或选择三个中间值(第一个,最后一个和中间元素)。 您的程序可以是完整的程序或功能。 您可以使用STDIN,命令行参数或函数参数获取输入。如果使用字符串输入,则输入以空格分隔。 输入中可能包含十进制和负值。但是,不会重复。 您可以输出到STDOUT或从函数返回。 没有内置的排序功能(或与排序相关的功能)或标准漏洞。 该列表可以是任意长度。 奖金#1:在长度<= 5的列表或子列表上,使用插入排序可以稍微加快速度。奖励:-15%。 奖金2:如果您的语言支持并发,则可以对列表进行并行排序。如果在子列表上使用插入排序,则最终的插入排序不需要并行。内置线程池/线程调度是允许的。奖励:-15%。 注意:中位数3使某些人感到困惑,因此(再次)由Wikipedia提供以下说明: 选择枢轴分区的第一个,中间和最后一个元素的中位数 计分 这是代码高尔夫球。基本分数以字节为单位。如果您获得一笔红利,请从该数字中扣除15%。如果两者兼得,则可享30%的折扣。听起来确实像是推销。 这并不是要找到总体上最短的答案,而是要找到每种语言中最短的答案。 现在,这是排行榜片段的无耻复制。 排行榜 这篇文章底部的Stack Snippet从答案a)生成目录,答案是每种语言的最短解决方案列表,b)则是总体排行榜。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language Name, N bytes 其中N是您提交的文件的大小。如果您提高了分数,则可以通过打败旧分数来保持标题。例如: ## Ruby, <s>104</s> <s>101</s> 96 bytes 如果要在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: ## Perl, 43 + 2 (-p flag) = …

25
查找下一个1稀疏二进制数
如果在其二进制表示形式的任何两个连续1之间至少存在K 0,则正整数N为K-稀疏。 因此,数字1010101为1稀疏,而101101不是。 您的任务是找到给定输入数字的下一个1稀疏数字。例如,如果输入为12(0b1100),则输出应为16(0b10000),如果输入为18(0b10010),则输出应为20(0b10100)。 最小的程序或函数(以字节为单位)获胜!不允许出现标准漏洞。

23
交换两个字符串的大写
your shift key is broken. wheNever you type two lines, the cApitaL LetteRs in them get swappeD. you must write a program to fiX THIS! 描述 输入是两个字符串,s1并且s2长度相等。它们每个将仅包含可打印的ASCII,并且长度至少为一个字符。您可以将它们输入为两个字符串,两个字符串的数组或带制表符或换行符的单个字符串,s1并s2用制表符或换行符分隔。 输出如下: 对于每个角色c在s1: 如果字符不是字母,则将其原样输出。 否则,如果c是字母: 在中找到匹配的字符(具有相同索引的字符)s2。 如果是大写字母,则输出c大写。 如果是小写字母,则输出c为小写字母。 否则,输出c保持不变。 然后,除了s1和以外,请执行相同的操作s2。 本质上,所有与之s1匹配的字符s2为大写的字母都应大写,并且s1在同一索引中带有小写字母的所有字母s2都应变为小写(反之亦然)。 测试用例 输入: ABCDEfghijKlMnOpqrstuvwxyz aaaaaaaaaaaaaaaa---------- 输出: abcdefghijklmnopqrstuvwxyz AAAAAaaaaaAaAaAa---------- 输入: PRogrammiNG puzZLes & CODe golf …
27 code-golf  string 

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.