Questions tagged «code-golf»

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

30
等距检查器
挑战: 给定一个单词,检查它是否为等轴测图。 什么 : 等距图是仅由字母组成的单词,没有重复(不区分大小写)。空字符串是等轴测图。 例子 : "Dermatoglyphics" ---> true "ab" ---> true "aba" ---> false "moOse" ---> false "abc1" ---> false "" ---> true 输入: 您可以接受任何合理格式的输入 输入内容仅包含字母和/或数字,不包含空格([a-zA-Z0-9]) 输出: true 或任何真实值(如果输入是等轴图) false 或其他任何虚假的值 这是代码高尔夫球,因此每种语言中以字节为单位的最短代码获胜。

3
展平Stack Cats程序
Stack Cats是一种可逆的基于堆栈的语言。它的可逆性导致一些怪异的循环。这个挑战是关于条件循环的(...)。当这些循环以某些方式嵌套时,可以对代码进行转换以减小嵌套深度。下面是规则(其中A,并B代表任意片段): 当一个循环从另一个循环开始时,我们可以将内部循环提取到最前面:((A)B)变成(A)(B)。 当一个循环以另一循环结束时,我们可以将内部循环提取到最后:(B(A))变成(B)(A)。 空循环()可以从程序中完全删除。作为推论(结合其他规则),((A))等效于(A)。 唯一的嵌套循环所留的形式为(A(B)C),其中A,B和C非空。 挑战 您将获得一个有效的Stack Cats程序,并且您的任务是使用上述转换尽可能地降低循环的嵌套级别,不留空循环。 有效的Stack Cats程序... ...仅由字符组成()/\<>[]{}!"*+-:=ITX^_|。 ...具有镜像对称性(例如,\(]{}!{}[)/是有效程序,但/|/不是)。 ...已正确匹配和嵌套,()并且{}([],<>并且\/不一定要像往常一样进行匹配,尽管由于镜像对称性要求,它们将成对出现)。 您可以将字符串或字符列表作为输入,但是输出必须以相同的格式显示。 您可以编写程序或函数,并使用我们的任何标准方法来接收输入和提供输出。请注意,默认情况下,这些漏洞是禁止的。 这是代码高尔夫球,因此以字节为单位的最短有效答案为准。 测试用例 测试用例每行两行(输入和输出),用空行分隔。请注意,一个输出为空。您还需要支持空输入(这将导致空输出)。 (((=+|+=))) (=+|+=) ({(=+|+=)}) ({(=+|+=)}) ((\)/)I(\(/)) (\)(/)I(\)(/) (()()(())()()) ((<|>((X((T)))[_]))\^/(([_](((T))X))<|>)) (<|>)(X)(T)([_])(\^/)([_])(T)(X)(<|>)

1
你能超越比尔·盖茨吗?
煎饼分类是一个数学问题的通俗术语,即当可以将抹刀插入堆叠中的任意点并用来翻转其上方的所有煎饼时,按大小顺序对无序的煎饼堆叠进行分类的数学问题。煎饼数P(n)是n个煎饼所需的最小翻转次数。1个 1979年,年轻的比尔·盖茨(Bill Gates)和克里斯托斯(Christos Papadimitriou)撰写了一篇论文,证明P(n)=(5n + 5)/ 3的上限。2 我认为可以肯定的是,盖茨(和/或帕帕第米特里奥)编写了一个程序,使用他们开发的算法(可能晚于1979年)执行煎饼分类。由于盖茨是一位熟练的程序员,因此他们可能会尽可能地尝试编写此代码,但是源代码的大小尚未公开(AFAIK)。 挑战: 创建一个执行煎饼分类的函数/程序,最大翻转次数不超过盖茨和帕帕第米特里乌找到的界限。3您可以选择是要列表递增还是递减,只要它是一致的即可。 您可以假设n <50。因此,您必须将翻转次数限制为(一些随机选择的n值): n P(n) 38 65 49 83 50 85 输出应该是每次翻转之前刮刀的位置。输出可能是零索引或一个索引,您可以选择从顶部还是底部进行计数。 附加规则: 运行时必须是确定性的 没有固定的时间限制,但是您必须能够提供包含50个元素的列表的输出 测试清单: 我无法提供最困难的列表(如果是的话,我会写一篇论文,而不是挑战),所以我将提供一些随机数字列表,您可以在这些数字上测试函数/程序。如果事实证明这些列表“容易”,我可能会添加其他人。 9, 63, 62, 75, 45, 78, 59, 75, 69, 3, 28, 94, 51, 10, 45, 93, 97, 80, 72, 36, 80, 88, 30, 93, …

