Questions tagged «code-golf»

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

2
赛马的一天
背景 上世纪90年代末/ 00年代初,Flash Web Design非常酷,以至没有一个完整的Flash网站或至少没有动画小部件的人都无法生存,我受雇在Flash / Actionscript中开发“赛马查看器”,以80年代电子游戏风格的动画形式呈现,因此网站的访问者不仅可以阅读比赛结果,还可以通过动态动画观看比赛结果!哇!令人印象深刻! 他们向我提供了一个CSV文件,其中包含所有比赛的详细信息:开始和到达的顺序,赛马名称,车手姓名,奖品等。我的Flash应用程序为每次比赛读取该文件,并显示上述动画。 如今,Flash支持已大大下降,因此我们必须恢复为ascii-art! 任务 您的任务是创建一个完整的程序或函数,以从标准输入中读取CSV格式的比赛数据,并输出该比赛的ascii艺术表示形式,如下例所示。 输入 带有2个字段的CSV数据:1)开始顺序;2)到达完成时间的时间格式1.13.4(1分钟,13秒,十分之四秒)。如果时间报告R表明该马由于事件,跌倒或其他原因而退赛(未完成比赛)。注意:两匹或更多匹马的到达时间可能相同,在这种情况下,它们共享到达位置。 1,1.13.4 2,1.13.0 3,R 4,1.12.7 5,1.11.5 6,1.13.4 7,1.12.1 8,1.17.9 输出值 对于每个CSV行,输出如下所示的赛马场: 1_|______________4(1.13.0)___________________________ 赛马场由以下人员组成: 1 这是马匹的起跑顺序。 _|_垫片在哪里|,终点线在哪里。 50 x _表示十分之一秒。 5(1.13.4)即到达位置,然后是到达时间。这必须考虑到马之间的时差。例如:您将第一个到达的时间定位在终点线上1.11.5,第二个到达的时间1.12.1,相差1.12.1 - 1.11.5 = 6十分之一秒,因此第二匹马应定位在第6个字符上,依此类推。如果时间差超过十分之一秒(或5秒),则必须将马匹放在最后。如果马是R(退缩),则相同。 因此,上面CSV数据的整个运行轨道应为: F=Finish line 1_|____________________________5(1.13.4)_____________ 2_|______________4(1.13.0)___________________________ 3_|__________________________________________________R 4_|___________3(1.12.7)______________________________ 5_1(1.11.5)__________________________________________ 6_|____________________________5(1.13.4)_____________ 7_|_____2(1.12.1)____________________________________ 8_|__________________________________________________6(1.17.9) 012345678901234567890123456789012345678901234567890 无需添加F=Finish line,最后一行0123456789...仅用于说明目的。 …

5
有多少有效数字?
给定一个数字作为输入,请确定它具有多少个有效数字。该数字应作为字符串,因为您必须进行一些特殊的格式化。您很快就会明白我的意思(我认为)。 如果满足以下至少一项要求,则数字为签名。 非零数字始终有效。 两个有效数字之间的任何零都是有效的。 小数部分中的最终零或尾随零仅是有效的。 如果没有小数位,则所有数字都是有效的。 当只有零时,除最后一个零外的所有零都被视为前导零 输入值 数字的字符串或字符串数​​组。它的末尾可能有一个小数点,后面没有数字。它可能根本没有小数点。 输出量 有多少个签名。 例子 1.240 -> 4 0. -> 1 83900 -> 3 83900.0 -> 6 0.025 -> 2 0.0250 -> 3 2.5 -> 2 970. -> 3 0.00 -> 1
10 code-golf  string  math 

4
计算周长密度矩阵
介绍 的周长密度矩阵是一个无限的二进制矩阵中号定义如下。考虑一个(从1开始)的索引(x,y),并用M [x,y]表示由角(1,1)和(x,y)跨越的矩形子矩阵。假定除M x,y之外的所有M [x,y]值(索引(x,y)的值)已经确定。然后,值M x,y是0或1中的任何一个,这会使M [x,y]的平均值更接近1 /(x + y)。如果是平局,请选择Mx,y = 1。 这是子矩阵M [20,20],为清楚起见,用零代替了零: 1 . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . …
10 code-golf  matrix 

