编程拼图和代码高尔夫

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


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 这是代码高尔夫球,所以最短答案以字节为单位!祝好运!

15
预测碰撞:强盗会逃脱吗?
将一条道路视为一条数字线,从起点开始0并无限期地延伸: ................................................................. 路上有两辆车:C和R。C是试图抓住的警察R,强盗。C在开始0,并R开始在道路上的某个地方: C.............................R.................................. 警察已经在移动-他正在追捕强盗。他的速度恒定。强盗刚跳上他的车。他在加速。每一刻,强盗的速度都随着他的加速而增加。 说警察的速度是7,强盗的加速度是1。如果抢劫犯始于30,这是每次滴答声时的样子: C.............................R.................................. .......C.......................R................................. ..............C..................R............................... .....................C..............R............................ ............................C...........R........................ ...................................C.........R................... ..........................................C........R............. .................................................C........R...... 在上述最后一个滴答声之后,强盗的速度等于警察的速度,他仍然领先。由于警察以恒定的速度移动并且强盗仍在加速,因此强盗逃逸,因此您输出的是真实值。但是,如果警察的速度9... C.............................R.................................. .........C.....................R................................. ..................C..............R............................... ...........................C........R............................ ....................................C...R........................ .............................................X................... ...然后警察在强盗可以离开之前赶上强盗(用标记X),因此您输出假值。 你的任务 给定三个输入-警察的速度,强盗的位置和强盗的加速度-确定强盗是否会逃脱。 规则 警察总是从开始0。 所有输入均为正整数。 如果在任何滴答声后,警察的位置大于或等于强盗的位置,则警察会抓住强盗。 尚未被抓的强盗就逃走了,他的速度比警察的还快。 您的程序必须在输出后终止。 强盗在移动每个刻度之前就加速了。 测试用例 Cop Speed, Robber Position, Robber Acceleration -> Output 7, 30, 1 -> truthy 9, 30, 1 -> falsey …

28
寻找你的伴侣
挑战 给定一个任意的2元组列表,并在其中一个元组中包含一个元素,则输出其“伙伴”,即给出a和[(i,j),...,(a,b),...,(l,m)]输出b。您可以假定所有元组都是唯一的,并且元组中的所有元素都是字符串。进一步假设您同时没有(x,y)和(y,x)。 测试用例 Input Output [("(", ")"), ("{", "}"), ("[", "]")], "}" "{" [("I'm", "So"), ("Meta", "Even"), ("This", "Acronym")], "Even" "Meta" [("I", "S"), ("M", "E"), ("T", "A")], "A" "T" [("test", "cases"), ("are", "fun")], "test" "cases" [("sad", "beep"), ("boop", "boop")], "boop" "boop" 最小字节获胜!

4
矩形差
在此挑战中,您将获得两个重叠的矩形,并且需要计算通过从另一个中删除一个而创建的矩形。 例如,如果您从黑色矩形中删除红色矩形: 您最终得到以下两个矩形集之一: 您还需要处理以下内容: 更明确地说: 您将输入两个矩形A和B的坐标。 您需要输出覆盖A的所有区域而没有B的最少的非重叠矩形。允许任何可能的覆盖 直角坐标作为4个整数传递。您可以将它们传递为两对(代表两个角点),也可以作为4个整数的元组/列表传递。您的输入和输出必须保持一致。 A和B不一定会重叠或接触,并且各自的面积至少为1 测试用例: [(0 0) (5 5)] [(3 4) (8 7)] -> [(0 0) (5 4)] [(0 4) (3 5)] # or [(0 0) (3 5)] [(3 0) (5 4)] [(2 4) (10 11)] [(5 5) (6 6)] -> [(2 4) (10 5)] …

21
在斐波那契数字内
挑战 给定一个整数输入,返回包含其内部输入的第一个斐波那契数以及该斐波那契数的索引(索引从0或1开始-取决于您,但请在您的答案中提及)。例如,如果输入为12,则程序将返回,26: 121393因为在数字(12 1393)中找到12,并且该数字位于斐波那契数的索引26处。 例子 给定输入: 45 您的程序应输出: 33: 3524578 输入: 72 输出: 54: 86267571272 输入: 0 输出: 0: 0 输入: 144 输出: 12: 144 计分 这是代码高尔夫球,因此每种语言中最短的答案将获胜。

29
运行列表的第二个最大值
给定一个整数列表,您的任务是输出前k个元素中的第二个最大值,对于2到输入列表长度之间的每个k。 换句话说,为输入的每个前缀输出第二个最大值。 您可以为第一个元素输出任意值(其中k = 1),也可以忽略此值,因为1个元素的列表没有第二个最大值。您可以假设输入中至少包含2个元素。 最短的代码胜出。 例子 Input: 1 5 2 3 5 9 5 8 Output: 1 2 3 5 5 5 8 Input: 1 1 2 2 3 3 4 Output: 1 1 2 2 3 3 Input: 2 1 0 -1 0 1 2 Output: 1 1 …

14
帕斯卡尔的菱形
Pascal的菱形(实际上是一个三角形)是通过添加以下模式获得的: * *** x 代替 * * x 这意味着每个单元格是该单元格正上方的行中的三个单元格和其上方的行2中的一个单元格的总和。就像Pascal的三角形一样,第零行上也有一个1生成三角形的单。 这是帕斯卡的菱形的前两排 1 1 1 1 1 2 4 2 1 1 3 8 9 8 3 1 任务 给定一个行号(从顶部开始)和一个列号(从该行的第一个非零项目开始)输出该特定单元格的值。两个输入都可以被索引为1或0(如果需要,可以混合和匹配)。 这是代码高尔夫球,因此您应力争使源代码的文件大小尽可能小。 OEIS A059317

11
长发公主,长发公主,放下你的头发!
描述 我想每个人都知道长发公主和王子的童话。对于那些不喜欢的人:在这里阅读。但是,长发公主刚刚剪了头发,所以它可能还不够长,无法让她的王子爬上去!她可能会很难过。 挑战 您的任务是编写一个函数,该函数可以评估王子要求她放头发时长发公主会说些什么:当头发的长度大于或等于塔高时,再加上一米(安全准则),她将成为veeeery高兴地说Aaaah!,与的数目a相同length of her hair - height of the tower。否则,她的头发没有足够的长度,并且她开始哭泣:Booho!,其中os在h相等的三分之二之前height of the tower - length of her hair,而os在h之后的其余部分。os后面的s 数B必须四舍五入,因此,如果得到2.6,将为3 os,其他的必须在s后面h。 输入输出 给您提供正整数(包括空值)作为参数,列表或两个单个数字,顺序是最方便的顺序,但是必须说明采用它们的顺序。作为输出,打印长发公主将说的话。 测试用例 在测试用例中,第一个数字将是头发的长度。 0, 0 -> 'Bh!' (probably a dry sob..) 2, 1 -> 'Aah!' 1, 2 -> 'Boh!' 1, 4 -> 'Booho!' 4, 1 -> 'Aaaah!' …
20 code-golf 

14
西班牙身份证控制字符计算器
这是一个非常非常简单的算法,我相信可以用许多不同的语言解决。在西班牙,身份证(称为DNI)由8个数字和一个控制字符组成。控制字符是通过以下算法计算的:将数字除以23,执行其余操作,然后根据此表将其替换为字符: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 T R W A G M Y F P D X B N J Z S Q V H L C K E 如果DNI属于生活在西班牙的外籍人士,第一个数字更改为X,Y或Z它被称为NIE。在这种情况下,在计算控制字符之前进行以下替换: X Y …

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.