编程拼图和代码高尔夫

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

8
最小出租车距离图
挑战说明 在出租车度量中,两点之间的距离定义为: 考虑一个只有零和一的矩阵: 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 让我们每个映射1到到最接近的距离不同 1的矩阵(当然,假设相邻两行/列之间的距离等于1): 0 0 0 3 0 2 0 0 0 0 0 0 0 0 0 1 0 0 3 0 …

4
这个数字怎么样?
费马数是可表示为2 2 x +1且带整数x的正整数。 现在让我们定义一个称为“ Fermat-ness”的数字的属性: 从基数开始,该数的费马性比二的幂的链的长度小一,其中二的幂被扩展以最大化费马性。 非费马数的数字的费马率为零。 因此,17(= 2 2 2 2 0 +1)具有费马能级3。 挑战 给定一个非零正整数作为输入,输出数字的费马性。 规则 您可以采用二进制,十进制,十六进制,大数字等输入形式,也可以采用让您最满意的格式 您的解决方案必须能够处理长度超过64的数字,无论您使用哪种表示形式。 仅非负整数幂。 当然禁止出现标准漏洞。 这是代码高尔夫球,因此最短的答案会获胜。 测试用例 这些是格式input->output。输入为十六进制以节省空间。 10000000000000000000000000000000000000000000000000000000000000001 -> 2 1000000000000BC00000000000000000000000000000000001000000000000001 ->0 1234567890ABCDEF -> 0 100000000000000000000000000000001 -> 1 5 -> 2 11 -> 3 10001 -> 4 101 -> 1 十进制相同: 115792089237316195423570985008687907853269984665640564039457584007913129639937 …

3
一条河可以穿越多少条路?
想象一条直河和一条穿过桥梁穿越河N次的道路。这条路不会自行循环,并且会无限长。这条路将被视为一条蜿蜒的道路。一个开放的曲折是一个开放的曲线,该不相交本身和在两端,其交叉的线延伸无限Ñ次。 有效曲折可以完全通过其访问的交点的顺序来描述。 一个曲折可以与n个相交的相交的不同模式的数量为n 个平均数。例如,n = 4: 该序列的前几个数字是: 1, 1, 1, 2, 3, 8, 14, 42, 81, 262, 538, 1828, 3926, 13820, 30694, 110954... 这是OEIS序列A005316。 挑战 编写一个程序/函数,将正整数n作为输入并打印第n个平均数。 技术指标 适用标准I / O规则。 标准的漏洞被禁止。 您的解决方案可以是0索引或1索引,但是请指定。 挑战并不是要找到所有语言中最短的方法,而是要找到每种语言中最短的方法。 除非另有说明,否则您的代码通常以UTF-8编码形式以字节计分。 允许使用内置函数来计算此序列,但鼓励使用不依赖内置函数的解决方案。 鼓励甚至对“实用”语言进行解释。 测试用例 这些是0索引的。请注意,如果您的语言默认情况下无法处理这么大的数字。 Input Output 1 1 2 1 11 1828 14 30694 21 73424650 …

