Questions tagged «code-golf»

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

3
标签死角
在输入ASCII艺术字“道路”的情况下,输出标记了所有死角的道路。 这是一条路: ########.....######..#..### #......#######....#..#..#.# #.##......#...#####..#..### #..#####..#....#..#######.# #......#...#####.....##...# #..###.#...#...###...#..### ##########.#..#..##..#.##.# ..#......#.######.#..#.#.#. ..#......#.#..#.#.#..#.#.#. ..######.###..##..######### 这是一条带有字母标记的死胡同的道路X: ########.....######..X..### #......#######....#..X..#.# #.XX......X...X####..X..### #..XXXXX..X....#..#######.# #......X...#####.....##...# #..###.X...#...###...#..### ##########.#..X..##..#.##.X ..X......#.#XXXXX.#..#.#.X. ..X......#.#..X.X.#..#.#.X. ..XXXXXX.###..XX..######XXX 一个死胡同被定义为任何道路瓦片边界ň其他道路砖,至少n-1个,其中被认为死角此规则了。“边界”是在四个基本方向上进行的,因此对角接壤的图块不计算在内。 重复应用此规则,因为新创建的死胡同本身可以创建更多的死胡同。另请注意,第一次仅应用该规则时,仅与另一个道路砖接壤的任何道路砖都被视为死角。 输入和输出可以是单个字符串(用非#或字符分隔的行.)或数组/列表/等。如果您的语言支持,您也可以接受输入,并且每一行都是一个函数参数。 您可以假设以下有关输入的内容: 总会有至少一个“循环”,#即可以无限跟随的一组字符。(否则,每个单独的图块都将变成死胡同。) 这意味着输入将始终为2×2或更大,因为最小的循环为: ## ## (顺便说一下,应该原样输出)。 所有#字符将被连接。也就是说,如果您要对any进行洪水填充#,那么所有这些都会受到影响。 由于这是code-golf,因此以字节为单位的最短代码将获胜。 上面的示例和微小的2×2网格可用作测试用例(在此挑战中没有很多要涵盖的边缘案例)。

4
愚蠢的股票市场
给定一个包含多个人的投资数据的字符串,请找出他们记录了多少利润/亏损。 该字符串仅包含大写和小写字母,如下所示: AABaBbba 每个字母代表一个人-大写字母表示购买,小写字母表示出售。他们所投资股票的价格(CGLF)从50美元起。有人购买后,价格上涨5%。有人卖出后,价格下跌了5%。您需要弄清楚每个参与者赚了多少钱。 笔记: 该字符串将始终有效,没有先购买就不能出售。同样,每个购买股票的人最终都会出售它。 您的计算结果至少应精确到小数点后6位。但是,最终答案应四舍五入到两位小数。 测试用例: 输入: AABaBbba A:购买-$ 50 一个:购买-$ 52.50 B:买-$ 55.125 一个:出售-$ 57.88125 B:购买-$ 54.9871875 b:出售-$ 57.736546875 b:出售-$ 54.8497195313 一个:出售-$ 52.1072335547 A人利润:57.88125+52.1072335547-50-52.50=7.4884835547 乙方利润:57.736546875+54.8497195313-55.125-54.9871875=2.4740789063 输出:( A:7.49,B:2.47顺序无关紧要,不需要分隔符) 输入: DGdg D:购买-$ 50 G:买-$ 52.50 d:出售-$ 55.125 g:卖出-$ 52.36875 人D利润:55.125-50=5.125 G人获利:52.36875-52.50=-0.13125 输出: D:5.13,G:-.13 输入: ADJdja A:购买-$ 50 D:买入-$ 52.50 …
16 code-golf 

30
过滤并添加
任务 任务很简单。给定一个包含数字(大写和小写字母)的非空字符串,输出剩余数字的总和。例如: a1wAD5qw45REs5Fw4eRQR33wqe4WE 过滤掉所有字母将导致: 1 5 45 5 4 33 4 这些数字的总和为1 + 5 + 45 + 5 + 4 + 33 + 4 = 97。因此输出将是97。 测试用例 a > 0 0 > 0 5 > 5 10 > 10 a0A > 0 1a1 > 2 11a1 > 12 4dasQWE65asAs5dAa5dWD > …