16
等等...我又要说什么?
当老师叫我说话时,我常常忘记我想说的话。您可以让我成为解决此问题的工具吗? 要求: 该程序必须如下循环: 首先,输入 如果输入为空,则打印最后存储的问题。 否则,将输入存储为问题。 笔记: 如果没有问题存储,输入将永远不会为空。 澄清:该程序不需要存储多个问题。 我最初希望它存储多个,但是在许多人误解了这个问题之后,我进行了更改。 请记住,这是code-golf,所以字节数最少的代码将获胜。
10 code-golf  string 

1
脑力激荡图像
介绍 Braincopter是一种深奥的Brainf ***衍生物,可将Brainf ***程序编码为图像。作为2D语言,它使用两个附加命令。它们顺时针和逆时针旋转指令指针(最初指向右)。Braincopter非常类似于Brainloller,不同之处在于代替使用不同的颜色作为不同的命令,它代之以计算基于每个像素的RGB值的命令。 Braincopter根据公式计算每个像素 的命令N = (65536 * R + 256 * G + B) % 11,其中N是命令编号。从命令编号到Brainf ***命令的映射如下: 0 > 1 < 2 + 3 - 4 . 5 , 6 [ 7 ] 8 rotate instruction pointer to the right (clockwise) 9 rotate instruction pointer to the left …

2
Corrcey我的庄严
引言 你们中的一些人可能已经意识到使用手机时我是马虎打字机。这就是为什么我要您编写一个纠正我的错字的程序。 粉笔 给定一个拼写错误的单词,输出我打算写的所有可能的单词。 错字 我输入错误的主要原因是我打错了按键,并且经常打到隔壁的按键。以下是我的键盘布局: q w e r t y u i o p a s d f g h j k l z x c v b n m , [ space ] . 请注意,最下面一行, [ space ] .将永远不会在此挑战中使用 出于某种原因,我只会在水平方向上犯错误:我永远不会碰到n而不是j,但是我可能会碰到f而不是d。 例如,我最终可能将单词sloppy拼写为: akioot 每个键我都离开的地方。 但是,请不要忘记,我不一定会对单词中的每个字母都犯错。 以斯普勒 假设输入为: vid …
10 code-golf 

20
动画寻找中间
给定一个非空字符串,请继续删除第一个和最后一个字符,直到获得一个或两个字符。 例如,如果字符串为abcde,则程序应显示: abcde bcd c 但是,如果为abcdef,则应在两个字符处停止: abcdef bcde cd 尾随换行符和每行末尾的尾随空格是可选的。您可以有任意多个,也可以没有。 测试用例 ABCDEFGHIJKLMNOPQRSTUVWXYZ -> ABCDEFGHIJKLMNOPQRSTUVWXYZ BCDEFGHIJKLMNOPQRSTUVWXY CDEFGHIJKLMNOPQRSTUVWX DEFGHIJKLMNOPQRSTUVW EFGHIJKLMNOPQRSTUV FGHIJKLMNOPQRSTU GHIJKLMNOPQRST HIJKLMNOPQRS IJKLMNOPQR JKLMNOPQ KLMNOP LMNO MN ABCDEFGHIJKLMNOPQRSTUVWXYZ! -> ABCDEFGHIJKLMNOPQRSTUVWXYZ! BCDEFGHIJKLMNOPQRSTUVWXYZ CDEFGHIJKLMNOPQRSTUVWXY DEFGHIJKLMNOPQRSTUVWX EFGHIJKLMNOPQRSTUVW FGHIJKLMNOPQRSTUV GHIJKLMNOPQRSTU HIJKLMNOPQRST IJKLMNOPQRS JKLMNOPQR KLMNOPQ LMNOP MNO N A -> A AB -> AB 请记住,这是code-golf,因此字节数最少的代码将获胜。
10 code-golf  string 

