Questions tagged «code-golf»

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

22
ASCII艺术反射
在此挑战中,将为您提供一个文本块,并且您需要对文本进行反射。 输入: 要反映的字符串。文本不能作为其元素为文本行的数组提供。例如,"ab\ncd"并且['a','b','\n','c','d']是允许的,但['ab','cd']还是[['a','b'],['c','d']]没有。您可以假定所有行都具有相同数量的字符(在需要时用空格填充)。 一个布尔值,其中True指示Y反射并False指示X反射 这两个输入可以任何顺序传递。 输出: 反映的字符串。字符不会改变,只会改变位置。生成的图像块应与左上角对齐(第一行和第一列必须分别包含非空格字符)。允许尾随空格(在任何行上)。 测试用例: False o / --|/ | / \ / o /|-- | \ / True o / --|/ | / \ / \ | --|/ o / True text text False text txet True P P C G G C P P False …

12
7段差异
我认为这里的大多数人都知道数字的7段显示是什么: _ _ _ _ _ _ _ _ | | | _| _| |_| |_ |_ | |_| |_| |_| | |_ _| | _| |_| | |_| _| 我们可以将两个数字之间的7段差(7SD)定义为需要切换以从一个切换到另一个的段数。例如,介于和之间的7SD 为5(需要切换三个水平段和下面两个垂直段),而介于6和8之间的7SD为1。12 此外,我们可以将两个数字之间的7SD定义为其相应数字之间的7SD之和。如果一个数字长于另一个数字,我们假设它们是右对齐的,然后添加显示更大数字的其他最高有效数字所需的段数。例如,考虑介于12345和之间的7SD 549: x: 1 2 3 4 5 y: 5 4 9 7SD: 2+5+2+0+1 = 10 给定n,您的任务是计算介于n和n + …

24
后置数组排序
输入: 包含三个整数的数组:0,1并且2以任意顺序(即[2, 0, 1]) 长度大于等于2的字符串仅包含字母(大写和小写)和数字(即a1B2c3) 输出: 基于数组,我们对字符串进行排序并输出。 这是如何运作的? 该阵列表示的顺序的优先级a-z,A-Z并且0-9,所述第一感0; 第二存在1; 第三是2。 然后可以根据该字符串对字符串的各个字符进行排序。 例: 数组: [2, 0, 1] 串: a1B2c3 基于数组,我们知道我们的顺序优先级是0-9a-zA-Z。 基于此,我们可以转换并输出字符串:123acB。 挑战规则: 对于数组,您可以选择使用0索引或1索引输入,[3, 1, 2]如果您更喜欢使用1索引的数组,那么也可以使用有效输入。 字符串(输入和输出)仅包含有效字符:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789。 如果你的语言不支持数组(或者,如果你选择),您可以自由使用字符串而非数组的第一个参数(即012,[0,1,2]等)。 一般规则: 这是代码高尔夫球,因此最短答案以字节为单位。 不要让代码高尔夫球语言阻止您发布使用非代码高尔夫球语言的答案。尝试针对“任何”编程语言提出尽可能简短的答案。 标准规则适用于您的答案,因此允许您使用STDIN / STDOUT,具有适当参数的函数/方法,完整程序。你的来电。 默认漏洞是禁止的。 如果可能的话,请添加一个带有测试代码的链接。 另外,如有必要,请添加说明。 测试用例: [2, 0, 1] & a1B2c3 -> 123acB [2, 1, 0] & aAaA909UuHWw9gh2 -> …

21
与邻居交换位
任务描述 给定一个整数,将其第(2k-1)个和第2k个最低有效位交换为所有k> 0的整数。这是OEIS中的序列A057300。 (假定该数字具有“无限多个”前导零。实际上,这仅意味着在奇数长度的数字前添加一个0位。) 这是code-golf,所以最短的代码(以字节为单位)获胜。 测试用例 0 -> 0 1 -> 2 9 -> 6 85 -> 170 220 -> 236 1827 -> 2835 47525 -> 30298