2
如何以21个字符解决“重获成功”的全部任务
有一个名为“ Return True to Win”的网站,其中有一些有趣的任务供Javascript程序员使用。目的是找到给定函数的参数,迫使其返回true。 以下是任务之一: function total(x) { return (x < x) && (x == x) && (x > x); } 用户必须找到代码片段的值,x以使函数返回true。要测试代码段,请使用代码段作为参数(即total(<snippet>))来调用函数。 我找到了一个22个字符的解决方案: {valueOf:_=>n++%3},n=0 有人找到21个字符的解决方案。我找不到这种解决方案。21个字符的解决方案是什么?

3
代码高尔夫模拟高尔夫
给定一系列孔码,果岭尺寸,切角和最大距离,即可计算出高尔夫球得分。 假设条件 地球是平坦的 所有果岭都是圆形的 切片角度将在-45至45度之间,以度为单位 所有距离均以同一度量标准(码或米,无关紧要) 没有界限,障碍物或狗腿 任何洞的最高分数是8 所有镜头在与孔的角度加上切片角度所定义的方向上移动的最大距离或与孔的距离中的较小者。 距离以起点或终点之间的直线或欧几里得距离的形式测量。 所有孔上的所有镜头的最大距离和切片角度均相同 高尔夫球手总是在果岭上两次击球(或者恰好在果岭边缘)。 例 让我们从下面测试用例#5的漏洞#2看一下黑客。黑客可以将球打到320码,但始终会切成30度。如果我们不失一般性地假设发球区框在{0,0}而果岭在{497,0},那么他将击球到以下点,并在第七杆处到达果岭: {{0.,0.},{277.128,-160.},{547.543,-131.372},{569.457,7.67088},{502.872,37.2564},{479.159,7.92741},{490.646,-7.85868},{500.078,-4.22987}} 此时,由于需要两个推杆,他的分数将为9,因此根据假设,他的最终分数不得超过8。 在图形上,它将如下所示: 测试用例 所有测试用例均具有标准的18孔路线 Case#1 {MaxDistance->280,SliceAngle->10,HoleDistances->{181,368,161,416,158,526,377,427,509,148,405,443,510,494,396,388,483,172},GreenDiameters->{26,18,17,23,27,23,21,23,25,21,19,24,21,23,25,24,22,22}} Scores: {4,5,4,5,4,5,5,5,5,4,5,5,5,5,5,5,5,4} Output: 85 Case#2 (same course as Test Case #1, shorter more accurate golfer) {MaxDistance->180,SliceAngle->5,HoleDistances->{181,368,161,416,158,526,377,427,509,148,405,443,510,494,396,388,483,172},GreenDiameters->{26,18,17,23,27,23,21,23,25,21,19,24,21,23,25,24,22,22}} Scores: {4,5,4,5,4,6,5,5,6,4,5,5,6,6,5,5,5,4} Output: 89 Case#3 (Same golfer as test case #1, shorter course) …