1
Python清单中最常见的元素
这是使用Python打高尔夫球的提示问题,这是main的主题。 我正在寻找以最短的方法获取Python列表中所有最常见元素的最短方法。这是我尝试过的方法,假设列表位于一个名为的变量中l: from statistics import* mode(l) 如果存在多种模式,则会引发错误。 max(l,key=l.count) 这仅返回1个项目,我需要获取所有具有最大数量的元素。 from collections import* Counter(l).most_common() 这将返回的元组列表(element, count),按计数排序。从中我可以拉出所有相应元素等于第一个元素的所有元素,但是我认为没有比这更好的高尔夫方法了: from collections import* c=Counter(l).most_common() [s for s,i in c if i==c[0][1]] 我敢肯定有更短的方法! 另外,如果可以在不进行变量分配或不使用的情况下完成此操作l,则我可以将其余代码保留为lambda表达式,以节省更多字节。 编辑:根据@Uriel的建议,我们可以执行以下操作: {s for s in l if l.count(s)==l.count(max(l,key=l.count))} 我可以别名list.count几个字节: c=l.count;{s for s in l if c(s)==c(max(l,key=c))} @Uriel指出我们可以通过以下方式获得更多的字节map: c=l.count;{s for s in l …
13 code-golf  tips  python 

16
给我建一座城堡楼梯!
您将得到一个由可打印ASCII组成的字符串(没有换行符)。您的任务是为我的城堡建造一个漂亮的楼梯。 如何建立一个漂亮的楼梯? 首先,您应该获得String的所有旋转。例如,字符串abcd具有以下旋转角度:(abcd, bcda, cdab, dabc每个字符都移到末尾,直到到达最后一个字符为止)。 现在,我们将每个旋转彼此叠加: abcd bcda cdab dabc 我们不能真正爬上直墙,所以我们必须建造楼梯。这意味着您应该在每次旋转之前在旋转列表中为其索引添加一些空格: abcd bcda cdab dabc 您还需要连接到我城堡另一侧的楼梯,因此您应该像下面这样建造楼梯,反转每次旋转并增加一些间距: abcd dcba bcda adcb cdab badc dabccbad 这是code-golf,因此以字节为单位的最短代码获胜,并且适用标签的标准规则。 测试用例 输入:abcd,输出: abcd dcba bcda adcb cdab badc dabccbad 输入:aaaa,输出: aaaa aaaa aaaa aaaa aaaa aaaa aaaaaaaa 输入:Code golf,输出(注意空格): Code golf flog edoC ode golfC …

7
筷子用KoTH点突变
基本规则(与我的不同) 故事 现在是4579年,人类现在有2只手,每只手有1001个手指。筷子已变得毫无根据。而且@Dennis比@Martin代表更多...手绘红色圆圈现在已被否决... Jon Skeet在每个SE网站上都达到2万亿代表...是的,我知道 筷子是一个已经解决的手游戏。因此,为了解决这个问题,我创建了它的变异体。我增加了手指的数量。 游戏规则 播放方式 每个人都从两只手开始。每只手有1001根手指。每只手都以每只手上的一根(一根)手指开始。在回合中,您可以“击中”其他玩家的手。要进行击中,请选择一只手来进行打击,然后选择一只手来进行打击。现在,被击中的手的手指数量与刚开始时的手指数量相同,并且在您用其击打时手上的手指数量也是如此。 前 P1: 1,1 P2: 1,1。P1[0]命中P2[1]。现在手指在P1:1,1 P2:1,2。现在P2[1]点击p1[0]。现在,手指为P1:3,1P2 1,2。 如果一只手的手指向上伸出1001或更多,则那只手伸出。然后,获得帮助的玩家(轮到他们)可以“分开”。分裂是指将手伸进去并且将手指的数量减半(向上舍入),然后将这些手指放在另一只手上,将其重新伸入。 前 P1:1000,2P2 7,7。P2[0]命中P1[0]。分数为P1:0,2P2 1,1。P1[1]轮到他拆分,得分为P1:1,1和P2 7,7。 当一名玩家举手时游戏结束。得分由获胜者的手指数量来得分。积分越多越好。失败者一分未得。 使用了其他规则,但是这里使用了这些规则。 每个人都扮演所有人(循环赛) 结束游戏 从您赢得的每一轮中累计您的积分。然后平均每个人的分数。将您的总数除以平均分,得出最终分数。多数积分获胜。 实际规则 标准漏洞 请不要不尝试解决游戏。我实际上必须能够运行它:P 确保机器人可以快速运行。判断轮数需要一段时间 程序中需要的所有库都必须位于默认的python库中。同时列出您需要导入的文件。进口也只是基本的进口(在数学我做的:import math) 答案必须在Python 3.x中有效 处理程序 您的机器人将是带有play功能的自己的Python 3文件。 play将通过两个分别由两个数字组成的列表。该数字表示每只手上的手指数。第一个清单是您自己的手。 如果您选择打对方的手,则返回两位列表。第一位是您用来击打的手的索引(对于第一手0,1最后一位),第二位是您在对手上击打的手的索引。 如果选择拆分,则返回任何其他真实值。 多田! 控制器可以在这里找到。将每个漫游器保存在自己的文件中,并在中列出每个漫游器的文件名(不带.py)botnames。 最后说明: 您和其他漫游器将首先轮流使用。如果游戏没有在100,000(十万)回合中终止,则该游戏将终止并且任何机器人都不会赢。 不能保护控制器免受永久性移动的困扰,但是不必要的开销将被强烈反对。

2
这些辫子相等吗?
如果您不熟悉辫子理论,建议您先阅读本节。这个问题假设您至少熟悉手头的概念,并假设您熟悉小组理论 让我们定义σ Ñ为其中所述编织物Ñ从顶部越过所述第链(一个索引)的n + 1个链,和σ Ñ -是的逆σ Ñ(即在N + 1个链与第n个链交叉)。 编织物组乙Ñ然后通过产生<σ 1,σ 2,σ 3,。。。,σn -1 >。因此,B n上的每个编织都可以写成σ编织的乘积。1个 确定一组上的两个辫子是否相等并不是一件容易的事。这可能是很明显,σ 1 σ 3 =σ 3 σ 1,但它是不那么明显的是,例如σ 2 σ 1 σ 2 =σ 1 σ 2 σ 1。2 因此,问题是“如何确定两个辫子是否相同?”。上面的两个示例分别代表了这一点。通常,以下关系称为阿丁关系: σ 我 σ Ĵ =σ Ĵ σ 我 ; i-j> 1 σ 我 …

9
凯撒的转变
描述 凯撒移位(Caesar Shift)是一种非常简单的单字母密码,其中每个字母都被替换为字母中的一个字母。例: Hello world! -> IFMMP XPSME! (IBSLR, EGUFV!是实际挑战的输出,这是移动1的示例。) 如您所见,空格和标点符号保持不协调。但是,为防止猜测消息,所有字母均大写。通过将字母向后移,可以解密该消息,很方便,但是真的很容易被不知道该消息含义的其他人解密。 因此,我们将通过使用一种高级形式的密码来帮助Caesar:Self-shifting Caesar Shift! 挑战 您的任务是编写一个程序或函数,给定要加密的字符串,然后输出与输入相对应的加密字符串。先进的Caesar Shift的工作方式如下: 1. Compute letter differences of all adjacent letters: 1.1. Letter difference is computed like this: Position of 2nd letter in the alphabet -Position of 1st letter in the alphabet ======================================= Letter difference 1.2. …

10
三重平衡数
描述 如果将三部分中的每一部分中的数字总和为相同的数字,我们认为该整数具有至少三位数的三重平衡。我们按如下方式拆分数字: abcdefghi - Standard case: the number of digits is divisable through 3: abc def ghi abcdefgh - Number % 3 == 2: The outer groups are both assigned another digit abc de fgh (the inner group will have one digit less than both outer groups) abcdefghij - Number …

2
循环字符串,隐藏程序
编写3个程序来执行以下任务: 让A,B,C这三个程序的源代码; 如果A产生BC作为输出, 如果B运行CA, 如果C运行AB产生; 因此,每个程序都会编写一个字符串(为每个程序循环),并对其隐藏自身。 其他但必不可少的约束: 禁止出现标准漏洞; 每个程序必须至少1个字节长; 三个程序中的每个程序都必须使用不同的语言编写; 如果您的提交具有以下格式,那就太好了: 语言A(A的大小)-语言B(B的大小)-语言C(C的大小)-得分 A B C <extra stuff> 获胜者是获得最低分数的人,这是三个程序的总和。
13 code-golf  quine 

22
输出第n个响铃号码
甲贝尔数(OEIS A000110)是方式来划分一组n个标记的(不同)的元素数。第0个响铃编号定义为1。 让我们看一些示例(我使用方括号表示分区的子集和大括号): 1: {1} 2: {[1,2]}, {[1],[2]} 3: {[1,2,3]}, {[1,2],[3]}, {[1,3],[2]}, {[2,3],[1]}, {[1],[2],[3]} 有多种计算贝尔编号的方法,您可以自由使用其中任何一种。这里将描述一种方法: 计算贝尔数的最简单方法是对二项式系数使用类似于Pascal三角形的数字三角形。钟形数字出现在三角形的边缘。从1开始,通过将上一行的最后一个条目作为第一个条目,然后将每个新条目设置为其左邻居加上左上邻居,来构造三角形中的每个新行: 1 1 2 2 3 5 5 7 10 15 15 20 27 37 52 您可以使用0索引或1索引。如果使用0索引,则输入3应该为输出5,但是2如果使用1索引,则应该输出。 您的程序必须输出15号铃号1382958545。从理论上讲,您的程序应该能够处理更大的数字(换句话说,不要对解决方案进行硬编码)。 编辑:您不需要处理输入0(对于0索引)或1(对于1索引),因为它不是由三角方法计算的。 测试用例(假设索引为0): 0 -> 1 (OPTIONAL) 1 -> 1 2 -> 2 3 -> 5 4 -> …
13 code-golf  math 

4
平方根数
任务如下:给定一个正整数x和一个素数n > x,输出最小的正整数y,使(y * y) mod n = x。这个问题的重要部分是下面指定的时限,其中不包括强力解决方案。 如果没有这样的值,y则应输出您的代码N。 测试用例 (2, 5, N), (3, 5, N), (4, 5, 2), (524291, 1048583, N), (529533, 1048583, N), (534775, 1048583, 436853), (540017, 1048583, 73675), (536870913, 1073741827, 375394238), (542239622, 1073741827, 267746399), (547608331, 1073741827, N), (552977040, 1073741827, 104595351), (1099511627676, 1099511627791, N), (1099511627677, 1099511627791, 269691261521), …

18
重复连续数字产品总和收敛
给定一个正整数n(例如:n=1234444999) 分成连续数字运行: [1, 2, 3, 4444, 999] 以每次运行的数字产品为例。 [1, 2, 3, 4*4*4*4, 9*9*9] = [1, 2, 3, 256, 729] 总结一下... 991 重复直到其收敛为一个数: 1234444999 991 82 10 1个 返回最后一个号码。 测试用例 BASE CASES: 0 = 0 ... 9 = 9 OTHER CASES: 1234444999 = 1 222222222222222 = 8 111222333444555666777888999000 = 9 11122233344455566677788899 …

3
引用我的报价!
甲报价是“一种表达的重复作为另一个的一部分”。在美式英语中,引号与双引号(“)一样,如上一句话。但是,当引号出现在另一个引号内时,此规则有所不同。在这种情况下,内部引号由单引号引起来(')。 挑战 给定一个字符串作为输入,请通过交换用于内部引号的双引号和单引号来输出该字符串的引用版本。 不过,只有一个问题-并非所有的单引号都用于引号!对于此挑战,当且仅当以下情况下,才使用单引号引起来: 标记之前是非字母数字字符,或者 标记后跟非字母数字字符,没有空格 报价中使用的标记必须保证平衡;也就是说,您不需要处理无效的输入。此外,双引号将仅在单引号可用于表示引号的情况下使用。 测试用例 A man, a plan, a canal, Panama. "A man, a plan, a canal, Panama." Socrates once said, "An unexamined life is not worth living." "Socrates once said, 'An unexamined life is not worth living.'" @musicman523 said, "Socrates once said, 'An unexamined life …

10
我是二手出租车吗?
背景 Ramanujan的电话号码(1729)被称为出租车出租车号码,这是因为(很可能是伪造的)Hardy登上出租车去医院看Ramanujan的传说,这个电话号码对他来说似乎很平淡。 从那以后,它被称为“计程车编号”一类整数中最著名的,它可以以两种(有时是“ k”)不同的方式表示为(正整数的)n个n次幂之和。 1729是可通过2种不同方式表示为2个立方的总和的最小自然数,使其成为第一个“ 3,2”出租车分类号(一般为“ n,k”)。 挑战 给定一个数字,请确定它是否为“ 3,2”“二级出租车编号”-表示它满足与1729(2个唯一的多维数据集)相同的约束,但不必是“ 3”的最小整数,2“类(当然是1729)。 示例案例: 1729 = 10 ^ 3 + 9 ^ 3 = 12 ^ 3 + 1 ^ 3 4104 = 15 ^ 3 + 9 ^ 3 = 16 ^ 3 + 2 ^ 3 13832 = 2 ^ …

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.