编程拼图和代码高尔夫

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

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来获得序列的其余部分。

21
迭代phi序列
相关:迭代phi(n)函数。 您面临的挑战是计算迭代的phi函数: f(n) = number of iterations of φ for n to reach 1. 哪里φ是欧拉函数。 相关OEIS。 这是它的图形: 规则: 你的目标是输出f(n)从n=2到n=100。 这是代码高尔夫球,因此最短的代码获胜。 您可以检查以下值: 1, 2, 2, 3, 2, 3, 3, 3, 3, 4, 3, 4, 3, 4, 4, 5, 3, 4, 4, 4, 4, 5, 4, 5, 4, 4, 4, 5, 4, …

4
是二人的吗?
甲二分图是其顶点可分为两个不相交的集合,使得没有边缘在同一组连接两个顶点的曲线图。当且仅当图是2色时,图才是二部图。 挑战 给定一个无向简单图的邻接矩阵,您的任务是确定它是否是二部图。也就是说,如果一条边连接顶点i和j,则矩阵的(i,j)和(j,i)项均为1。 由于图是无向且简单的,因此其邻接矩阵是对称的,并且仅包含0和1。 细节 您应该采用N×N矩阵作为输入(任何形式,例如列表列表,字符串列表,类似C的字符串int**和大小,展平的数组,原始输入等)。 如果该图是二部图的,则函数/程序应返回/输出真实值,否则返回falsy。 测试用例 ['00101', '00010', '10001', '01000', '10100'] : False ['010100', '100011', '000100', '101000', '010000', '010000'] : True (divide into {0, 2, 4, 5} and {1, 3}) ['00', '00'] : True 计分 禁止直接计算答案的内建函数。 这是代码高尔夫球,因此,本月底之前最短的程序(以字节为单位)将获胜!

24
请给我勺冰淇淋
请给我冰淇淋蛋筒 在新英格兰,我们有很多很棒的冰淇淋店。他们大多数现在冬天都关闭了,所以... .-@@-. (======) (--------) (==========) (__________) \/\/\/\/\/ \/\/\/\/ \/\/\/ \/\/ \/ 目标 准确输出上述冰淇淋蛋筒。(或从函数返回) 这是代码高尔夫球,所以最短答案胜出

14
金字塔计划否定
在我的语言Pyramid Scheme中,有一个稍微有趣的结构:空三角形: ^ - 如果不提供任何参数,则返回0。要1使用此构造生成,可以使用以下代码: ^ /!\ ^--- - 这只是传递0给求反函数。我们可以继续否定这个结果: ^ /!\ ---^ /!\ ^--- - 得出0。又一个否定给出: ^ /!\ ^--- /!\ ---^ /!\ ^--- - 挑战 给定的整数Ñ ≥1,输出空金字塔被否定Ñ在所描述的方式倍。 测试用例 input output 1 ^ /!\ ^--- - 2 ^ /!\ ---^ /!\ ^--- - 3 ^ /!\ ^--- /!\ ---^ /!\ …

10
计数斐波纳契轨道
如果将类斐波那契数列定义为f k(n)=(f k(n-1)+ f k(n-2))%k,则对于某些整数k(其中%是模运算符),该序列因为(f k(n-1),f k(n-2))只有k 2个不同的值,所以它将必定是循环的。但是,此周期通常并不包括所有可能的值对,因此根据两个初始值f k(0)和f k(1),我们可能会得到不同的周期。例如,对于k = 2,根据前两个值,我们有以下四种可能性: 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0, 1, 1, 0, 1, 1, 0, 1, 1, ... 1, 0, 1, 1, 0, 1, 1, 0, 1, ... 1, 1, 0, 1, 1, 0, 1, 1, …

23
偶数的循环序列,介于
请考虑以下顺序: 1, 0, 1, 2, 4, 1, 6, 8, 0, 1, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 0, 1, ... 偶数位从0开始,并分组为长度递增的游程。它们循环排列,这意味着它们以升序排序,直到达到8,然后从0开始循环。1分隔偶数位的运行,它也开始序列。让我们直观地看一下该序列的形成方式: 1, 0, 1, 2, 4, 1, 6, 8, 0, 1, 2, 4, 6, 8, 1, 0, 2, 4, 6, …

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.