编程拼图和代码高尔夫

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

26
给定数字,打印出其“总和”
给定一个数字作为输入,打印出其总和 什么是集体款项? 考虑数字13214,输入 从左侧开始遍历每个数字,我们将能够获得其总和。 1 表示查看第一个数字,并将其添加到总和中,sum = 1 3 表示查看“前3位数字”并将其添加到总和中,总和= 1 + 132 2 表示查看“前2位数字”并将其添加到总和中,总和= 1 + 132 + 13 1 表示查看第一个数字,并将其添加到总和中,总和= 1 + 132 + 13 + 1 4 表示查看“前4位数字”并将其添加到总和中,总和= 1 + 132 + 13 + 1 + 1321 总和= 1468这是您的输出 特别案例: 如果遇到0,则显然我们将总和保持不变 The number 1301 would have a …

27
水平对齐的ASCII艺术
您的任务是接受两个“ ASCII Art”作为输入,并水平对齐每个艺术品。 例如,假设您有两个字符串,"abc\ndef"并且"123\n456"。您需要将它们水平对齐以产生字符串"abc123\ndef456“。我称其为“水平对齐”,因为在打印时输入看起来像这样: abc def 和: 123 456 打印后的输出将如下所示: abc123 def456 请注意如何将一个输入放置在另一个输入的旁边。 输入值 输入将是字符串,并且可以作为两个单独的参数或字符串序列。 艺术人物的十进制代码范围为32-126(含)。 可以支持任意数量的艺术来对齐,而不是仅支持两种(但是显然您必须支持至少两种)。 您可以假设每种艺术品的尺寸都相同,并且至少包含一行。 您必须至少能够支持100x100的角色艺术。 为了与站点上的约定保持一致,参数顺序无关紧要。左边或右边是哪种艺术都没有关系。 输出量 输出将是如上所述的对齐艺术,返回或输出到标准输出。 可选的任何结尾空格。 对齐的艺术之间不得有视觉分隔符。 输入和输出艺术必须是\n或\r字符串分隔。允许2D阵列将太琐碎。 提交的内容可能是功能或完整程序。 测试用例: "abc\ndef", "123\n456" -> "abc123\ndef456". "qwertyuiop\n asdfghjkl", "Some other\nTextFiller" -> "qwertyuiopSome other\n asdfghjklTextFiller" " * \n *** \n*****\n *** \n * \n", " + …

10
最小的稀疏标尺
长度为n的标准标尺在位置0、1,...,n(以任何单位为单位)上具有距离标记。一个稀疏的统治者拥有这些商标的一个子集。标尺可以测量距离ķ如果它具有在位置的标记p和q与p - q = ķ。 挑战 给定正整数n,输出长度为n的稀疏标尺所需的最小标记数,以便它可以测量所有距离1,2,...,n。 这是OEIS A046693。 例如,对于输入6,输出为4。即,标尺为0、1、4、6的标尺工作为1-0 = 1、6-4 = 2、4-1 = 3、4-0 = 4、6-1 = 5和6-0 = 6。 附加规则 该算法应对任意大的n有效。但是,如果程序受内存,时间或数据类型的限制,则可以接受。 输入/输出可以通过任何合理的方式获取/产生。 允许使用任何编程语言编写程序或功能。禁止出现标准漏洞。 以字节为单位的最短代码获胜。 测试用例 1 -> 2 2 -> 3 3 -> 3 4 -> 4 5 -> 4 6 -> 4 7 -> 5 8 …

11
给我打印一个秤
不好了!我很快就要进行理论测试,还不记得秤了!通过打印以下内容来帮助我记住我的主要体重秤: 7♯ - C♯ D♯ E♯ F♯ G♯ A♯ B♯ C♯ 6♯ - F♯ G♯ A♯ B C♯ D♯ E♯ F♯ 5♯ - B C♯ D♯ E F♯ G♯ A♯ B 4♯ - E F♯ G♯ A B C♯ D♯ E 3♯ - A B C♯ D E F♯ G♯ …

16
贫因数
如果的正整数具有(严格地)比其后继者和前任者少的素数(不计算多重性),我们将其称为因数贫乏数。N&gt;2ñ&gt;2N > 2 换句话说,和,其中是独特的素因数的数。ω (Ñ )&lt; ω (Ñ + 1 )ω (Ñ )ñω(N)&lt;ω(N−1)ω(N)&lt;ω(N−1)\omega(N) < \omega(N - 1)ω(N)&lt;ω(N+1)ω(N)&lt;ω(N+1)\omega(N) < \omega(N + 1)ω(N)ω(N)\omega(N)NNN 任务 您可以在以下I / O格式中进行选择: 取整数并输出因数贫乏的。如果选择此选项,则 可以是0或1索引。Ñ 第 ÑNNNNthNthN^{\text{th}}NNN 取一个正整数并输出前因数贫乏的数字。NNNNNNN 无限期打印序列。 您可以使用任何编程语言,通过任何标准方法接受输入并提供输出,同时请注意,默认情况下禁止这些漏洞。这是代码高尔夫球,因此遵守规则的最短提交将获胜。 我将不包括单独的测试用例,因为竞争的方法不同,但是您可以参考此序列的前100个术语,即OEIS A101934: 11, 13, 19, 23, 25, 27, 29, 37, 41, 43, 47, 49, 53, 59, 61, 64, …

