Questions tagged «code-golf»

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

5
最短的简单正则表达式匹配二进制单词
任务 将简单的正则表达式定义为仅包含以下内容的非空正则表达式 字符0和1, 分组括号(和), 一个或多个重复量词+。 给定0s和1s 的非空字符串,您的程序应找到与完整输入字符串匹配的最短简单正则表达式。(也就是说,当匹配一个简单的正则表达式时,假装它由^ 和 预定$。)如果有多个最短的正则表达式,请打印其中的一个或全部。 code-golf,所以最短的提交(以字节为单位)获胜。 测试用例 1 -> 1 00 -> 00 or 0+ 010 -> 010 1110 -> 1+0 01010 -> 01010 0101010 -> 0(10)+ or (01)+0 011111 -> 01+ 10110110 -> (1+0)+ 01100110 -> (0110)+ or (01+0)+ 010010010 -> (010)+ 111100111 -> 1+001+ …

5
车牌号高尔夫:识别
另请参阅:解析 介绍 您正在与一个政府编程团队合作,他们一直在为测速相机编程。但是,为速度计算器编程的人占用了太多空间,因此您必须使车牌识别软件尽可能小。 挑战 给定车牌图像,返回车牌上的文字。 车牌号 以下是程序必须识别的所有字符: ABCDEFG H1JKLMN0 PQRSTUVW XYZ01234 56789 注意 在英国车牌上,I(i)和1(一个)的字符相同,而O(o)和0(零)的字符相同。因此,始终假设字符是数字。即以下车牌号是10(一个零): 例子 C0D3 GLF B3T4 DCY M1NUS 15 YET1CGN 其他规定 禁止访问Internet和OCR库和功能。 车牌始终看起来与上面显示的相同。所有号牌的尺寸都大致相同(由于裁剪方法而有些不正确)。 如果您需要任何车牌的无损PNG版本,我们将为您提供。 计分 以字节为单位的最短程序获胜。 所有号码牌均为该站点搜索栏的屏幕截图

12
库克和惠斯通电报,五针
定义 根据维基百科: Cooke and Wheatstone电报机是一种早期的电报系统,其历史可以追溯到1830年代,由英国发明家William Fothergill Cooke和英国科学家Charles Wheatstone发明。这是第一个投入商业使用的电报系统。接收器由许多针组成,这些针可以通过电磁线圈移动以指向板上的字母。不愿意学习代码的早期用户以及不想投资于员工培训的雇主都喜欢此功能。 它的工作方式如下: 中间有五个针,可以顺时针(如中间针的情况)或逆时针(如最后一个针的情况)偏转。 在上图中,两个偏转的针指向该字母G,这意味着正在发送/接收的字母是该字母G。 请注意,信件C,J,Q,V,X,Z失踪,因此必须与其他字母来代替。 任务 您将收到一个字符ABDEFGHIKLMNOPRSTUWY作为输入,并且将输出五根针的相应配置,未偏转为|,顺时针偏转为,逆时针/偏转为\。 测试用例 这涵盖了所有可能的输入 input output A /|||\ B /||\| D |/||\ E /|\|| F |/|\| G ||/|\ (explanation: see above) H /\||| I |/\|| K ||/\| L |||/\ M \/||| N |\/|| O ||\/| P |||\/ R …

12
返回等分序列序列的第n个数字
0.定义 一个序列是一个数字的列表。 一个系列是数字列表的总和。自然数 集包含所有“大于零的非负整数”。自然数j 的除数(在这种情况下)是自然数i,因此j ÷ i也是自然数。 1.前言 一对夫妇在这个网站的其他问题提等分的概念,或自然数的约数的序列一这是不到一个。确定友好数涉及计算这些除数的和,称为等分和或等分序列。每个自然数都有自己的等分和,尽管数字的等分和的值不一定是该数字唯一的。(示例,每个质数的等分和均为1。) 2.挑战 给定一个自然数n,返回n等分和序列的第th个数字。从1的序列开始的序列中的前几个序列是: {0, 1, 1, 3, 1, 6, 1, 7, 4, 8, 1, 16, 1, 10, 9, 15, 1, 21, 1, 22, 11, 14, 1, 36, 6, 16, 13} 串联起来,它们看起来像: 0113161748116110915121122111413661613 根据您的喜好,输入可以是零索引或一索引。解决方案必须是能够返回第10,000位数字(最多输入9999或10000)的程序或函数。最短的解决方案胜出。 3.测试案例 正确的输入输出对应包括但不限于以下各项: 0 or 1 -> 0 4 or …