6
计算RFC 2550时间戳
RFC 2550是一个讽刺性提案(于1999年4月1日发布),其时间戳可以节省空间的ASCII表示形式,可以支持任何日期(甚至包括在Universe开始之前的日期以及在Universe预计结束之后的日期)。用于计算符合RFC 2550时间戳是作为算法如下(注意:所有范围包括开始,但排除端- 0至10000的所有的装置n,其中0 <= n < 10000): 年份格式 0到10,000年:一个四位数的十进制数字,在左边用零填充。 10,000到100,000年:5位数的十进制数字,以字符A为前缀。 100,000至10 30年:年份的十进制数字,以大写ASCII字母为前缀,其英文字母的索引等于十进制年份的位数,减5(B代表6位数字的年份,C代表7的年份)位数年份等)。 10 30到10 56年:与10,000到10 30相同的格式,以A开头的字母,并^在字符串前面加上插入号()(因此,10 30表示为^A1000000000000000000000000000000,10 31表示为通过^B10000000000000000000000000000000)。 10 56到10 732年:年份以两个插入符号和两个ASCII大写字母为前缀。大写字母组成一个以26为基数的数字,代表年份中的数字数量,减去57。 10 732年及以后:使用10 56到10 732的相同格式,并在必要时通过添加附加的脱字号和大写字母来扩展格式。 BCE年(0年之前):计算年的绝对值的年字符串。然后,将所有字母替换为其以26为底的补码(A <-> Z,B <-> Y等),将所有数字替换为其以10为底的补码(0 <-> 9、1 <-> 8,等),并用感叹号(!)替换插入符号。如果年份字符串是4位或更少(即-1到-10,000),请在正斜杠(/)之前加上。如果年份字符串未以正斜杠或感叹号作为前缀,请在星号(*)前面加上。 月,日,小时,分钟和秒:由于这些值最多只能是2位数字,因此它们按重要性的降序简单地附加在年份字符串的右边,并在必要时用零填充2位数字的字符串。 更高的精度:如果需要更高的精度(以毫秒,微秒,纳秒等形式),则将这些值用0到3位数字进行左填充(因为每个值都是1/1000前一个值,因此最多为999)。并以重要性从小到大的顺序附加到时间戳的末尾。 这种格式的优点是词法排序等效于相应时间戳的数字排序-如果时间A在时间B之前,那么当应用词法排序时,A的时间戳将在B的时间戳之前。 挑战 给定任意长的数字列表(例如[year, month, day, hour, minute, second, millisecond],按重要性从高到低的顺序对应于时间值),请输出相应的RFC 2550时间戳。 规则 解决方案必须适用于任何给定的输入。唯一的限制应该是时间和可用内存。 输入可以采用任何合理,方便的格式(例如,数字列表,字符串列表,由单个非数字字符分隔的字符串等)。 …
26 code-golf  string  date 

22
高尔夫文字成DNA
文字转DNA高尔夫 挑战 将输入转换为DNA输出。 算法 将文本转换为ASCII码点(例如codegolf-> [99, 111, 100, 101, 103, 111, 108, 102]) 将ASCII码串在一起(例如99111100101103111108102) 转换为二进制(例如10100111111001101001011010001000011001101011011110000110010111111011000000110) 将0s 填充到末尾以形成偶数个字符(例如101001111110011010010110100010000110011010110111100001100101111110110000001100) 更换00用A,01用C,10用G,并11用T(例如GGCTTGCGGCCGGAGACGCGGTCTGACGCCTTGTAAATA) 输出量 测试用例 codegolf > GGCTTGCGGCCGGAGACGCGGTCTGACGCCTTGTAAATA ppcg > GGCTAATTGTCGCACTT } > TTGG (padding) 技术指标 这是代码高尔夫 您的程序必须在输入中接受空格。 您的程序必须适用于codegolf。