20
在斐波那契数列Mod K中找到缺失的数字
受此Math.SE问题的启发。 背景 的斐波纳契数列(称为F)是序列,开始0, 1使得每个号码(F(n))(前两个后)是两个前(总和F(n) = F(n-1) + F(n-2))。 斐波那契数列mod K(称为M)是斐波那契数列mod K()的序列M(n) = F(n) % K。 可以证明,斐波那契数列对所有K都是循环的,因为每个值都是由前一对确定的,并且只有K 2个可能的非负整数对都小于K。因为斐波那契数列K在第一个重复的术语对之后是循环的,在第一个重复的术语对之前从未出现在Fibonacci序列mod K中的数字将永远不会出现。 对于K = 4 0 1 1 2 3 1 0 1 ... 对于K = 8 0 1 1 2 3 5 0 5 5 2 7 1 0 1 ... 请注意,对于K = …

9
纸牌游戏中的手形
一副纸牌是S西服和R等级的直角乘积。许多(尽管不是全部)纸牌游戏使用S=4和R∊{6,8,13}。一副H牌从甲板上发出。它的分布(也称为“手形”)是一个数组,用于描述您从每套西服中获得多少张牌,而忽略西服的顺序(因此,就像是多套)。鉴于分布D满足len(D)=S,1≤sum(D)=H≤S×R,0≤D[i]≤R,D[i]≥D[i+1],发现它发生的概率。 输入:一个整数R和一个数组D。 输出:小数点后至少5位数字的概率;尾随零可以被跳过;科学记数法还可以。 禁止漏洞。最短的胜利。 测试: R D probability 13 4 4 3 2 -&gt; 0.2155117564516334148528314355068773 13 5 3 3 2 -&gt; 0.1551684646451760586940386335649517 13 9 3 1 0 -&gt; 0.0001004716813294328274372174524508 13 13 0 0 0 -&gt; 0.0000000000062990780897964308603403 8 3 2 2 1 -&gt; 0.4007096203759162602321667950144035 8 4 2 1 1 -&gt; 0.1431105787056843786543452839337155 …