10
拆分,翻转和重组整数
背景 在数学上众所周知,整数可以与成对的整数一一对应。这样做有许多可能的方式,而且这种挑战,您将实现其中一个和它的逆运算。 任务 您的输入是一个正整数n > 0。已知存在唯一的非负整数,a, b ≥ 0例如。您的输出是正整数的“翻转版本” 。n == 2a * (2*b + 1)n2b * (2*a + 1) 您可以假定输入和输出适合您语言的标准无符号整数数据类型。 规则和计分 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 它们以格式给出in <-> out,因为要实现的功能是它自己的反函数:如果将输出反馈给它,则应该获得原始输入。 1 <-> 1 2 <-> 3 4 <-> 5 6 <-> 6 7 <-> 8 9 <-> 16 10 <-> 12 11 <-> …

2
国际象棋德比
与国际象棋和拆除德比相比,极性可能更大。您可能会认为,直到今天,没有一个人喜欢另一个人。 规则 起始位置是标准棋盘: RNBQKBNR PPPPPPPP PPPPPPPP RNBQKBNR 看起来已经足够正常了,直到您发现这是每一场比赛的最后一场比赛: 每一回合,棋盘上的每个棋子都会随机做出*选择的有效举动(使用其标准举动规则)。但是,棋子的移动顺序每轮都是随机的。 即使与它的颜色相同,一块也可以捕获任何一块,甚至是国王。 兵可以捕获FORWARD以及对角线。而且,像平常一样,如果在其前面有一个空白空间,则典当可以在其第一步移动两个空间(它们也可以捕捉到该空间)。此外,典当可以提升为除典当。 获胜者是最后一站。但是,如果经过1000转之后,剩下的筹码不止一个,那么其余所有筹码都是赢家。 没有En Passants,Checks,Castle等 输出量 每次转弯后,输出转弯编号以及板子的外观。杀死一块后,将其从板上移除。在第一回合之后,棋盘可能看起来像这样: 1. K RBQ N BR NP P P PP P P R PP BPN PNP K R Q 经过1000次移动后,木板可能如下所示: 1000. Q K P N R R B N Q 游戏结束。 或者,在556转动板后,如下所示: 556。 [R 游戏到此结束。 …

12
删除指定的非数字行
如有任何疑问:Nan = Non-numeric datatype就本挑战而言。 编写一个将矩阵/数组作为输入以及列索引列表的程序或函数。 面临的挑战是删除指定列中所有元素所在的行Nan。该行中的其他元素是否为数字都没有关系。以下示例有望使这一点更加清晰(它是一个索引的): Input array: 16 NaN 3 13 5 11 NaN 8 NaN 7 NaN 12 4 14 -15 1 Input column index: [1 3] Output array: 16 NaN 3 13 5 11 NaN 8 4 14 -15 1 ---- Input array: 16 NaN 3 13 …

9
带字符串的基数转换
介绍 过去,我们在这里遇到了一些基本的转换挑战,但是设计用来处理任意长度数字(即足够长以至于它们溢出整数数据类型的数字)的设计并不多,其中大多数感到有些不足。复杂。我很好奇这样的基础代码更改如何获得成功。 挑战 用您选择的语言编写一个程序或函数,该程序或函数可以将一个基数的字符串转换为另一基数的字符串。输入应该是要转换的数字(字符串),从基数(以10为基数),以基数(以10为基数)和字符集(字符串)。输出应为转换后的数字(字符串)。 一些进一步的细节和规则如下: 要转换的数字将是一个非负整数(因为-它.可能在字符集中)。输出也将如此。 前导零(字符集中的第一个字符)应被修剪。如果结果为零,则应保留一个零数字。 支持的最小基本范围是2到95,由可打印的ASCII字符组成。 要转换的数字的输入,字符集和输出必须全部为字符串数据类型。基数必须是以10为底的整数数据类型(或整数浮点数)。 输入数字字符串的长度可能非常大。很难量化一个合理的最小值,但是期望它能够处理至少1000个字符,并在像样的机器上在不到10秒的时间内完成100个字符的输入(对于这种问题非常慷慨,但是我不想速度成为重点)。 您不能使用内置的基准变更功能。 字符集输入可以采用任何排列方式,而不仅仅是典型的0-9a-z ...等。 假设将仅使用有效输入。不用担心错误处理。 获胜者将由符合条件的最短代码确定。至少会在7个基准10天之内,或者是否/是否有足够的提交内容,来选择它们。如果出现平局,则运行速度更快的代码将是赢家。如果在速度/性能上足够接近,则较早出现的答案为准。 例子 这是您的代码应能够处理的一些输入和输出示例: F("1010101", 2, 10, "0123456789") > 85 F("0001010101", 2, 10, "0123456789") > 85 F("85", 10, 2, "0123456789") > 1010101 F("1010101", 10, 2, "0123456789") > 11110110100110110101 F("bababab", 2, 10, "abcdefghij") > if F("10", 3, 2, …

5
加和乘以困惑的数字
的分割复数,也被称为“困扰数字”类似于复数。i^2 = -1但是,我们有代替j^2 = 1; j != +/-1。每个数字采用的形式z = x + j*y。 为了限制这一挑战的复杂性,我将使用该符号-来表示否定,因为不会有任何减法。 以下是一些欣赏乐趣的示例: 6 * 9 = 54 // real numbers still act normally 5 + -7 = -2 j*1 + j*1 = j*2 // two `j`s added together make a j*2 7 * j*1 = j*7 // multiplication …

3
格式化单词列表
您面临的挑战是在多行中设置不超过给定字符数的单词列表格式,以使每行包含尽可能多的单词,而不必切除所有单词。 输入值 输入将是一个用空格分隔的单词列表,然后是一个至少为4的数字。 输出量 输出应该是按行分组的输入单词,以便没有一行包含比输入数字更多的字符。单词应按输入顺序输出。单词之间应以逗号分隔,然后以空格隔开,但在每行末尾则不需要空格。如果单词太长而无法容纳在一行中,则应在遵循其他规则的同时将其尽可能少地截断,并在末尾添加“ ...”。 测试用例 Input: foo bar baz qux 12 Output: foo, bar, baz, qux Input: foo bar baz qux 5 Output: foo, bar, baz, qux Input: strength dexterity constitution intelligence wisdom charisma 10 Output: strength, dexterity, consti..., intell..., wisdom, charisma Input: quas wex exort 4 Output: …
16 code-golf  string 

1
我可以住在这里吗?
在Terraria游戏中,游戏机制之一是建造房屋,以便NPC可以进入。有一套严格的规则来确定什么是有效房屋。以下是规则列表: 房屋的总面积必须至少为60平方米,但少于750平方米。此外,房屋的尺寸(包括外框)必须至少为以下尺寸之一: 5x12 6x10 7x9 8x8 9x7 10x6 12x5 15x4 为简单起见,您可以放心地假设:a)所有输入房屋将为矩形,并且b)房屋内将没有实心砖#。这是我们的12x6帧(以漂亮的ASCII绘制): ############ # # # # # # # # ############ 房子必须被背景墙覆盖。这些不是实心砖,而是三维空间中房子后面的墙。允许有孔,但任何孔都不能大于4x4。如果一行或一列中有5个或更多的空格字符,则该孔大于4x4,并且该房屋无效。也可以有多个孔,但必须至少有一个壁。 ############ #**********# #**********# #**********# #**********# ############ ############ #* * # #* * # #* * # #****** # ############ (Still acceptable since neither hole is larger than 4x4 …
16 code-golf  string  game  grid 