30
最常用的词是什么?
最常用的词是什么? 给定一个句子,您的程序必须遍历整个句子,计算每个单词的出现频率,然后输出最常用的单词。由于句子没有固定的长度,因此可能会很长,因此您的代码必须尽可能短。 规则/要求 每个提交应该是完整的程序或功能。如果它是一个函数,则只需将函数调用添加到程序底部即可使其可运行。其他任何内容(例如C中的标头)都必须包括在内。 您的语言必须有免费的口译/编译器。 如果可能,请提供指向可以测试您的程序的站点的链接。 您的程序不得向写入任何内容STDERR。 您的程序应从STDIN(或使用您语言中最接近的替代语言)输入。 禁止出现标准漏洞。 你的程序必须是不区分大小写(tHe,The和the所有有助于计数the)。 如果没有最常见的单词(请参见测试案例3),则您的程序应不输出任何内容。 “单词”的定义: 您可以通过在空格处分割输入文本来获得单词列表。输入将永远不包含任何其他类型的空格,而不是普通空格(特别是没有换行符)。但是,最后的单词应仅包含字母数字(az,AZ,0-9),连字符(-)和撇号(')。您可以通过在拆分单词之前删除所有其他字符或将它们替换为空格来实现此目的。为了保持与规则的先前版本兼容,不需要包括撇号。 测试用例 The man walked down the road. ==> the ----- Slowly, he ate the pie, savoring each delicious bite. He felt like he was truly happy. ==> he ----- This sentence has no most frequent word. ==> …

6
连接素数
挑战: 您将得到一个仅包含数字的字符串。您的任务是输出必须连接形成字符串的最小素数。如果这不可能,则输出0。 测试用例: 输入->输出: 252 -> 3 235 -> 2 92 -> 0 31149 -> 2

2
游程编码中的循环
考虑使用1和的一些二进制序列2,例如: 1, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1 ... 让我们写下其运行长度: 1, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1 ... _ _ ____ ____ _ _ _ ____ 1, 1, 2, 2, 1, 1, 1, 2, ... 在这种情况下,我们碰巧获得了另一个二进制序列。当然,不能保证(例如,如果我们重复该过程,则第三次运行将是3),但是让我们假设我们这样做了。 现在的问题是,我们是否可以找到一个序列,以便多次应用这种游程编码可以使我们返回原始序列?对于1的循环长度(即此变换的固定点),我们发现了Oldenburger-Kolakoski序列(OEIS条目A0000002): 1, 2, 2, …

6
列举押韵方案
“押韵方案”是ato 的字母字符串,以z使字符的首次出现按从()开始的升序排列(无间隔)a。例如(标记为首次出现): abccdbebdcfa ^^^ ^ ^ ^ 长度的押韵方案的数目N由贝尔数 给出B(N)。(OEIS A000110) 挑战 您的任务是实现这些押韵方案的枚举,即从整数到押韵方案的双射映射。您会得到一个正整数N <= 26,以及一个非负整数0 <= i < B(N)。或者,您可以使用range 1 <= i <= B(N)。您应该输出一个length的押韵方案N,以使每一个i产生不同的字符串。 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行参数或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。 您可以使用大小写字母(一致)。 您的代码必须能够处理在合理的时间的任何有效输入(例如不超过几个小时了N = 26,最坏的情况下i)。N即使在慢速语言中,这也应允许解决方案以小比例扩展(对于小底数),但禁止解决方案以i(即B(N))线性扩展。特别是,这意味着您不能仅遍历所有有效长度的韵律方案,N直到放弃该i方案为止。 适用标准代码高尔夫球规则。 例子 方案的确切分配i(即给定方案的顺序N)由您决定。但是,如果您选择了字典顺序,则您的解决方案应对应于下表(-表示无效输入): N\i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 a - …

3
残数系统
就大量挑战而言,我认为这可能很有趣。 在此挑战中,我们将使用残数系统(RNS)对大整数执行加法,减法和乘法。 什么是RNS RNS是人们开发用于识别整数的多种方法之一。在该系统中,数字由一系列残差表示(它们是模运算后的结果(即整数除法后的余数))。在此系统中,每个整数都有许多表示形式。为了使事情简单,我们将限制事情,以便每个整数都唯一表示。我认为用一个具体的例子来描述正在发生的事情比较容易。 让我们看一下前三个质数:2、3、5。在RNS系统中,我们可以使用这三个数来唯一表示任何小于2 * 3 * 5 = 30的残数。采取21: 21小于30,因此我们可以使用将2、3和5修改后的结果来表示它(即,整数除以2、3和5之后的余数) 我们将使用以下整数序列来标识21: 21〜{21 mod 2,21 mod 3,21 mod 5} = {1,0,1} 因此,在我们的RNS系统中,我们将使用{1,0,1}而不是“ 21”。 通常给定整数n,我们将n表示为{ n mod 2,...,n mod p_k },其中p_k是最小素数,因此n小于等于或等于p_k的所有素数的乘积。 另一个例子,假设我们有3412。在这里我们需要使用2,3,5,7,11,13,因为2*3*5*7*11*13=30030而2*3*5*7*11=2310这太小了。 3412〜{3412 mod 2,3412 mod 3,3412,mod 5,...,3412 mod 13} = {0,1,2,3,2,6} 您会注意到,使用此系统,我们可以相对轻松地表示非常大的数字。使用{1,2,3,4,5,6,7,8,...}残基,我们可以表示最多{2,6,30,210,2310,30030,510510,9699690 ...}分别。(这是系列) 我们的任务 我们将使用这些残基对大数进行+,-和*。我将在下面描述这些过程。现在,这里是输入和输出规格。 输入项 您将通过stdin或function参数获得两个(可能非常大)的数字。它们将以基数为10的字符串给出。 为了进一步概述问题,我们将第一个输入n称为第二个输入m。假设n> m> …

30
将数字相加,将数字取反
给定一个数字> 0,输出所有位(1 .. n)串联并取反的和,然后将它们加起来。例如,当n = 6时: 数字1到6串联在一起: 123456 反转: 654321 将它们加在一起将得到:777777。另一个示例是n = 11: 1 2 3 4 5 6 7 8 9 10 11 > 1234567891011 和 11 10 9 8 7 6 5 4 3 2 1 > 1110987654321 将它们加在一起将得到2345555545332。这也称为A078262。 最短的代码胜出!

30
正负顺序
正负顺序 正负序列是从两个种子开始的序列,a(0)而b(0)。该序列的每次迭代都是该序列的前两个成员的加法和减法。即a(N) = a(N-1) + b(N-1)和b(N) = a(N-1) - b(N-1)。 目的产生无限的正负序列或K给出的第一步K。您可以使用给出K第一步的无限输出程序,生成器或函数/程序来执行此操作。输出顺序无关紧要,只要它是一致的即可。(即,b(K) a(K)或a(K) b(K),之间使用一些非数字,非换行符。)输出必须以输入开头。 测试用例 对于输入10 2(为a(0) b(0),这是第一个K方法(或无限方法的一个子节)的可能输出: 10 2 12 8 20 4 24 16 40 8 48 32 80 16 96 64 160 32 192 128 320 64 384 256 640 128 768 512 1280 256 1536 1024 2560 …

2
口红“ quine”
任务 以单个Unicode字符作为输入。 以也符合该规范的相同语言输出程序,但不包含输入字符。 如果你的程序与输入运行一个,然后输出程序,然后用输入运行b,程序就输出被允许的包含字符一个。但是,仍然不允许b出现在该程序中。换句话说,仅禁止输入程序的最新版本。 无论标题怎么说,都适用标准的奎因规则。 最短的程序获胜。程序必须至少一个字节长。 例 如果程序是ABCD。(#是注释) > slangi "ABCD" A EBCD # "FBCD" "JGGJ" "UGDKJGDJK" are all OK > slangi "EBCD" C ABGD # "EBGD" "UIHDAIUTD" are all OK > slangi "ABGD" B AFCD > slangi "AFCD" Z ABCD slangi虚拟语言的口译员在哪里。

6
1 + 1 = 10,1 + 2 = 3
在以10为底和以2为底的基础上编写一个函数或程序,使其无法执行简单的算术运算(加,减,乘和除)。 该函数将以数学表达式作为输入,并以正确的底数输出正确的结果。输入的n数字将由一个或多个运算符(+ - * /)分隔。 如果所有输入值仅包含0和1,则将所有值视为二进制。如果至少一位数字为2-9,则所有值均被视为以10为底。 规则: 您可以假设数字之间只有一个运算符(10*-1不会出现) 您可以假设没有括号。 普通运算符优先级(如果您有疑问,请尝试在Google计算器中使用表达式)。 您不能假设只会有整数 输入或输出中将没有前导零 您可以假设只会提供有效的输入 您可以假设所有输入值均为正(但减号运算符可能使负输出成为可能,1-2=-1和10-100=-10) 不接受REPL 您可以选择将输入作为单独的参数或作为单个参数,但是输入必须以正确的顺序进行。 也就是说,用户可以代表1-2与输入参数1,-,2,但不1,2,-。 您必须接受+ - * /输入中的符号,不能接受plus,minus等等。 您必须支持浮点值(或不超过您的语言的最大限制,但是不支持仅整数)。 eval 被接受 例子: 1+1 10 1010+10-1 1011 102+10-1 111 1+2+3 6 10*10*10 1000 11*11*11 11011 10*11*12+1 1321 10.1*10.1 110.01 20.2*20.2 408.04 10/5 2 110/10 11 Also accepted (optional …

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.