1
Bootloader高尔夫:Brainf ***
创建一个执行给定Brainfuck程序的引导程序。这是code-golf,因此具有最少字节数的程序将获胜。作为引导加载程序,程序的大小在已编译的代码中以非零字节计。 脑干 30000个8位溢出单元。指针结束。 有关操作的一些注意事项: 必须以正确支持所有可打印ASCII字符的方式读取输入。其他击键可能会插入一个任意字符,或者什么也不做。 读取用户输入必须使用字符缓冲,而不是行缓冲。 读取用户输入必须回显插入的字符。 输出必须遵循代码页437或内置的VGA适配器默认代码页。 引导程序 这是一个x86引导程序。引导加载程序以传统55 AA顺序结束。您的代码必须在VirtualBox,Qemu或其他知名的x86模拟器上运行。 磁碟 可执行的Brainfuck位于第二个磁盘扇区,紧随您的引导加载程序之后,该引导加载程序通常位于MBR部分中的磁盘的第一个扇区中。附加代码(超过510字节的任何代码)可以位于其他磁盘扇区。您的存储设备必须是硬盘驱动器或软盘。 STDIO 当然,引导加载程序无法访问操作系统的IO功能。因此,BIOS功能代替了打印文本和读取用户输入的功能。 模板 首先,这是一个用Nasm(intel语法)程序集编写的简单模板: [BITS 16] [ORG 0x7c00] ; first sector: boot: ; initialize segment registers xor ax, ax mov ds, ax mov es, ax mov ss, ax ; initialize stack mov sp, 0x7bfe ; load brainfuck …

12
“借位”两个数字
您是否知道少数可以从较大的数字借位?这是一个例子。假设我们的两个数字分别为5和14。首先,将它们写成二进制: 5 14 000101 001110 首先,我们从较大的数字中减去最小的on位,然后将其赋予其他数字中的最小off位。所以 This bit turns off | v 000101 001110 ^ | This bit turns on 现在我们有 000111 001100 我们的数字是7和12。第一个数字仍然较小,因此我们继续。 000111 001100 001111 001000 现在我们有15和8,所以我们可以停下来。我们将这组操作称为“借位”两个数字。让我们再举一个例子。20和61。 20 61 010100 111101 010101 111100 010111 111000 111111 100000 63 32 因此,我们最终的结果是32,63,让我们做一个更多。31和12。31已经大于12,因此无事可做!借位31和12不会产生31和12的变化。 挑战 您的挑战是编写一个接受两个数字并对其进行位借位的程序或函数。这两个数字将始终为正整数。您的输入和输出可以采用任何合理的格式。 测试IO: Input: 2, 3 Output: 3, …

24
选择给定字符串中给定索引周围的单词
在Windows中,当您双击文本时,将选中文本中光标周围的词。 (此功能具有更复杂的属性,但对于此挑战无需实施。) 例如,让|您成为的光标abc de|f ghi。 然后,当您双击时,def将选择子字符串。 输入输出 您将得到两个输入:一个字符串和一个整数。 您的任务是返回由整数指定的索引周围的字符串的单词子字符串。 您的光标可以在指定索引的字符串中的字符之前或之后。 如果您之前使用,请在答案中指定。 规格(规格) 索引保证在单词内,因此不会出现诸如abc |def ghi或的边缘情况abc def| ghi。 该字符串将仅包含可打印的ASCII字符(从U + 0020到U + 007E)。 单词“ word”由regex定义(?<!\w)\w+(?!\w),其中\w由[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]或“ ASCII中的字母数字字符(包括下划线)”定义。 索引可以是1索引或 0索引。 如果您使用0索引,请在答案中指定。 测试用例 测试用例是1索引的,并且光标位于指定的索引之后。 光标位置仅用于演示目的,不需要输出。 string index output cursor position abc def 2 abc ab|c def abc def 5 def abc d|ef abc abc …
20 code-golf  string 

12
MATL打高尔夫球的秘诀
MATL是Luis Mendo创建的一种高尔夫语言。事实证明,MATL具有很高的竞争力,经常击败其他高尔夫球语言,例如Pyth,CJam和Jelly。 在MATL打高尔夫球有哪些有用的技巧?(一如既往,请给每个答案一个提示!) 作为记录,可以在此处在线测试 MATL 。 可以在Github上找到文档
20 code-golf  tips  matl 

19
在双射基数62中计数
任务是生成从“ a”到“ 999”的所有字符串,包括大写字符,如下所示: 'a', 'b', 'c' ... 'y', 'z', 'A', 'B', 'C' ... 'Y', 'Z', '0', '1', 2' ... '8', '9', 'aa', 'ab', 'ac' ... 'az', 'aA', 'aB' ... 'aZ', 'a0' ... 'a9', 'ba' 等等(填补空白),可以选择从空字符串开始。 输入: 程序必须打印到的连续字符数。 输出: 包含每个字符串或每行一个字符串的数组 说明: 顺序无关紧要,可以根据需要先打印大写或小写字母。 输出可以返回任何可枚举的类型,不必专门是数组,尽管我怀疑打印所有组合不是最简单的方法。 的输入3将打印所有从字符串'a'(或'')至'999'的输入5最多'99999'等。