7
Prolog打高尔夫球的秘诀
您在Prolog中打高尔夫球有哪些一般秘诀?我正在寻找可以应用于编码高尔夫问题的想法,这些想法至少在某种程度上是特定于Prolog的(例如,一个字母变量并不特定于Prolog以减小程序的大小)。 请在提示中指出它是否特定于Prolog的实现(例如,SWI-Prolog特定的内置程序) 请为每个答案仅张贴一个提示,或与相同主要思想密切相关的提示列表。
16 code-golf  tips 

5
查找XOR素数
在xnor提出的挑战中,我们被要求实现XOR乘法。在这一挑战中,目标是找到第一个nXOR素数。从以下定义可以看出,XOR素数与常规素数非常相似: 质数的定义:大于1的正数,除非将1与自身相乘,否则不能通过将两个数相乘而形成。 XOR质数的定义:大于1的正数,除非通过1与自身的XOR乘积,否则不能通过两个数的XOR乘积来形成。注意,XOR质数组成oeis序列A014580。 XOR乘法定义为不带进位的二进制长乘法。您可以在xnor的Challenge中找到有关XOR乘法的更多信息。 输入: 一个整数n。 输出: 第一个nXOR素数。 以下是500以下的XOR素数: 2 3 7 11 13 19 25 31 37 41 47 55 59 61 67 73 87 91 97 103 109 115 117 131 137 143 145 157 167 171 185 191 193 203 211 213 229 239 241 247 253 …

