编程拼图和代码高尔夫

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

5
对称瓢虫
介绍: 当我们想到瓢虫时,通常会想到带有黑点的红色或深橙色的臭虫。尽管这不是必须的,但是由于黑色也带有红色/橙色斑点的瓢虫,或者根本没有斑点的瓢虫,因此我们主要将瓢虫描绘成类似亚洲瓢虫的东西: 要注意的另一件事是,瓢虫上的斑点几乎总是对称的。这就是挑战所在。 挑战: 给定一个整数n(>= 0),请输出以下ASCII样式的瓢虫一次或多次,并在两侧以及两个或多个瓢虫之间均匀分配对称斑点。 这是默认的瓢虫布局: _V_ /(@I@)\ / | \ | | | \ | / ''-!-'' 如果为n=0,则按原样输出上面的瓢虫。 当n大于零时,我们用小写字母填充ASCII艺术错误的空格o,或用大写字母替换|中间的O。目标是n更改“空”瓢虫,同时仍然产生对称输出(每个瓢虫),并输出尽可能少的瓢虫。 因此,有效的输出为n=1: _V_ /(@I@)\ / O \ | | | \ | / ''-!-'' _V_ /(@I@)\ / | \ | O | \ | / ''-!-'' _V_ /(@I@)\ / | …

10
类斐波那契数列中的最低初始数
给定一个正整数输入N,输出两个非负数a和b,其中a <b,具有尽可能低的平均值,这将导致数字N成为重复关系序列的一部分: f(0) = a f(1) = b f(n) = f(n-2)+f(n-1) 如果存在多个解决方案,且a和b的均值最小,则应输出具有最低b的解决方案。 您可以假设N在您的语言/系统中代表的整数范围内。 测试用例 N = 1 a = 0, b = 1 N = 15 a = 0, b = 3 N = 21 a = 0, b = 1 N = 27 a = 0, b = 9 …

30
遗漏的号码是多少(除数为9)
挑战 给定一个整数,该整数可被9整除并有一个缺失的数字,请找到缺失的数字。 缺失的数字可以用数字0-9以外的任何字符表示,只要它是一致的即可。 如果缺少的数字可能是0或9,则输出一些内容来表示。 假设用户足够聪明,只能输入一位数字和一位数字等。 测试用例 在测试用例中,缺失的数字由问号表示 123? -> 3 ?999 -> 0 or 9 ?0023 -> 4 000?1 -> 8

10
生成数字键友好的数字
受生成键盘友好数字的启发。 背景 许多数字键盘的布局如下: 789 456 123 0 我们将数字的邻域定义为在所示数字键盘上与其正交正交的一组单元格,包括其自身。例如,2的邻居是{1,5,3,0,2},0的邻居是{1,2,0}。在测试用例的上方,下面列出了每个数字的邻域。 我们将小键盘友好数字定义为正整数,其中当以十进制形式编写而没有前导零时,除第一个数字外的每个数字都位于前一个数字附近。 例如, 7856是小键盘的友好数字,因为8在7的附近,5在8的邻居中,6在5的附近。 1201是一个小键盘的友好数字,因为2在1附近,0在2附近,而1在0附近。 82 不是小键盘的友好数字,因为2不在8附近。 802 不是小键盘的友好数字,因为0不在8附近(邻居不会环绕)。 相关OEIS序列。请注意,此相关的序列是不同的,因为它计算0为邻近7的,而不是1和2。 挑战 给定正整数n,返回第- n个或第一个n数字键盘友好数字,其中第一个为1。您可以使用基于0的索引,第0个数字键盘友好数字为1。 邻里 每个数字的邻居在这里列出: 0:{0,1,2} 1:{0,1,2,4} 2:{0,1,2,3,5} 3:{2,3,6} 4:{1,4,5,7} 5:{2,4,5,6,8} 6:{3,5,6,9} 7:{4,7,8} 8:{5,7,8,9} 9:{6,8,9} 测试用例/顺序 这是前100个学期 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 20, 21, 22, …