8
整理列表
考虑“挑选”嵌套列表的过程。拣配定义如下: 如果参数是列表,则从列表中随机(均匀地)选取一个元素,然后从中选择一个元素。 如果参数不是列表,则只需将其返回即可。 Python中的示例实现: import random def pick(obj): if isinstance(obj, list): return pick(random.choice(obj)) else: return obj 为简单起见,我们假定嵌套列表仅包含整数或其他嵌套列表。 给定任何列表,就有可能创建一个扁平化的版本,该版本无法通过来区分pick,即从中进行选择会以相同的概率产生相同的结果。 例如,“拼合”列表 [1, 2, [3, 4, 5]] 产生清单 [1, 1, 1, 2, 2, 2, 3, 4, 5] 。简单展平是无效的原因是,子列表的元素被选择的可能性较低,例如,列表中[1, [2, 3]]的1被选择的可能性为2/4 = 1/2,而3和4的被选择的可能性为1/4每个机会。 还要注意,从单例列表中进行选择等同于从其元素中进行选择,而从空列表中进行选择则没有任何意义。 挑战 给定一个嵌套的非负整数列表,返回一个扁平化的非负整数列表,从中进行拾取会以相同的概率产生相同的结果。 这是代码高尔夫球,因此最短的有效答案(以字节为单位)获胜。 技术指标 输入[2, 3, 4],[2, 2, 2, 2, …

16
简单的降价渲染
有几种方法可以在Stack Exchange网络上的帖子上创建标题。在PPCG 上最常用的格式是1: # Level one header ## Level two header ### Level three header 注意井号后的空格。另外,请注意,不包括结尾的哈希标记。 挑战: 以(可能是多行)字符串作为输入,并以以下格式输出该字符串: 如果标头为1级,则每个字母输出4 x 4次 如果标头为2级,则每个字母3 x 3次输出 如果标头为3级,则每个字母2 x 2次输出 如果一行不是标题,则按原样输出。 为了显示: --- Level 1 --- # Hello --- Output--- HHHHeeeelllllllloooo HHHHeeeelllllllloooo HHHHeeeelllllllloooo HHHHeeeelllllllloooo --- Level 2 --- ## A B C def …

13
二进角正方形对角线序列
的二进制正方形对角线序列构造如下: 取正自然数的序列: 1,2,3,4,5,6,6,7,8,9,10,11,12,13,14,15,16,17,... 将每个数字转换为二进制: 1,10,11,100,101,110,111,1000,1001,1010,1011,1100,1101,1110,1111,10000,10001,... 将它们串联: 11011100101110111100010011010101111001101111011111000010001 ... 从开始n=1,生成边长增加的正方形,并用n上述序列的元素从左到右,从上到下填充:1个1 0 1 11 0 0 1 0 1 1 1 01 1 1 1 0 0 0 1 0 0 1 1 0 1 0 10 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 …

23
找出数字的BCD差异
BCD差异 给定一个整数n,通过将每个十进制数字替换为其4位二进制表示形式,将其转换为BCD(二进制编码的十进制) 234 -&gt; 0 0 1 0 0 0 1 1 0 1 0 0 然后旋转二进制数字列表,以找到最大和最小的数字,该列表可以表示该数字而无需其他重新排列。 max: 1 1 0 1 0 0 0 0 1 0 0 0 (the entire list rotated left 6 times) min: 0 0 0 0 1 0 0 0 1 1 0 1 …

30
交换字节序
众所周知,(字节可寻址的)硬件存储器可分为两类:little-endian和big-endian。在小端存储中,字节在小(最低有效)端从0开始编号,而在大端存储则以相反的方式编号。 有趣的事实:这些用语基于乔纳森·斯威夫特(Jonathan Swift)的《格列佛游记》(Gulliver's Travels),其中小人国国王下令其公民在小端(因此,小端)破蛋,而叛军则在大端破其卵。 交换的工作方式 假设我们12648430在big-endian机器中的内存中有一个无符号整数(32位),看起来可能如下: addr: 0 1 2 3 memory: 00 C0 FF EE 通过反向字节顺序,我们得到的十六进制整数0xEEFFC000是4009738240十进制。 你的任务 编写一个程序/函数,该程序/函数接收十进制的无符号32位整数,并在如上所述交换字节序时输出结果整数。 规则 输入将始终在范围0至4294967295 可以将输出打印到STDOUT(跟踪换行符/空格很好)或返回 输入和输出均为十进制 无效输入的行为未定义 测试用例 0 -&gt; 0 1 -&gt; 16777216 42 -&gt; 704643072 128 -&gt; 2147483648 12648430 -&gt; 4009738240 16885952 -&gt; 3232235777 704643072 -&gt; 42 3735928559 -&gt; 4022250974 4009738240 …

18
六边形的三角形
假设由|/\字符组成的六边形的无限平铺。 / \ / \ / \ / \ | | | | | \ / \ / \ / \ / etc. | | | | \ / \ / \ / 给定输入n &gt; 0,输出该平铺的三角形部分,如以下示例所示,并_在六边形的中间锚定一个: n=1 \_/ n=2 \/ \/ \_/ n=3 \ | / \/ \/ \_/ n=4 …

22
建立一个棋盘
对于此挑战,您将在棋盘游戏开始时打印每块的坐标和颜色。 在棋盘上为每个正方形(索引为0-7)输入x和y(用逗号分隔),然后在板的顶部(靠近y = 0)输入“ r”或“ b”(红色或黑色) )为红色,底部为黑色。件之间需要换行符,并且不需要空格。 这是代码高尔夫,因此答案以字节计分,而字节越少越好。 尾随换行符是允许的,但不是必须的,并且顺序必须与下面的顺序完全相同。 所需的输出: 0,0r 0,2r 0,4r 0,6r 1,1r 1,3r 1,5r 1,7r 2,0r 2,2r 2,4r 2,6r 5,1b 5,3b 5,5b 5,7b 6,0b 6,2b 6,4b 6,6b 7,1b 7,3b 7,5b 7,7b

30
三角数
甲三角形号码是可以被表示为连续的正整数的总和,从1开始。它们也可以与式表示的数n(n + 1) / 2,其中n一些正整数。 数字的数字角对应项是通过以下方式计算的: 将数字拆分成一个数字数组,例如 613 =&gt; [6 1 3] 对于数组中的每个数字,计算n第三角形数;[6 1 3] =&gt; [21 1 6] 对结果数组求和; [21 1 6] =&gt; 28 给定一个整数n,您的任务是反复计算n的数字角对应物,直到结果等于1,然后输出所有计算出的值。您可以以任何顺序输出值,并且可以在数组的开头随意包含原始数字。这是一个代码高尔夫球,因此最短的代码获胜。 测试用例 23 =&gt; 9 45 25 18 37 34 16 22 6 21 4 10 1 72 =&gt; 31 7 28 39 51 16 …
20 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.