11
Pi Day,Pi Minute或Pi Second?
在此挑战中,您需要确定是Pi Day,Pi Minute还是Pi Second。 因为Pi是不合理的,所以它希望您的代码尽可能短。 例子 没有提供任何输入,您的程序应使用系统时间。我只是为了清楚起见添加了它 March 14, 2016 0:00:00 Pi Day December 25, 2015 3:14:45 Pi Minute December 29, 2015 0:03:14 Pi Second January 1, 2016 0:00:00 <No Output> 什么是Pi日/分钟/秒 Pi Day 是月份是三月,日期是第十四天 Pi Minute 是小时是3,分钟是14 Pi Second 是当分钟是3,第二秒是14 Pi Day应该首选代替Pi Minute或Pi Second,并且Pi Minute应该首选代替Pi Second。 对于这个挑战,您应该使用12个小时的时间(15:14 == 3:14)。用于确定日期的时间Pi …
16 code-golf  date  pi 

28
讲解Revu'a
其实不是没有灵感阿特巴希密码自回文也不由广义GEMATRIA计算器。 如果给定字符串š长度的Ñ,输出Revu'a序列,这是第一个字符小号,中前两个字符小号,...第一Ñ -2字符小号,第一Ñ -1的字符小号,整个小号。 该字符串将仅包含方向性强且范围在0x0000到0xFFFF之间的Unicode(所需的任何编码)字符。但是,不会出现方向控制字符。任何给定字符串中的所有字符将具有相同的方向性。 您可以数组符号的形式返回["t","te","tes","test"],以空格分隔的字符串"t te tes test",以多行文本的形式返回ttetestest(预格式化的数组)的形式返回Ť te 特斯 测试或类似的内容。前导,分隔和尾随空格的数量并不重要,尾随换行符也不重要。询问是否有疑问。 从右至左输入必须以正确的顺序产生从右至左输出: 输入:"נחמן" 输出:"נ נח נחמ נחמן"或נ נח נחמ נחמן 或["נ","נח","נחמ","נחמן"]。在无效的结果是"נחמן נחמ נח נ","ן מן חמן נחמן"和"נחמן חמן מן ן"。

6
分形序列的收敛和
背景 甲分形序列是一个整数序列,其中可以除去的每一个整数的第一次出现,并用相同的序列之前结束。 这样一个非常简单的序列称为金伯林的释义。您从正自然数开始: 1, 2, 3, 4, 5, 6, 7, 8, 9, ... 然后,您可以在空白处进行调整: 1, _, 2, _, 3, _, 4, _, 5, _, 6, _, 7, _, 8, _, 9, ... 然后重复使用序列本身(包括空白)填充空白: 1, 1, 2, _, 3, 2, 4, _, 5, 3, 6, _, 7, 4, 8, _, 9, …

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.