编程拼图和代码高尔夫

编程益智爱好者和代码高尔夫球手的问答

30
法国车牌
沙盒 法国车牌 法国车牌按特定顺序的数字和字母顺序排列:AB-012-CD 挑战 编写一个程序或函数,以给定的编号输出相应的法国车牌号。您的程序不应处理链接页面中指定的任何特殊情况。它应该能够生成所有26*26*1000*26*26 => 456 976 000可能的图版,或者在您的语言可以支持的范围内。 编号系统如下: AA-000-AA至AA-999-AA(数字优先); AA-000-AB至AA-999-AZ(然后是最后一个字母); AA-000-BA至AA-999-ZZ(然后是右边的第一个字母); AB-000-AA至AZ-999-ZZ(然后是最后一个字母在左侧); BA-000-AA至ZZ-999-ZZ(然后是左边的第一个字母)。 输入项 车牌号的索引为整数 输出量 对应的法国车牌号 附加信息 字母必须大写 您可以同时使用基于0和基于1的索引来生成模板(这意味着AA-000-AA可以对应于0或1,假设所有其他测试用例都使用相同的索引。 这是代码高尔夫球,每种语言的最短答案胜出! 测试用例(基于0的索引) 0 -> AA-000-AA 1 -> AA-001-AA 999 -> AA-999-AA 1000 -> AA-000-AB 675 999 -> AA-999-ZZ 676 000 -> AB-000-AA 456 975 999 -> ZZ-999-ZZ

28
选框标志字母
每天,您都会在带有活动字母的字幕标志上放一个新单词,只购买您需要写的字母。只要有可能,您都可以重复使用购买的字母来输入较早的单词。给定您要每天写的字,输出您每天购买的字母。 例 Input: ['ONE', 'TWO', 'THREE', 'SEVENTEEN'] Output: ['ENO', 'TW', 'EHR', 'EENSV'] 第1天:开始时你有没有字母,所以写的ONE,你买它的所有字母E,N,O。 第2天:第二天,您要忍受TWO (取下ONE)。您已经有一个Ofrom ONE,因此您购买了一个额外的TW。 第3天:至此,您有了ENOWT。要写 THREE,你需要EHR。请注意,您E除了需要购买一台之外,还需要购买另一台。 第4天:要写作SEVENTEEN,您需要E共有4 个,而您已经有2个(而不是3个!),因此您又买了2个。您也有T和之一N,因此您可以购买剩余的字母: EENSV。 在此示例中,我们输出了按字母顺序排序的字母,但是您可以按任何顺序输出它们。 输入:非空字母字符串的非空列表A-Z。如果愿意,可以使用小写字母。字符列表适用于字符串。 输出:输出或打印您每天需要购买的其他字母。一天中的字母可以以任何顺序输出,但是日期必须以正确的顺序排列。 每天的来信应与其他日期分开,以便您知道一天的结束时间。在一天之内或几天之间,尾随和/或前导分隔符都可以。请注意,一天可能没有购买任何字母,这应该反映在输出中(空格或空行也可以,即使是最后一天也可以)。 测试用例 ['ONE', 'TWO', 'THREE', 'SEVENTEEN'] ['ENO', 'TW', 'EHR', 'EENSV'] ['ONE', 'TWO', 'ONE', 'THREE'] ['ENO', 'TW', '', 'EHR'] ['ABC', 'AABC', 'ABBC', 'ABCC', 'AABBCC'] ['ABC', 'A', 'B', …
41 code-golf  string 

20
计算两个数字的均值
免责声明:均值由我弥补 将个数的算术平均值定义为 将个数的几何平均值定义为 个数 的调和平均值定义为 将个数的二次均值定义为 均值()定义如下:定义四个序列()为ñnn中号1个(x1个,。。。,Xñ)= x1个+ x2+。。。+ xññM1(x1,...,xn)=x1+x2+...+xnnM_1(x_1,...,x_n)=\frac{x_1+x_2+...+x_n}{n}ñnn中号0(x1个,。。。,Xñ)= x1个X2。。。Xñ--------√ñM0(x1,...,xn)=x1x2...xnnM_0(x_1,...,x_n)=\root{n}\of{x_1x_2...x_n}ñnn中号− 1(x1个,。。。,Xñ)= n1个X2+ 1X2+ 。。。+ 1XñM−1(x1,...,xn)=n1x2+1x2+...+1xnM_{-1}(x_1,...,x_n)=\frac{n}{\frac{1}{x_2} + \frac{1}{x_2} + ... + \frac{1}{x_n}}ñnn中号2(x1个,。。。,Xñ)= x21个+ x22+ 。。。+ x2ññ--------------√M2(x1,...,xn)=x12+x22+...+xn2nM_2(x_1,...,x_n)=\root\of{\frac{x_1^2+x_2^2+...+x_n^2}{n}}中号中号MMM_M一种ķ,bķ,çķ,dķak,bk,ck,dka_k, b_k, c_k, d_k一种0= M1个(x1个,。。。,Xñ),b0= M0(x1个,。。。,Xñ),C0= M− 1(x1个,。。。,Xñ),d0= M2(x1个,。。。,Xñ),一种k + 1= M1个(一个ķ,bķ,çķ,dķ),bk + 1= M0(一个ķ,bķ,çķ,dķ),Ck + 1= M− 1(一个ķ,bķ,çķ,dķ),dk + 1= M2(一个ķ,bķ,çķ,dķ)a0=M1(x1,...,xn),b0=M0(x1,...,xn),c0=M−1(x1,...,xn),d0=M2(x1,...,xn),ak+1=M1(ak,bk,ck,dk),bk+1=M0(ak,bk,ck,dk),ck+1=M−1(ak,bk,ck,dk),dk+1=M2(ak,bk,ck,dk)a_0=M_1(x_1,...,x_n),\\b_0=M_0(x_1,...,x_n),\\c_0=M_{-1}(x_1,...,x_n),\\d_0=M_2(x_1,...,x_n),\\ a_{k+1}=M_1(a_k,b_k,c_k,d_k),\\b_{k+1}=M_0(a_k,b_k,c_k,d_k),\\c_{k+1}=M_{-1}(a_k,b_k,c_k,d_k),\\d_{k+1}=M_2(a_k,b_k,c_k,d_k) 所有四个序列收敛到相同的数字。中号中号(x1个,X2,。。。,Xñ)MM(x1,x2,...,xn)M_M(x_1,x_2,...,x_n) 例 …
41 code-golf  math 

12
读出C变量声明
背景 C语言中的变量声明语句由三部分组成:变量的名称,其基本类型和类型修饰符。 有三种类型修饰符: 指针*(前缀) 数组[N](后缀) 功能()(后缀) 您可以在括号内指定一个函数参数列表,但是为了解决这一难题,让我们忽略它而只使用它()(从技术上讲,这意味着“该函数可以接受任何类型的参数”)。 读取符号的方法如下: int i; // i is an int float *f; // f is a pointer to a float my_struct_t s[10]; // s is an array of 10 my_struct_t int func(); // func is a function returning an int 问题是我们可以将所有这些混合使用以形成更复杂的类型,例如数组数组或函数指针数组或指向指针数组的指针: int arr[3][4]; // arr …
41 code-golf  parsing  c  syntax 

27
像巴比伦人一样数数
挑战 给定输入的巴比伦数字的ASCII表示,以西方阿拉伯数字输出数字。 巴比伦数字系统 巴比伦人如何计算?有趣的是,他们将Base 60系统与Base 10系统一起使用。让我们首先考虑系统的unit列: 巴比伦人只有三个符号:(T或者,如果您可以渲染它:)𒐕代表1,<(或者,如果您可以渲染它:)𒌋代表10,和\(或者,如果您渲染它:)则𒑊代表零。 注意:从技术上讲,\(或𒑊)不为零(因为巴比伦人没有“零”的概念)。后来发明了“零”,所以后来又\添加了一个占位符以防止歧义。但是,就此挑战而言,将其视为\零就足够了 因此,在每一列中,您只需将符号的值相加即可,例如: <<< = 30 <<<<TTTTTT = 46 TTTTTTTTT = 9 \ = 0 每列中不得超过五个<或超过九个T。\将始终单独出现在列中。 现在,我们需要扩展它以添加更多列。这与任何其他基数60完全相同,在此基础上,您将最右边的列的值乘以,将左边的一乘以60 1,将左边的一乘以60 2,依此类推。然后,您将每个值相加以获得数字的值。60060060^0601个60160^160260260^2 列将由空格分隔以防止歧义。 一些例子: << <TT = 20*60 + 12*1 = 1212 <<<TT \ TTTT = 32*60^2 + 0*60 + 4*1 = 115204 规则 您可以自由接受ASCII输入(T<\)或Unicode输入(𒐕𒌋𒑊) 输入的数字将始终小于10710710^7 该<旨意始终是左边的T每列S …

9
保留的JavaScript
如2015年的ECMAScript的,JavaScript有33个保留关键字,诸如break,const和new,以及10个日后保留关键字,如let和await。 您的任务是在编写功能性JavaScript代码3的同时,将最大数量的连续1个不同的保留关键字2链接在一起。 连续保留关键字-保留关键字,仅由空格和/或括号和/或花括号分隔。 保留关键字- 自ECMAScript 2015起的任何保留或将来保留的关键字。较早的标准中保留的关键字不包括在内,下面列出了允许的关键字的完整列表。 功能代码-您的代码应该运行(必要时声明运行时),最终停止运行,并且不会引发任何运行时错误。 如果您的代码需要特定的运行时,则在给定环境中,使用的保留关键字不得为空。 保留关键字列表 显示代码段 await break case catch class const continue debugger default delete do else enum export extends finally for function if implements import in instanceof interface let new package private protected public return static super switch this throw try typeof var void …

21
实现Malbolge的“疯狂”运营商
Malbolge编程语言的许多独特功能之一是其高度直观的OP运算符,在文档和源代码中仅称为“ op”,而通常称为“ crazy”运算符。正如该语言的创建者本·奥尔姆斯特德(Ben Olmstead)在其文档中所描述的那样:“ 不要寻找模式,它就在那里。” op是“ tritwise”运算符-它对两个自变量的相应三进制数进行运算。对于每个trit(三进制位),op的结果由以下查找表给出: a op(a,b) 0 1 2 +------- 0 | 1 0 0 b 1 | 1 0 2 2 | 2 2 1 例如,要进行计算op(12345, 54321),请首先在三进制中写出两个数字,然后在表中查找每对三叉戟: 0121221020 (12345_3) op 2202111220 (54321_3) -------------- 2202220211 (54616_3) 最后重要的一点是在Malbolge所有值都是10个trits宽,所以输入值应该用零到10的宽度被填充(例如,op(0, 0)是1111111111在三元)。 您的任务是取两个0≤ a,b<59049的整数作为输入,并输出的整数值op(a,b)。 测试用例(格式为a b op(a,b)): 0 0 29524 1 …
41 code-golf  number 

30
解码字符串
这是我对ppcg的第一个挑战! 输入项 由两个不同的ASCII字符组成的字符串。例如 ABAABBAAAAAABBAAABAABBAABA 挑战 任务是按照以下规则解码此字符串: 跳过前两个字符 将字符串的其余部分分成8个字符的组 在每个组中,0如果该字符与原始字符串的第一个字符相同,则替换为每个字符,1否则为 现在每个组代表一个字节。将每个组从字节字符代码转换为字符 连接所有字符 例 让我们解码上面的字符串。 AB AABBAAAA AABBAAAB AABBAABA ^^ ^ ^ ^ | | | | | \---------|---------/ | | Skip Convert to binary 请注意,这A是原始字符串中的第一个字符,B第二个字符。因此,替换每个A与0每个B有1。现在我们获得: 00110000 00110001 00110010 这是[0x30, 0x31, 0x32]二进制的。这些值["0", "1", "2"]分别表示字符,因此最终输出应为012。 计分 当然,这是code-golf,这意味着使您的代码尽可能短。分数以字节为单位。 约束和IO格式 适用标准规则。以下是一些其他规则: 您可以假设输入有效 输入字符串完全由两个不同的字符组成 前两个字符不同 输入字符串的最小长度为2个字符 …
41 code-golf  string 

27
自我成长编码编码编码编码
编写一个程序(或函数)(我们称其为P1),然后在运行时输出另一个相同语言的程序P2,并且比P1长1个字节。 程序P2运行时,应输出比P2长1个字节的第三个程序P3。P3必须输出比P3长一个字节的程序P4,依此类推。P5,P6,...,P∞相同。 程序链应无限期运行,或到达解释器不再处理的地方(但必须保留为该语言中理论上有效的程序) 规则 禁止标准漏洞 链中的所有程序都应使用一种语言 没有输入。输出转到标准输出或函数返回值 该程序必须在一段时间后结束。在特定时间点后停止生成输出但永不终止的程序不符合条件 每种语言中以字节为单位的最短程序P1获胜!
41 code-golf  quine 

9
面向移位的编程
通过获取字符串中每个字符的字节值,计算并将结果转换回一个字符,可以将字符串移位一个数字。nc(c + n) mod 256 例如,移动"ABC123"1会导致"BCD234",移动10 in "KLM;<=",并移动255 in "@AB012"。 任务 随便挑选尽可能多的数字n,0 < n < 256并编写一个将字符串作为输入的程序或函数, 当源代码不变时,返回不变的字符串,但是 返回n源代码移位后移位的字符串n。 规则 您提交的分数是受支持的n分数,分数越高越好。因此,最高分数为255。 您的提交必须至少支持一个班次,因此最低分数为1。 如果出现平局,则以较短的程序为准。 所有转移的程序都必须使用相同的语言。

21
轻松记住数字
容易记住但理论上不易制作的数字 您面临的挑战是用任何一种语言生成符合以下条件的统一随机数的程序/功能: 长度为5位数字 有两个单独的重复数字对 一组重复的数字位于开头或结尾,并且数字彼此相邻 奇数被另一对数字包围 两个数字对和另一个数字应该都是唯一的 您的程序可以自行决定是否支持带前导零的数字。如果支持前导零,则必须将其包括在输出中:06088,而不是6088。如果不支持前导零,则根本不应生成诸如06088的数字。 测试用例 接受的输出: 55373 55494 67611 61633 09033 99757 95944 22808 65622 22161 不接受的输出: 55555 77787 85855 12345 99233 12131 abcde 5033 在此pastebin链接中可以找到更多可接受的测试用例。 这些是用这个python程序制作的: 随机导入 对于我在范围(100)中: 如果random.randint(0,100)> = 50:#将对在开始时接触如果为true temp = []#工作数组 temp.append(random.randint(0,9))#附加随机数字 temp.append(temp [0])#再次追加相同的数字 x = random.randint(0,9) 而x == temp [0]: x …

11
在十进制干草堆中找到二进针
挑战 您得到: 一个非空的,未排序的正整数列表h(干草堆) 正整数n(针) 您的任务是返回h的排列的所有唯一十进制串联的列表,其二进制表示形式包含n的二进制表示形式。 例子 h = [1,2,3] n = 65 只有一个匹配的串联,因此预期的输出为[321]。 h = [1,2,3] n = 7 这次,存在包含二进制模式111的三个串联。预期输出为[123, 231, 312]。 h = [12,3] n = 7 只有两个排列可用,并且都匹配。预期输出为[123, 312]。 h = [1,2,2] n = 15 唯一匹配的串联是122(二进制1111010,包含1111),因此预期输出是[122]。需要注意的是两个置换实际上导致122,但你是不是允许输出[122, 122]。 澄清和规则 您可以将指针作为整数(65),代表十进制值"65"的字符串()或代表二进制值的字符串("1000001")。 您可以将干草堆当作本机数组/对象/整数集([11,12,13]),本机数组/对象/字符串集代表十进制值(["11","12","13"])或带分隔符的十进制值字符串("11 12 13"或"11,12,13")。您也可以选择使用数字数组(例如[[1,1],[1,2],[1,3]])作为变体。 输出必须遵循上述针对干草堆的格式之一,但不一定要相同。 您不应该处理最高十进制连接数大于语言中可表示的最高无符号整数的干草堆。 除此之外,您的代码理论上应该支持任何输入-假设有足够的时间和内存。 这是SPARTA! code-golf,所以最短答案以字节为单位! 测试用例 Haystack …

30
像兔子一样跳过!
给定任何合理格式的非负整数列表,请对其进行迭代,并跳过与您踩到的每个整数一样多的元素。 这是一个工作示例: [0, 1, 0, 2, 5, 1, 3, 1, 6, 2] | [] ^ First element, always include it [0, 1, 0, 2, 5, 1, 3, 1, 6, 2] | [0] ^ Skip 0 elements [0, 1, 0, 2, 5, 1, 3, 1, 6, 2] | [0, 1] ^ …

30
这最终将停止……
给定输入字符串S,S按以下方式打印,后跟非空分隔符: 步骤1:S有1/2机会被打印,并且有1/2程序终止的机会。 步骤2:S有2/3机会被打印,并且有1/3程序终止的机会。 步骤3:S有3/4机会被打印,并且有1/4程序终止的机会。 … 步骤n:S有n/(n+1)机会被打印,并且有1/(n+1)程序终止的机会。 笔记 输入字符串仅包含您语言的字符串类型可接受的字符。 可以使用任何非空分隔符,只要它始终相同即可。预期S在程序终止前的最后一次打印之后将打印分隔符。 该程序有1/2机会在打印任何内容之前终止。 尾随新行是可以接受的。 您的答案必须真正地尝试遵守所述的概率。显然,当n大时,这将越来越不正确。正确解释您的答案中的概率是如何计算的(以及为什么它们尊重规范,而忽略伪随机和大数问题)就足够了。 计分 这是代码高尔夫球,因此最短的答案以字节为单位。

25
像热一样将其排序
如这个问题所述: 由David Morgan-Mar设计的Dropsort是线性时间“排序算法”的一个示例,该算法可以生成一个列表,该列表实际上是经过排序的,但仅包含一些原始元素。任何不小于其最大元素数量的元素都将从列表中删除并丢弃。 要使用他们的测试用例之一,请输入{1, 2, 5, 4, 3, 7}yields {1, 2, 5, 7}as 4和as ,3因为它们小于先前的“ sorted”值5。 我们不想“排序”算法,我们希望它们成为真正的交易。因此,我希望您编写一个程序,给定一个数字列表,该程序输出一个DropSorted列表列表(作为完整的排序算法,我们需要合并这些列表,但是 之前已经完成了合并两个排序列表的操作,并且要求您再次执行此操作几乎是在问两个问题,因此,这个问题专门是我们完整的DropSort的“拆分”步骤。 但是,清单的安排和内容至关重要。程序的输出必须等同于DropSort的输出,然后是丢弃值的DropSort的输出,依此类推,直到只有一个排序链列表为止。同样,借用现有的测试套件(并添加另外两个): Input -> Output {1, 2, 5, 4, 3, 7} -> {{1, 2, 5, 7}, {4}, {3}} {10, -1, 12} -> {{10, 12}, {-1}} {-7, -8, -5, 0, -1, 1} -> {{-7, …

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.