17
您应该如何安排椅子?
您会教一类学生,他们对椅子的布置有有趣的偏好。他们对椅子的布置有3个非常具体的要求: 它们大多数都以矩形排列,即使这意味着有些椅子是空的。 空椅子必须尽可能少。 它们必须尽可能“方形”。矩形度取决于矩形的宽度和高度之间的距离,越低越好。例如,矩形4x7的正方形度为3。 更具体地说,布置的“分数”是宽度和高度之间的距离加上将要空的椅子数量。 让我们举个例子。假设您有13个学生。您可以通过以下任何一种方式安排椅子: 1x13 2x7 3x5 4x4 1x13不是很方形。实际上,1和13相距12点,因此我们给此排列12点。它还有0个空椅子,所以我们加0分,使这种安排的得分为12。 2x7当然更好。2和7仅相距5,所以我们给这种安排5分。但是,如果实际上安排了两排,每排有七把椅子,那将占用14把椅子,这意味着一把椅子将是空的。因此,我们加1分,使该安排获得6分。 我们也可以做3x5。3和5相距2,所以+2分。它需要15张椅子,这意味着我们要再增加两把椅子,所以再加上2分,得到4分。 最后一个选择4x4。4和4相距0,因此我们给了+0分。4x4需要16张椅子,所以3张椅子空了,总分3。这是最佳的解决方案。 如果是平手,最佳的解决方案是空椅子少的人。 挑战 您必须编写一个程序或函数,该程序或函数需要一个整数,并为该数量的学生输出最佳的椅子布置。IO可以采用任何合理的格式。这是从1到100的任意数量学生的示例输出: 1: (1, 1) 2: (1, 2) 3: (2, 2) 4: (2, 2) 5: (2, 3) 6: (2, 3) 7: (3, 3) 8: (3, 3) 9: (3, 3) 10: (2, 5) 11: (3, 4) …
20 code-golf  math 

19
有限的康托尔对角线
给定一个N整数列表(每个整数都有N数字),输出一个因第一个数字而与第一个数字不同的数字,由于第二个数字而与第二个数字不同的数字,依此类推。 例 鉴于此列表: 1234 4815 1623 4211 数字2932的第一个数字与第一个数字的第一个数字不同,第二个数字与第二个数字的第二个数字不同,依此类推。因此,它是有效的输出。 输入项 您可以同时使用列表和N输入,也可以根据需要仅使用列表。 列表中的每个整数必须与列表的长度(N)一样多 数字不会有任何前导零 输入列表必须包含数字,而不是字符串。 您可以通过STDIN或类似方式将输入作为函数参数。 您可以假设列表的长度不超过10个元素(列表中的任何数字都不能大于2147483647)。 产出 输出不在列表中是不够的。位数必须如上所述。 您可以使用任何遵循不同数字约束的数字选择策略。 该数字不能有前导零 您可以通过输出数字STDOUT,从函数返回数字等。 测试用例 Input: 12345678 23456789 34567890 45678901 56789012 67890123 78901234 89012345 Possible output: 24680246 Input: 1 Possible output: 2 计分 这是代码高尔夫球,因此最短的答案以字节为单位。

10
实施制袋作业
一个包,也称为多集,是一个无序的集合。您可以将其称为允许重复的集合,或者称为未排序/未索引的列表(或数组)。在这个挑战中,您需要执行袋操作:加法,差,乘法,除法,计数和相等性测试。 运作方式 指定的操作可能不是常规的。 另外,将两个袋子合并为一个,保留每个值的总数 [1,2,2,3] + [1,2,4] = [1,1,2,2,2,3,4] 差异从袋子中除去另一个袋子的每个元素,或者如果没有这样的元素则不执行任何操作 [1,2,2,4] - [1,2] = [2,4] [1,2,3] - [2,4] = [1,3] 乘法将袋子中的每个元素相乘。 [1,2,3,3,4] * 3 = [1,1,1,2,2,2,3,3,3,3,3,3,4,4,4] 2 * [1,3] = [1,1,3,3] 除法是不常见的:将每n个相等的元素放入n个相等的新袋子中,不能形成n组的元素保留在袋子中。退回n个新袋子中的任何一个。 [1,1,2,2,2] / 2 = [1,2] [1,2,2,3,3,3] / 3 = [3] 计数计算可以从股息袋中生产多少个除数袋 [1,1,2,2,2,2,3,3,3] c [1,2,3] = 2 相等性测试检查两个袋子中每个元素的编号是否相同 [1,2,2,3] …

