Questions tagged «code-golf»

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

6
可视化眼睛
您可能记得也可能不会记得Xeyes,它是X窗口系统附带的演示程序(据我所知,仍然附带)。其目的是在鼠标光标后画一双眼睛: 您的挑战是用ASCII艺术重新创建Xeyes。编写一个程序或函数,无论用户单击什么,它都会画出两只ASCII艺术眼(在下面指定),然后移动他们的瞳孔以指向光标的方向。 上面的GIF记录了这种非Golf的Ruby实现,可以与任何最新版本的Ruby一起运行。您可能还会发现它对于Xterm控制序列很有用。 技术指标 这是代码高尔夫球,因此以字节数最少的解决方案为准。 这是一个ASCII艺术的挑战,让你的程序必须提醒使用ASCII字符特异性,人物-,.,|,',0,空间和换行符。1 2 这是一个交互式的挑战,因此您的程序必须接受输入并实时绘制其输出。3 在程序开始接受输入之前,它应初始化至少20行20列的空白画布。除非用户单击画布,否则它不应绘制任何内容。 每当用户在画布上单击4时,程序应清除任何先前的输出,然后在画布上以最靠近鼠标光标位置的字符为中心绘制这些ASCII眼睛。5 6(以下✧表示鼠标光标,不应绘制。) .---. .---. | | | | | 0|✧|0 | | | | | '---' '---' 注意瞳孔如何“指向”光标。 每当鼠标光标在画布上移动时,程序应重新绘制瞳孔,使它们继续指向光标,例如7: ✧ .---. .---. | 0| | 0| | | | | | | | | '---' '---' 学生指点 假设我们枚举每只眼睛的内部九个字符的位置,如下所示: .---. |678| |591| …

16
可以多小?
以正整数N开头,找到最小的整数N',可以通过将N除以其一位数字(以10为底)来计算得出。每个选定的数字必须是N的除数大于1。 例子1 预期的输出为N = 230是N” = 23: 范例#2 预期的输出为N = 129528是N” = 257: 提防非最佳路径! 我们可以从129528/9 = 14392开始,但这不会导致最小的结果。如果首先除以9,我们可以做的最好的事情是: 规则 输入可以采用任何合理的格式(整数,字符串,数字数组等)。 这是代码高尔夫球,因此最短答案以字节为单位! 测试用例 1 --> 1 7 --> 1 10 --> 10 24 --> 1 230 --> 23 234 --> 78 10800 --> 1 10801 --> 10801 50976 --> 118 129500 --> …

30
弄清楚这些字符串
受此评论链启发... 我想enklact摆脱挑战,但是我不能... @ETHproductions 进行编码(v):使用包含唯一元素的小节来实现查找表。 粘贴是压缩查找表的一种非常有用的方法。例如,假设您具有以下颜色列表: red green blue yellow purple orange 如果您希望能够将一种颜色用作输入并返回其在此列表中的索引,那么显然有一种简单的方法: ["red", "green", "blue", "yellow", "purple", "orange"].index(input()) 但是有一种方法可以减少字节数: "rgbypo".index(input()[0]) 之所以有效,是因为每个字符串的第一个(或第0个)索引都是唯一的。这个例子很明显,但有时会更难一些。如果我们想为此列表创建查找表怎么办? Sweet Onion Chicken Teriyaki Oven Roasted Chicken Turkey Breast Italian BMT Tuna Black Forest Ham Meatball Marinara 在这种情况下,我们不能这样做: "SOTITBM".index(input()[0]) 因为有两个不同的输入以a开头'T',即“ Tuna”和“ Turkey”。我们必须看一个不同的索引。如果查看每个字符串的第4个索引,您会注意到它们都是唯一的。所以我们可以做... "enklact".index(input()[3]) 在这种情况下,“字符串”是“字符串”。 这导致我们面对今天的挑战... 给定字符串列表,请返回任何有效的字符串。换句话说,给定一个字符串列表,返回任何新的字符串,其中每个字母都是唯一的,并且该字符串是通过连接每个字符串的第i个字母而形成的。 如果没有有效的字符串,则您的提交必须返回一个空字符串或一致的伪造值。与往常一样,允许使用功能或完整程序,并且输入/输出格式是允许的(在合理范围内)。 每个字符串将仅包含可打印的ASCII,并且此挑战区分大小写。 这是代码问题,因此请尝试使用您选择的语言编写最短的程序! …
42 code-golf  string 