3
共产子串标准化
如果长度为K的字符串T在字符串S中出现K次或多次,则有潜在的共性。例如,in 可能是共通的,因为它出现2次且长度为2。请注意,这些子字符串不能重叠。1010/10 甲共产变换是一个取该字符串Ť和移动每个字符吨我的Ť到我的发生Ť在小号。因此,对于前面的示例,共产主义转化会产生1/0;第一次找到10替换10的第一个字符,第二次找到。100 甲共产正常化是一个函数,它的所有这样的串Ť与ķ ≥2并执行共产变换他们。 该算法的一些细节: 首先对最长的有效字符串T 执行公共转换。支持T的第一次出现。 然后,对下一个最长的字符串执行共性转换,然后对下一个最长的字符串进行等等。 重复直到字符串中不存在这样的字符串。 注意,可以用两种不同的方式来解释一些字符串,例如测试用例中的“ Hello,Hello”示例。您可以使用ell的牛逼,但你也可以使用llo。在这种情况下,您的代码可以选择任何一个。所示的测试用例使用llo,但是您可能会获得不同且有效的输出。 您的任务是实现社区标准化。输入将仅包含可打印的ASCII字符(0x20至0x7E,空格至波浪号)。您可以编写程序或函数来解决此任务;输入可以当作来自STDIN的一行,字符串/字符数组参数,来自ARGV的参数等。 测试用例 '123' -> '123' '111' -> '111' '1111' -> '11' 'ABAB' -> 'AB' '111111111' -> '111' 'asdasdasd' -> 'asd' '10/10' -> '1/0' '100/100+100' -> '1/0+0' ' + + ' -> ' + ' 'Hello, hello, dear fellow!' …
13 code-golf  string 

5
周长小于n的整数三角形
定义 “整数三角形”是具有整数坐标的三角形。例如,以下三角形是整数三角形: (0, 0), (0, 1), (1, 2) with perimeter 1 + sqrt(2) + sqrt(5) ≈ 4.650. 任务 这项挑战的目标是计算周长小于n的所有整数三角形(直至全等)。 输入输出 参数将以整数形式给出,并且输出应为周长严格小于参数的三角形数量。 例子 周长最小的整数三角形等于 (0, 0), (0, 1), (1, 0) which has perimeter 2 + sqrt(2) ≈ 3.414 接下来的最小是: (0, 0), (0, 1), (1, 2) with perimeter 1 + sqrt(2) + …

20
计算最佳平方矩阵
的最佳矩阵(对于这一挑战的相当窄的范围)是通过获得“拉上”从正方形矩阵和获得最大的每一对中的所述对应的行和列中的元素。 例如,给定以下矩阵: 4 5 6 1 7 2 7 3 0 您可以将其与其转置组合以得到:[[[4,5,6],[4,1,7]],[[1,7,2],[5,7,3]],[[7,3,0],[6,2,0]]]。如果压缩每对列表,则会获得以下信息:[[(4,4),(5,1),(6,7)],[(1,5),(7,7),(2,3)],[(7,6),(3,2),(0,0)]]。最后一步是获取每对中的最大值以获取最佳矩阵: 4 5 7 5 7 3 7 3 0 您的任务是输出作为输入给出的方阵的最佳矩阵。矩阵将仅包含整数。I / O可以采用任何合理的格式进行。以字节为单位的最短代码(采用UTF-8或该语言的自定义编码)获胜! 测验 [[172,29],[29,0]]-> [[172,29],[29,0]] [[4,5,6],[1,7,2],[7,3,0]]-> [[4,5,7],[5,7,3],[7,3,0 ]] [[1,2,3],[1,2,3],[1,2,3]]-> [[1,2,3],[2,2,3],[3,3,3 ]] [[4,5,-6],[0,8,-12],[-2,2,4]]-> [[4,5,-2],[5,8,2],[- 2,2,4]]

9
特征多项式
方阵A的特征多项式定义为多项式p A(x)= det(I x- A),其中I是单位矩阵,而det是行列式。请注意,此定义始终为我们提供单项多项式,以使解决方案唯一。 解决此难题的任务是为整数矩阵计算特征多项式的系数,为此,您可以使用内置函数,但是不建议使用。 规则 输入是任何方便格式的NxN(N≥1)个整数矩阵 您的程序/函数将以升序或降序输出/返回系数(请指定哪个) 对系数进行归一化,使得x N的系数为1(请参见测试用例) 您不需要处理无效的输入 测试用例 系数以降序给出(即x N,x N-1,...,x 2,x,1): [0] -> [1 0] [1] -> [1 -1] [1 1; 0 1] -> [1 -2 1] [80 80; 57 71] -> [1 -151 1120] [1 2 0; 2 -3 5; 0 1 1] …

