Questions tagged «code-golf»

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

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 -> 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 -> 0 1 -> 16777216 42 -> 704643072 128 -> 2147483648 12648430 -> 4009738240 16885952 -> 3232235777 704643072 -> 42 3735928559 -> 4022250974 4009738240 …

18
六边形的三角形
假设由|/\字符组成的六边形的无限平铺。 / \ / \ / \ / \ | | | | | \ / \ / \ / \ / etc. | | | | \ / \ / \ / 给定输入n > 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 => [6 1 3] 对于数组中的每个数字,计算n第三角形数;[6 1 3] => [21 1 6] 对结果数组求和; [21 1 6] => 28 给定一个整数n,您的任务是反复计算n的数字角对应物,直到结果等于1,然后输出所有计算出的值。您可以以任何顺序输出值,并且可以在数组的开头随意包含原始数字。这是一个代码高尔夫球,因此最短的代码获胜。 测试用例 23 => 9 45 25 18 37 34 16 22 6 21 4 10 1 72 => 31 7 28 39 51 16 …
20 code-golf  math 


14
我要与几个州接壤?
小时候,我在床对面的墙上贴着一张美国大地图。当我无聊的时候,我会盯着那张地图思考一下。诸如四色定理之类的东西,或者哪个州与大多数其他州接壤。为了节省我一些计算的脑力,您将要发明一台时间机器,并告诉我输入有多少个州。由于时间很挑剔,因此需要尽可能短。 任务 在此页面上找到的美国50个州中的一个(全名或邮政缩写)(archive.org mirror),返回其毗邻的州数。以下是本网站上所有完整州名称输入到相邻州数量的映射。 Missouri, Tennessee -> 8 Colorado, Kentucky -> 7 Arkansas, Idaho, Illinois, Iowa, Nebraska, New York, Oklahoma, Pennsylvania, South Dakota, Utah, Wyoming -> 6 Arizona, Georgia, Massachusetts, Michigan, Minnesota, Nevada, New Mexico, Ohio, Virginia, West Virginia -> 5 Alabama, Indiana, Kansas, Maryland, Mississippi, Montana, North Carolina, Oregon, …
20 code-golf  number 

30
计算数组中的更改
今天的任务是编写一个程序或函数,该程序或函数采用整数数组,并计算从左到右的次数,即值发生变化的次数。通过示例更容易显示:[1 1 1 2 2 5 5 5 5 17 3] => [1 1 1 **2** 2 **5** 5 5 5 **17** **3**] => 4 测试用例: Input | Output [] | 0 [0] | 0 [0 1] | 1 [0 0] | 0 [1 2 3 17] | 3 [1 …

23
列表是可分割的吗?
启发(与解释被盗)本 背景 假设您有两个列表A = [a_1, a_2, ..., a_n]和B = [b_1, b_2, ..., b_n]整数。我们说A是潜在的,可分割的B,如果有一个置换B,使得a_i整除b_i所有i。问题是:是否可以重新排序(即置换)B以便所有人都a_i可以整除?例如,如果您有b_ii A = [6, 12, 8] B = [3, 4, 6] 那么答案是True,因为B可以重新排序是B = [3, 6, 4],然后我们就会有a_1 / b_1 = 2,a_2 / b_2 = 2和a_3 / b_3 = 2,所有这一切都是整数,因此A是潜在的,整除B。 作为应该输出的示例False,我们可以有: A = [10, 12, 6, 5, 21, 25] B …

30
求N的除数之和
编写一个程序,在屏幕上显示用户输入的1到N范围内的数字(1≤N≤100)的除数之和。 这是OEIS A000203。 例子: 输入 7 7 / 1 = 7 7 / 7 = 1 7 + 1 = 8 输出 8 输入 15 15 / 1 = 15 15 / 3 = 5 15 / 5 = 3 15 / 15 = 1 15 + 5 + 3 …

21
折叠整数以节省空间!
疯狂的数学家拥有大量的数字,因此他留下的空间非常有限。为了节省一些钱,他必须折叠整数,但是不幸的是他确实很懒。如果您想帮助他,您的任务是创建一个函数/程序,该函数可以折叠一个给定的正整数以表示我们的数字疯子。 如何折叠整数? 如果可以用位数之和均匀除以它,请用位数之和除。如果不满足该要求,则将其余数除以位数之和。重复该过程,直到达到结果1。折叠后的整数是您必须执行的操作数。让我们举个例子(例如1782): 获取其数字的总和:1 + 7 + 8 + 2 = 18。1782被整除18,所以下一个数字是1782 / 18 = 99。 99不能被整除9 + 9 = 18,因此我们取余数:99 % 18 = 9。 9显然可以被整除9,因此我们将其除以并得到1。 结果是3,因为要达到,需要3个操作1。 规则和规格 某些整数可能具有等于的数字总和1,例如10或100。您的程序无需处理此类情况。也就是说,您可以确保输入的整数不具有等于的数字总和1,并且使用给定整数进行的任何运算都不会导致数字的总和为1(1本身除外,即“目标”)。例如,您将永远不会收到10或20作为输入。 输入将是一个大于的正整数1。 默认漏洞适用。 您可以采用任何标准均值进行输入并提供输出。 测试用例 输入->输出 2-> 1 5-> 1 9-> 1 18-> 2 72-> 2 152790-> 2 152-> 3 666-> 3 …

25
保留/删除/增加顺序
这是我正在谈论的顺序: {1, 4, 5, 9, 10, 11, 16, 17, 18, 19, 25, 26, 27...} 从1开始,保持1,下降下一个2,保持下一个2,下降3,保持3,依此类推。是的,它也在OEIS(A064801)上! 挑战 给定一个整数n>0,找到上述序列的第n项 测试用例 Input -> Output 1->1 22->49 333->683 4444->8908 12345->24747 这是代码高尔夫球,所以最短答案以字节为单位!祝好运!

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.