9
建立电网
挑战 N个城市按直线排列。第i个城市位于A[i]原点右边几公里处。没有两个城市会在同一个地方。 您将要建立带有一些发电厂的电网。电厂必须建在城市内部。但是,只允许您建立K(<N)发电厂,因此有些城市中将没有发电厂。对于每个没有电厂的城市,必须在它和最近的拥有电厂的城市之间建立电缆。 例如,如果位于的三个城市0, 1, 2,而只有位于的城市0有发电厂,则需要构建两条电缆,一条电缆从2到0(2km),另一条电缆从1到0(1km),总长度为3km 。 给定K和城市位置(A),您应该计算出构建网格所需的最小电缆公里数。 示例测试用例 K = 1, A = [0, 2, 4, 6, 8] : 12 # build power plant in the city at position 4, total length = 4 + 2 + 0 + 2 + 4 = 12 K = 3, A = …

8
我是对称的,不是回文!
背景 受到我的回文启发。你是?在这里,令人震惊的事实是“ ()()不是回文,而是())(”,我问自己是什么()(),答案很简单:它是具有垂直对称轴的字符串! 任务 编写一个程序或函数,该程序或函数将字符串S(或您的语言中适当的等效语言)作为输入,检查沿垂直轴的对称性,并相应地返回真实或虚假值。您可以使用任何合理的方式获取输入并提供输出。 反射对称 围绕垂直轴的反射对称性(或左右对称)意味着,如果将镜子垂直放置在字符串的确切中心,则字符串前半部分的反射图像与字符串后半部分相同。 例如,以下字符串围绕垂直轴反射对称: ()() ()()() [A + A] WOW ! WOW OH-AH_wx'xw_HA-HO (<<[[[T*T]]]>>) (:) )-( ())(() qpqp 而以下不是: ())( ((B)) 11 +-*+- WOW ! wow (;) qppq 比赛规则 •您的程序或函数将仅接收可打印的ASCII字符。您可以包含或不包含空字符串(当然是对称的!)作为合法输入,这对您来说更好。 •可以认为相对于垂直轴对称的ASCII字符如下(请注意初始空间以及大小写字母之间的差异): !"'+*-.:=AHIMOTUVWXY^_ovwx| 可以视为“镜像”的ASCII字符及其对应的字符为: ()<>[]{}qpbd/\ 需要注意的是,因为他们镜像,你可以同时拥有(),以及)(,/\和\/等。 所有其他ASCII可打印字符必须被认为是非对称的,并且没有镜像的对应字符。 •这是一个代码挑战:用任何编程语言,以字节为单位的程序越短,越好。 •对将产生对称程序的人表示敬意! 注意:这个问题不是“便捷回文”的重复,它需要检查回圆括号中是否翻转的回文字符串,这个问题有所不同,原因有两个: 1)对于非括号字符,这是另一个问题的限制,因为只有对称字符可以相反的顺序出现。 2)因为它基于对称性概念,而不是基于“方便回文”的概念,所以镜像字符可以同时出现,即[]和][,这使得解决该问题的程序不同于解决其他问题的程序。
22 code-golf  string 

28
最大素数指数
给定一个整数n >= 2,输出其素数分解中的最大指数。这是OEIS序列A051903。 例 让n = 144。其主要分解为2^4 * 3^2。最大指数是4。 测试用例 2 -> 1 3 -> 1 4 -> 2 5 -> 1 6 -> 1 7 -> 1 8 -> 3 9 -> 2 10 -> 1 11 -> 1 12 -> 2 144 -> 4 200 -> 3 500 …

13
做NP:找到最大的集团
背景 在撰写本文时,P与NP的问题仍未解决,但是您可能已经听说过Norbert Blum的新论文,声称P!= NP已被证明是错误的(但我们将会看到)。 本文讨论的问题是集团问题。至少这是我在报纸上读到的,如果我错了,请更正我,但是无论如何,我希望您编写一个解决以下变体的程序: 任务 假设我们有一所大学校,有很多学生。每个学生在这所学校都有一些朋友。一个集团的学生是仅由学生谁是朋友与一组的每个其他成员。 您的程序将接收成对的朋友,作为他们的输入。从这些信息中,程序必须找到最大的集团的规模。学生用整数ID标识。 如果您更喜欢数学术语,这意味着您将获得一个无向图的边缘,该边缘分别由两个节点标识。 输入项 您的输入将是一个正整数对的非空列表,例如[[1,2],[2,5],[1,5]]。您可以采用任何明智的形式来输入此输入,例如,作为数组的数组,作为文本行,每个文本行包含两个数字,等等... 输出量 预期的输出是一个数字n >= 2:最大集团的规模。与上面的例子中的输入,其结果将是3,因为所有的学生(1,2和5)是朋友彼此。 测试用例 [[1,2]] => 2 [[1,2],[3,1],[3,4]] => 2 [[1,2],[2,5],[1,5]] => 3 [[2,5],[2,3],[4,17],[1,3],[7,13],[5,3],[4,3],[4,1],[1,5],[5,4]] => 4 (the largest clique is [1,3,4,5]) [[15,1073],[23,764],[23,1073],[12,47],[47,15],[1073,764]] => 3 (the largest clique is [23,764,1073]) [[1296,316],[1650,316],[1296,1650],[1296,52],[1650,711],[711,316],[1650,52], [52,711],[1296,711],[52,316],[52,1565],[1565,1296],[1565,316],[1650,1565], [1296,138],[1565,138],[1565,711],[138,1650],[711,138],[138,144],[144,1860], [1296,1860],[1860,52],[711,1639]] => 6 (the largest clique …

30
没有人知道GAU编号
让我向您介绍GAU编号 GAU(1) = 1 GAU(2) = 1122 GAU(3) = 1122122333 GAU(4) = 11221223331223334444 GAU(6) = 11221223331223334444122333444455555122333444455555666666 ... GAU(10) = 11221223331223334444122333444455555122333444455555666666122333444455555666666777777712233344445555566666677777778888888812233344445555566666677777778888888899999999912233344445555566666677777778888888899999999910101010101010101010 这个挑战非常简单! 给定整数n> 0,求出GAU(n)的位数 例 让我们使GAU(4) 采取以下步骤(直到达到4)并将它们连接起来 [1][122][122333][1223334444] 您必须将每个数字写成它的值多次,但是每次必须从1开始计数 让我们尝试使GAU(5) 必须从1数到1 [1] 然后从1到2(但每个数字重复其值的次数) [122] 然后从1到3 [122333] 然后从1到4 [1223334444] 最后是1到5(这是最后一步,因为我们想找到GAU(5)) [122333444455555] 现在我们执行所有这些步骤并将它们串联起来 ,结果是GAU(5) 11221223331223334444122333444455555 我们对这些GAU编号的位数感兴趣。 测试用例 输入⟼输出 n ⟼ Length(GAU(n)) 1 ⟼ …

22
让你在我身后撒旦总理!
撒旦·普里姆斯 他们是谁? 它们Primes包含666 以下内容:撒旦-总理:[46663,266677,666599,666683,616669] 这些不是:[462667,665669,36363631,555] 情节 每个大于6661的数字后面都有撒旦·普里姆斯 挑战 给定一个整数,n>6661可以找到(或相等)和自己最近的撒旦素数。 例子 整数n=30000有3撒旦素数(SP)背后:[6661, 16661, 26669]。 您的代码必须返回26669最接近它的代码 测试用例 输入->输出 6662->6661 10000->6661 66697->66697 (a SP returns himself) 328765->326663 678987->676661 969696->966677 规则 您的代码应适用于n您语言范围内的任何代码。 这是代码高尔夫球,因此最短答案以字节为单位!
22 code-golf  primes 

30
自己添加一个数组
今天的挑战是获取一个数组,将其拆分为多个块,然后添加这些块。 这是这样的:程序或函数将被赋予一个整数数组a和一个块大小L。数组应拆分为size个数组L,如果不能将数组长度整除,L则该数组后面应附加0,这样就可以将其整除。数组分块后,所有分块将逐个元素地添加在一起。然后输出结果数组。 您可以假定L大于0,这a是非空的。您不能假设a的内容为正。 这是一个例子: [1,2,3,4,5,6,7,8], 3 => [1,2,3]+[4,5,6]+[7,8,0] => [1+4+7,2+5+8,3+6+0] => [12,15,9] 测试用例: Array Length Output [1] 1 [1] [1] 3 [1,0,0] [0] 3 [0,0,0] [1,2] 3 [1,2,0] [1,2] 1 [3] [-1,1] 2 [-1,1] [-7,4,-12,1,5,-3,12,0,14,-2] 4 [12,-1,0,1] [1,2,3,4,5,6,7,8,9] 3 [12,15,18] 这是代码高尔夫球,最少字节获胜!

22
模乘逆
您的任务是给定两个整数,a并b计算模b的模乘法乘法逆(如果存在)。 模的a模逆b是一个c这样的数字ac ≡ 1 (mod b)。b对于任何一对a和,此数字都是唯一的模b。它的存在只有的最大公约数a和b是1。 在维基百科页面的模反元素可以,如果你需要关于主题的更多信息,进行咨询。 输入输出 输入以两个整数或两个整数的列表形式给出。您的程序应输出一个数字,即间隔中的模乘逆0 < c < b,或者一个指示没有逆的值。该值可以是任何值,除了range中的数字之外(0,b),也可以是一个例外。但是,对于没有倒数的情况,该值应该相同。 0 < a < b 可以假设 规则 该程序应在某个时候完成,并应在不到60秒的时间内解决每个测试用例 适用标准漏洞 测试用例 以下测试用例以以下格式提供: a, b -> output 1, 2 -> 1 3, 6 -> Does not exist 7, 87 -> 25 25, 87 -> 7 2, 91 -> 46 …

13
折叠连续的整数
相关:告诉我我必须做多少数学问题! 挑战 给定一个严格正的严格递增整​​数列表L和L的长度3≤N≤的整数,用一个破折号替换L的长度≥N的连续整数游程的中间整数-。 规则 水平空格不相关。 您可以选择保留语言默认列表格式的介绍人,分隔符和终止符。请参阅下面的格式化示例。 资料范例 所有这些示例都使用L = 3 5 6 7 8 10 11 12 14 16 17 18 19 20 21 22 24。 N = 3 → 3 5 - 8 10 - 12 14 16 - 22 24 N = 4 → 3 5 - 8 …

23
分形大教堂
给定正整数n >= 1,输出n以下结构的第一行: # # # ### # # # # # ## ## ##### # # # # # # # # # # ### # ## ## ## # ## ### ### ####### 的n第1索引的行是的二进制表示n,而不复制的最后一个字符的镜像,以#代替1和<space>到位0的所有行居中。 您必须以ASCII艺术形式输出,但是您可以使用任何非空白字符代替#示例中使用的字符。允许尾随空格,并允许尾随换行符。输出必须类似于示例,并且没有多余的前导空格或前导换行符。 您可以在此处查看分形大教堂的前1023行。 为了生成更大的测试用例,这是Python中的非引用参考实现

8
等于和的产品,反之亦然
一个有趣的等价对是1 + 5 = 2·3和1·5 = 2 + 3。像这样的有很多,另外一个是1 +1 + 8 = 1·2·5和1·1·8 = 1 + 2 + 5。通常,n个正整数的乘积等于n个正整数的和,反之亦然。 在此挑战中,必须为输入n> 1生成所有这样的正整数组合(不包括置换)。您可以以任何合理的格式输出它们。例如,n = 3的所有可能解为: (2, 2, 2) (1, 1, 6) (1, 2, 3) (1, 2, 3) (1, 3, 3) (1, 1, 7) (1, 2, 5) (1, 1, 8) 该程序可以在我的2GB RAM上在一分钟内生成最高n的最大组合,因此胜出的是64位Intel …

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.