10
陷入困境的大学生的GPA计算器
GPA计算器 (GPA =平均绩点) 在决赛周,你是一个压力很大的大学生。您无需决定即将进行的考试,而是决定最好在学期末确定将获得的GPA。这样,您就有数据来支持您熬夜决定在微积分中获得A而不是B保留在院长名单上的决定! 作为计算机科学专业的学生,​​您想找到一种确定该GPA的最酷方法。当然,最酷的方法是用最短的代码!这是代码高尔夫球,因此以字节为单位的最短代码胜出! 细节 您要去的大学使用基本的GPA和学分。 A的字母等级为4.0,B为3.0,C为2.0,D为1.0,F为0.0 您的GPA是加权GPA,因此4个学分时级的A的数量是1个学分时级的A的4倍(请参见下面的示例以了解更多的体重说明) 学时从1-4 您的程序将需要包含两个命令行输入的列表,即成绩和学分。您可以确定通过命令行将它们输入到程序中的最佳方法。您无需担心输入过多,但是请确保您的代码可以处理19个学时的学期。 即输入:A 1 B 4 C 2… 您的程序必须使用3位数(即X.XX)输出GPA。 您的GPA需要四舍五入到小数点后两位。以您喜欢的任何方式(地板,天花板,底座等)四舍五入 输入示例(选择最适合您的设计的输入示例) A1B3C2F3B4 A1 B3 C2 F3 B4 A 1 B 3 C 2 F 3 B 4 A,1,B,3,C,2,F,3,B,4 A1,B3,C2,F3,B4 或以上任何一种组合,其中您使用列出所有成绩的格式,然后列出其学时: 即ABAA 3 4 1 1 例子 Input - A 3 B …
13 code-golf 

4
正在运行多少个实例?
编写一个无限期运行的程序,以报告其当前正在运行的实例数量。程序的每个实例还应报告所有其他当前正在运行的实例中打开该程序的顺序。 例 用户启动程序的第一次-我们称这个实例1实例1的显示器1/1,因为它是第一个总的上马出实例1当前运行的实例。 在实例1运行时,用户第二次启动该程序以成为实例2。实例1现在显示1/2,是总共2个当前正在运行的实例中的第一个实例。实例2显示为,因为它是总共2个当前正在运行的实例中的第二个实例。2/2 假设用户继续生成更多实例,直到有5个实例为止。按照启动的顺序,它们的输出为:1/5 2/5 3/5 4/5 5/5。 现在,假设用户决定终止实例3,然后实例4成为新的实例3,实例5成为新的实例4,因为它们分别是已启动的第3和第4个实例(现在总数为4)实例。因此,每个实例的输出变化如下: 1/5 → 1/4 2/5 → 2/4 3/5 →(终止) 4/5 → 3/4 5/5 → 4/4 规则 您可以以任何合理的格式输出两个数字(实例号,实例总数)。 每当实例启动或终止时,所有其他实例必须在100毫秒内更新其各自的输出。 如果选择通过打印到新行(或其他“附加”输出格式;而不是替换)来更新输出,则必须仅在实例数更改时打印,而在其他任何时间都不要打印。 这是代码高尔夫。以字节为单位的最短程序获胜。 在您的答案中,建议您指定用户必须执行的操作才能打开多个实例,和/或录制截屏视频以进行演示。