1
小狗命令
该puppy实用程序将文件名作为输入,并且完全按照您希望小狗执行的操作:将它切碎! 如何切碎 用牙齿撕开页面将输入文件换行。 用爪子撕开每一页对于每一行(不包括换行符),选择一个随机整数,n例如2 <= n <= # of characters in the line。将行拆分n为随机长度的非空非重叠子字符串。 将碎片分散在整个地板上在当前目录中,将每行的每个子字符串输出到唯一的随机文件名([a-zA-Z0-9]仅,任何一致的扩展名,包括none和length 1 <= n <= 12)。只要不干扰提交的运行,就可以覆盖当前目录中的现有文件(包括输入文件,如果它位于当前目录中)。 澄清说明 永远不会有可能耗尽所有可能的文件名的输入。 文件将仅包含可打印的ASCII(序号32-127)和换行符,并将使用UNIX / Linux样式的行尾(LF,而不是Windows样式的CRLF)。 只要每个输出文件都具有尾随换行符,就可以接受输出文件中的尾随换行符,但这不是必需的。您可以选择输入文件是否包含尾随换行符。 输入中的每一行将至少包含2个字符。 所选的随机值必须从给定的一组可能值的均匀随机分布中选择。 如果您的语言无法执行文件I / O,则可以将输入文件的内容作为输入,然后输出代表输出文件名和该文件文本的字符串对。但是,您提交的内容将不符合获奖资格。 例 参考实现: #!/usr/bin/env python3 import random import string import sys fname = sys.argv[1] with open(fname) as f: txt = f.read().rstrip().split('\n') …

4
尽早“完成工作”
背景 想象一下,您从事一项令人烦恼的工作。每天早晨,您会收到一系列应该在当天进行的任务。每个任务都有一定的持续时间,一旦开始,就必须一次性完成。您的老板不会容忍闲置,因此,如果有一些任务仍然可以在回家之前完成,则必须处理其中一项(您可以选择其中一项)。相反,如果所有其他任务都需要您加班,那么您就可以早点回家!因此,您的目标是通过明智的安排来最大程度地减少工作时间。 有趣的事实:这是懒惰的官僚调度问题的一种变体,它是NP-hard(来源)。 输入值 您有两个输入:工作日中“时间单位”的数量(正整数L)和任务集合(正整数的非空数组T,表示任务持续时间)。它们可以以任何顺序以任何合理的格式进行使用。该数组T可以包含持续时间大于的任务L,但是可以保证至少包含一个持续时间最多的任务L。 输出量 一个有效的计划是任务的一个子集S ⊆ T,从而sum(S) ≤ L,而不是在每一个任务S(计重数)的持续时间严格不止L - sum(S)。您的输出应为有效计划的最小可能总和。换句话说,您将输出您今天必须工作的最小时间单位。 例 考虑输入 L = 9 T = [3,4,4,4,2,5] 安排一天的一种方式是[4,4]:您以8个时间为单位完成两项任务,还剩下1个单元。由于没有可用的1单元任务,因此您可以回家。但是,时间表[2,5]甚至更好:您以7个时间单位工作,然后所有其余任务将以3个或更多时间单位工作。该时间表[2,4]无效,因为在工作了6个时间单位后,您仍然有足够的时间来完成3个单位的任务。最佳状态为7个单位,因此正确的输出为7。 规则和计分 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。没有时间限制,因此蛮横强制是完全可以接受的。 测试用例 这些以格式给出L T -> output。 1 [1,2] -> 1 6 [4,1] -> 5 7 [7,7,9] -> 7 9 [3,4,4,4,2,5] -> 7 20 [6,2,3,12,7,31] -> 17 42 …

21
男女序列
这个问题可能比所有这些“生成数字序列”任务都困难,因为这需要两个序列一致地工作。 真的很期待答案! 道格拉斯·霍夫施塔特(Douglas Hofstadter)在他的《哥德尔,埃舍尔,巴赫:永恒的金色辫子》一书中,里面有很多数字序列,所有这些序列都以某种方式依赖上一个术语。有关所有序列的信息,请参见Wikipedia页面。 一对真正有趣的序列是雌性和雄性序列,它们的定义如下: 为n > 0。 这是女性序列和男性序列。 您的任务是,在给定整数n作为输入的情况下n,在输出的两行中返回母序列和母序列的列表,其项的数量等于,第一行是母序列,母序列为第二。 输入和输出示例:输入:5 输出:[1, 1, 2, 2, 3] [0, 0, 1, 2, 2] 输入:10 输出:[1, 1, 2, 2, 3, 3, 4, 5, 5, 6] [0, 0, 1, 2, 2, 3, 4, 4, 5, 6] 注意:列表之间的分隔表示换行符。 这是代码高尔夫球,因此以字节为单位的最短代码获胜。另外,还要为您的代码添加解释。 排行榜 显示代码段 var QUESTION_ID=80608,OVERRIDE_USER=49561;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function …

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.