30
拼字游戏得分手
挑战: 以一串大写或小写字母作为输入(可选),并计算该字符串在英语拼字游戏中的得分。 规则: 每个字母的得分如下(即使有其他版本的游戏,也要使用该得分): 1 point: E, A, I, O, N, R, T, L, S, U 2 points: D, G 3 points: B, C, M, P 4 points: F, H, V, W, Y 5 points: K 8 points: J, X 10 points: Q, Z 字符串的分数就是所使用的每个字母的分数之和。您可能会假设您有很多可用的图块,因此,长单词以及带有许多相同字母的单词都是有效的输入。 测试用例: ABC -> 7 PPCG …

20
如何退出Vim?
Vim是用于Unix系统的出色文本编辑器,但因退出困难而臭名昭著。 编写一个完整的程序,输出该程序:q以退出Vim。然后,它应该读取一行输入,因为将给它一个bash提示(在这种情况下是成功的退出),或者是一个错误(在这种情况下有未保存的更改)。 bash提示将是这样的: E37@vimmachine: /var/override) 虽然错误是这样的: E37: No write since last change (add ! to override) 收到bash提示后,程序的工作就完成了,并且不应再提供任何输出(空格除外)。 收到错误消息后,您的程序应随机输出(即,每种可能性均被选择为非零概率)输出:q!,不保存即退出,或:x,保存并退出。 这是代码高尔夫球,因此每种语言中最少的字节会获胜!
42 code-golf 

6
ASCII迷宫渲染3000
我不喜欢打字,所以我用一种非常简单的格式画迷宫: # ##### # # # ### # # # # # # # # ##### # 它不是迷宫吗?当然,我认为所有迷宫都应看起来像3d,与这个挑战相似但不相同,以最大程度地提高迷宫感,所以我(勉强地)手动更新了迷宫,使其看起来像这样: +-----+ +-----------------------------+ |\ \ |\ \ + \ \ + \ \ \ \ \ \ +-----------------------+ \ \ \ \ \| |\ \ \ \ \ +-----------------------+ \ \ \ \ …

17
包含每个字母的第一个数字
给定一个从A到Z的单个字母(J和K除外),以书面形式输出包含该字母的最小非负整数。假设数字从不包含单词“和”,那么101“一百一”就不包含“一百一”。假设美国人(小规模)计数,那么一百万就是10^6十亿10^9。 a 1000 one thousand b 1000000000 one billion c 1000000000000000000000000000 one octillion d 100 one hundred e 0 zero f 4 four g 8 eight h 3 three i 5 five j k l 11 eleven m 1000000 one million n 1 one o 0 zero p 1000000000000000000000000 one …

29
Van Eck序列的N项
输出Van Eck序列的第N个项。 Van Eck序列定义为: 从0开始。 如果最后一项是该项的首次出现,则下一项为0。 如果上一个术语先前已发生,则下一个术语是最近一次发生的退后几步。 https://oeis.org/A181391 https://www.youtube.com/watch?v=etMJxB-igrc https://www.youtube.com/watch?v=8VrnqRU7BVU 顺序:0,0,1,0,2,0,2,2,1,6,0,5,0,2,... 测试: 输入| 输出量 1 | 0 8 | 2 19 | 5 27 | 9 52 | 42 64 | 0 编辑 首选1索引,可接受0索引;这可能会改变一些已经提交的解决方案。 请只是第N个学期。 相同(除了看到已经发布的部分),似乎代码高尔夫球手和亲密电视爱好者之间有相当大的重叠。

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 …

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 

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.