25
计算上限Divmod
任务 给定两个正整数(DIVID Ë次和divis ö R),计算q uotient和- [R emainder。 通常,它将被计算为e = o*q+rwhere q*o<=e和0<=r<o。 对于这个挑战,它仍然e = o*q+r不过q*o>=e和-o<r<=0。 例如e=20和o=3,通常是20/3 -> 20=3*6+2,因为18<=20和0<=2<3。这将是20/3 -> 20=3*7-1地方21>=20和-3<-1<=0 测试用例 Input -> Output 20, 3 -> 7, -1 10, 5 -> 2, 0 7, 20 -> 1, -13 100, 13 -> 8, -4 您不需要处理o=0。

6
ASCII六边形链
问题 画一条x长六边形的链,每条的边y长 输入值 x -链的长度<= 50 y -每边的长度<= 50 例子 x=1,y=1 _ / \ \_/ x=4,y=1 _ _ / \_/ \_ \_/ \_/ \ \_/ \_/ x=3,y=2 __ __ / \ / \ / \__/ \ \ / \ / \__/ \__/ \ / \__/ 规则 以字节为单位的最短有效答案为准。 允许前导和尾随的换行符。 允许尾随空白。

6
旋出字母!
看下面的字符串。注意到模式吗? ABEFNOPEFGH 直流GQI 人力资源部 陆纪SK DTL 暨 BAZYXWV N 环氧乙烷 DP CQ BAZYXWVUTSR 正如某些人可能已经注意到的那样,它基本上是字母的螺旋形,行/列之间的距离逐渐增加1个空格/换行符。 严谨的定义 让我们有一个计数器c,它最初是0。 我们从左到右写出字母表的前c + 1个字母:A。 然后,从顶部到底部的下一个(C + 1)(C + 2)/ 2字母(附加B): AB。 从左到右,下一个(c +1)(c + 2)/ 2(加C): AB C 从下至上,接下来的c +1个字母(加D): AB DC 到达周期的终点。因此,让我们增加c(变为1)。然后,它从第一步开始,唯一的区别是,从本循环的最后一个元素开始,我们使用下一个c + 1个字母,而不是使用字母表的前c + 1个字母(在这种情况下,因此,我们继续进行)。当到达,它的周期从后。DEFG...ZA 任务 给定整数N(对于1索引为正数,对于0索引为负数),输出螺旋的前N个循环。 规则 您可以使用小写字母或大写字母,但是您的选择必须一致(只能使用其中之一,不允许混用)。 您可以输入和通过任何提供输出的标准方法,在任何编程语言,但同时指出,这些漏洞被默认禁止的。 可接受的输出格式:多行字符串,代表行的字符串列表,包含多个字符列表的列表(每个字符代表一行)或其他您认为合适的格式。如果您不选择第一种格式,最好包含漂亮的代码版本。 这是代码高尔夫球,因此满足要求的最短代码(以字节为单位)(每种语言)将获胜! 测试用例 …

9
重复数字素数
另一个顺序,另一个挑战。* 定义 素数p是这个序列中的一个,我们称它为A,如果十进制扩展中的每个数字都d为p,则替换d为的d副本,d结果整数仍为素数;不允许为零。 例如,11在此序列中琐碎是(顺便说一下,它是第一个数字)。序列中的下一个是31,因为3331它也是素数。那么53因为55555333也是素数,依此类推。 挑战 给定一个input n,return A(n),即n此序列中的第一个项目。 例子 这是让您入门的前20个学期。这是OEIS上的A057628。 11, 31, 53, 131, 149, 223, 283, 311, 313, 331, 397, 463, 641, 691, 937, 941, 1439, 1511, 1741, 1871 当使用零索引时,表示A(0) = 11,A(1) = 31等。 规则 您可以选择基于零或一的索引;请在答案中指出。 除了返回n第一个元素,您还可以选择返回第一个n条件。 您可以假定输入/输出不会大于您语言的本机整数格式;但是,重复数字的质数可能比您的语言的本机格式大,因此需要加以考虑。 例如,示例1871的最后一个数字的素数为18888888877777771,比标准INT32大很多。 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。 输出可以发送到控制台,从函数返回,显示在警报弹出窗口中,等等。 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常用的高尔夫规则都适用,并且最短的代码(以字节为单位)获胜。 *公平地说,我想出了序列的前几个术语,只是加上了一些数字,然后去了OEIS来获得序列的其余部分。

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.