6
可构造的n边形
可构造的n-gon是具有n个边的常规多边形,您仅可以使用罗盘和未标记的标尺来构造。 如高斯所说,唯一可构造n角的n是任意数量的不同费马素数和2的幂的乘积(即n = 2^k * p1 * p2 * ...,k是一个整数,并且每一个都p具有不同的费马素数)。 费马素数是可以用正整数表示的F(n)= 2 ^(2 ^ n)+1的素数。唯一已知的费马素数是0、1、2、3和4。 挑战 给定一个整数n>2,说出n-gon是否可构造。 规格 您的程序或函数应采用一个整数或代表该整数的字符串(以一进制,二进制,十进制或任何其他基数表示),并返回或打印真实或虚假值。 这是代码高尔夫球,因此最短的答案为准,因此存在标准漏洞。 相关OEIS 例子 3 -> True 9 -> False 17 -> True 1024 -> True 65537 -> True 67109888 -> True 67109889 -> False
10 code-golf 

9
超级折叠号码
我们已经在这里定义了折号。 但是现在我们将定义一个超级折叠数。超级折叠数字是一个数字,如果折叠足够的次数,它将最终小于2的幂。折叠的方法与折叠数问题稍有不同。 折叠算法如下: 以二进制表示 例如5882 1011011111010 将其洒入三个分区。前半部分,后半部分和中间数字(如果它的位数为奇数) 101101 1 111010 如果中间数字为零,则该数字不能折叠 反转后半部分并叠加在前半部分上 010111 101101 将数字添加到位 111212 如果结果中有2,则不能折叠该数字,否则新数字是折叠算法的结果。 如果数字可以折叠为连续的一串,则该数字为超级折叠数字。(所有折号也是超级折号) 您的任务是编写一个接受数字的代码,如果该数字是“超级可折叠”数字,则输出一个真实值,否则为“伪造”。您将在程序的大小上得分。 例子 5200 转换为二进制: 1010001010000 分成两半: 101000 1 010000 中间是一个,因此我们继续叠加两半: 000010 101000 添加了它们: 101010 没有二分之一,所以我们继续分成两半: 101 010 折: 010 101 111 结果是111(十进制为7),所以这是一个超级折叠数。 测试用例 前100个超级折号是: [1, 2, 3, 6, 7, 8, 10, 12, …

1
在一个独特的难题中扫描准六边形
作为一个可怕的拉丁学生,几年来,我学会了讨厌拉丁。然而,我有一件事是爱。 拉丁丑闻。 扫描是确定特定诗词的计量标准的行为。对于拉丁语,这意味着将行中的每个音节划分为“轻”或“重”。 在拉丁语中,丑闻有很多规则。但是,与英语不同的是,拉丁语扫描是相当常规的,并且通常不需要任何拉丁语词汇或语法知识。对于这个问题,我们将使用这些规则的简化子集(真实的拉丁文没有整齐的规范)。 在开始之前,韵律必须的Elid。Elision是在单词之间插入音节以简化发音的过程。(例如,“他是”->“他是”)。与英语不同,拉丁语省略遵循非常好的规则。 如果下一个单词以元音开头,则省略以单词元音结尾的单词的最终元音。 诺埃斯特EST->诺埃斯特 以元音后跟“ m”结尾的单词也是如此。 FIDUM AGRICOLAM-> FIDAGRICOLAM 单词首字母“ h”后跟一个元音,出于简化目的,被视为单个元音,并且在被省略时始终会被丢弃。 MULTAE HORAE-> MULTORAE 要么 MULTAM HORAM-> MULTORAM 清除后,我们可以开始扫描。扫描到特定的仪表。应对这一挑战的计量器是dactylic hexameter。乳状六边形有六个“脚”,每只脚由两个或三个音节组成。音节的长短取决于元音。前五个脚的每一个要么是一个长音节的dactyl,然后是两个短的音节,要么是一个spondee,两个长音节。最后一脚是长脚,后跟脚尖(短脚或长脚,对于此问题,您不必确定是哪一个)。 拉丁语中的元音可以短也可以长 夹在两个元音之间的“ i”是一个辅音。(即“ j”) 单词后面跟元音(例如Iactus)开头的“ i”也是辅音 “ q”之后的“ u”也是辅音(即“ v”) Diphthongs(ae,au,ei,eu,oe和ui)由两个元音组成,但是算作一个元音,并且总是很长 与下一个元音之间有两个或多个辅音的元音总是很长 对于先前的规则,在“ b”,“ c”,“ d”,“ g”,“ p”或“ t”之后的“ l”或“ r”不算作辅音 “ x”算作两个辅音 “ ch”,“ ph”,“ th”和“ …

1
用有效数字评估表达式
给定一个表达式,您的任务是评估它。但是,您的答案显示的位数不能超过必要的位数,因为这给人的印象是比实际情况更精确。 一个数字具有的有效位数是用科学计数法表示时具有的位数,如果存在小数点,则在末尾包含零。例如,1200有2个有效数字,因为它是,1.2*10^3但1200.有4个有效数字和1200.05个有效数字。 当将两个数字相加时,结果应四舍五入到与最低有效数字最左边的数字相同的位数。例如,1200 + 3 = 1200(自1200以来四舍五入到数百位)1200.01 + 3 = 1203,和4.59 + 2.3 = 6.9。请注意5四舍五入。该规则也适用于减法。0四舍五入到那个地方。请注意,加法和减法不取决于有效位数。例如,999 + 2.00 = 1001因为999四舍五入到一个位,而2.00四舍五入到百分之一;一个舍入到较少位数的位数是999,因此结果1001.00也应舍入到那个位数。同样,300 + 1-300精确等于1,但是300会四舍五入到百位,因此最终结果也应该四舍五入到百位,得出0。300. + 1-300.将等于1。另一方面。 当将两个数字相乘或相除时,请四舍五入到数字的有效位数,即最低有效位数。例如,3.839*4=20由于精确值,15.356四舍五入到20以来4,只有一个有效数字。同样,100/4=30由于两个数字都有一个有效数字,但是100./4.00=25.0由于两个数字都有3个有效数字。0被定义为具有1个有效数字。 表达式将只包含*,/,+,和-,(和括号)。应当遵循操作顺序,并且每次操作后都应将结果四舍五入。如果在一系列加法或减法或一串乘法与除法中遗漏了括号,则在完成所有运算后四舍五入。例如,6*0.4*2 = 5(一个有效数字),而0.4*(2*6)=0.4*10=4和(6*0.4)*2=2*2=4。 输入:一个字符串,其表达式包含()*/+-和数字。为简化起见,-将仅用作减法运算符,而不表示负数;但是,答案可能仍然是否定的,并且需要-作为前缀。 输出:表达式的结果,求值并四舍五入为正确的位数。请注意,这25对于不正确25.0。 测试用例: 3 + 0.5 --> 4 25.01 - 0.01 --> 25.00 4*7*3 --> 80 (4*7)*3 --> 90 (8.0 + 0.5)/(2.36 - …
10 code-golf  math 

8
最小的正整数,与前两个倒数互为质数并且尚未出现;a(1)= 1,a(2)= 2
定义 如果两个整数除以外没有其他正数除数,则它们是互质数1。 a(1) = 1 a(2) = 2 a(n)是integer的最小正整数,它是和的互质数,a(n-1)并且a(n-2)尚未出现n >= 3。 任务 给定正整数n,输出/打印a(n)。 例 a(11) = 6因为6它与最后两个前任(即11和13)互质,并且6从未出现过。 笔记 请注意,顺序不是递增的,这意味着元素可以小于其前身。 眼镜 您必须使用1索引。 测试用例 n a(n) 1 1 2 2 3 3 4 5 5 4 6 7 7 9 8 8 9 11 10 13 11 6 12 17 13 19 …

5
排列步骤
编写一个函数,该函数采用一组整数并打印该组的每个排列,并在每个步骤之间执行交换 输入值 一组整数,例如(0,1,2) 输出量 格式(set)(交换)(set)的排列和交换列表... 测试用例 Input: (3, 1, 5) Output: (3, 1, 5) (3, 1) (1, 3, 5) (3, 5) (1, 5, 3) (1, 3) (3, 5, 1) (3, 5) (5, 3, 1) (3, 1) (5, 1, 3) 规则 您可以根据需要格式化数字集。 您可以按任何顺序进行交换 您可以重复排列和交换以获得新的排列 您的代码不必实际执行交换,输出仅需要显示在最后一个输出和当前输出之间进行了哪些交换 您的代码仅需要对包含2个或更多元素的集合起作用 您获得的集合将没有重复的元素(例如(0,1,1,2)无效) 这是代码高尔夫球,所以最短的代码胜出!

10
给定一个整数,计算其Levenshtein代码
免责声明:Levenshtein编码与Levenshtein编辑距离度量完全无关。 <插入关于为什么需要在此处计算Levenshtein码的长话。> 编码 Levenshtein编码是一种将二进制代码分配给非负整数的系统,该系统保留了一些与该挑战无关的怪异属性。我们将此代码表示为L(n)。Wikipedia将其描述为五个步骤: 将步数变量C初始化为1。 编写数字的二进制表示形式,但不要1以代码开头开头。 让M为在步骤2中写入的位数。 如果M不为0,则递增C,从步骤2开始重复M作为新数字。 将C 1位和a 写入0代码的开头。 但是,代码也可以递归地描述: 如果数字为0,则其代码为 0。 写数字的二进制表示,不带前导 1以代码开头开头。 让M为在步骤2中写入的位数。 将L(M)写入代码的开头。 1在代码的开头写一点。 对于喜欢示例的人,这里是L(87654321)的递归过程,表示串联: 挑战 编写一个给定数字n的程序或函数,输出位串L(n以任何合理的格式)(这包括用所述位返回一个数字)。与往常一样,不允许出现标准漏洞。 例子 输入: 5 输出: 1110001 输入: 30 输出: 111100001110 输入: 87654321 输出: 111110000101001001110010111111110110001 输入: 0 输出: 0

13
同等公式
在中国剩余定理可以在模运算非常有用。 例如,考虑以下同余关系集: 对于这样的全等关系集,其中所有基数(3, 5, 7在此示例中)都是互质的,则在满足此关系的基数(在此示例中)与的乘积n之间将只有一个整数,1且其中的乘积等于底数(3*5*7 = 105在此示例中) 。 在此示例中,数字将为14,由以下公式生成: 其中2, 4, and 0,从上面的例子中给出。 70, 21, 15是公式的系数,它们取决于基数3, 5, 7。 为了计算70, 21, 15一组基的公式的系数(在我们的示例中),我们使用以下过程。 对于a一组基准中的每个数字: 找到所有其他基数的乘积,记为P。 找出除以P的余数的第一个倍数。这是的系数。1aa 例如,要计算对应于底数的系数3,我们找到所有其他底数的乘积(即5*7 = 35),然后找到该乘积1除以底数后剩下的余数的第一个倍数。 在这种情况下,35留下的剩余部分2时除以3,但35*2 = 70叶子的其余部分1时除以3,所以70对于对应的系数3。同样,3*7 = 21留下的剩余部分1时,除以5和3*5 = 15留下的剩余部分1时,除以7。 简而言之 对于a一组数字中的每个数字: 找到所有其他数字的乘积,记为P。 找出除以P的余数的第一个倍数。这是的系数。1aa 挑战 对于两个或多个碱基的集合,挑战是找到对应系数的集合。 基数的集合保证是成对的互质,每个基数保证大于1。 您的输入是一个整数列表,作为输入[3,4,5]或以空格分隔的字符串"3 4 5",但是您的输入有效。 您的输出应该是整数列表或以空格分隔的表示系数集的字符串。 测试用例 input output [3,5,7] [70,21,15] …
10 code-golf  math 

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.