编程拼图和代码高尔夫

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

3
疯狂但理性的基础
基于10、2、36甚至-10,我们面临许多挑战,但是其他所有理性基础又如何呢? 任务 给定以10为底的整数和有理底数,请以该底数返回整数(作为数组,字符串等)。 处理 很难想象一个合理的基础,因此让我们使用爆炸点将其可视化: 考虑这个动画,以基数3表示17: 每个点代表一个单位,框代表数字:最右边的框是一个位置,中间的框是3 ^ 1位置,最左边的框是3 ^ 2位置。 我们可以从一个地方的17个点开始。但是,这是基数3,因此该位置必须小于3。因此,我们“爆炸” 3个点,并在左侧的框上创建一个点。我们重复此过程,直到最终得到一个没有爆炸点的稳定位置(即同一框中的3个点)。 因此,以10为底的17是以3为底的122。 分数基数类似于将一些点分解为一个以上的点。基数3/2将爆炸3个点以创建2。 以3/2为基数表示17: 因此,以10为底的17是以3/2为底的21012。 负基的工作原理与此类似,但是我们必须跟踪符号(使用所谓的反点,等于-1;用空心圆表示)。 以-3表示17: 注意,还有额外的爆炸使所有框的符号相同(忽略零)。 因此,以10为底的17是以-3为底的212。 否定的有理基础在以上两种情况的组合中也类似地起作用。 规则 没有标准漏洞。 输出中每个“数字”的符号必须相同(或为零)。 所有数字的绝对值必须小于基数分子的绝对值。 您可以假定基数的绝对值大于1。 您可以假设一个理性基数是其最小化形式。 您可以在输入中分别计算基数的分子和分母。 如果一个数字具有多种表示形式,则可以输出其中任何一种。(例如,12在基体10可以是{-2, -8}和{1, 9, 2}在碱-10) 测试用例: 格式: {in, base} -> result {7, 4/3} -> {3, 3} {-42, -2} -> {1, 0, 1, …

3
同名,me子!
编写一个函数或程序,当给定名称列表时,输出或返回一个列表,其中给定名称的重复项具有其姓氏的唯一缩写形式。 输入: 名称列表,其中名称由给定名称定义,姓氏由空格分隔。名称是仅包含大写和小写字母的非空字符串。该列表可以是字符串数组,也可以是用恒定的非字母,非空格字符分隔的名称,但是输出的格式必须与输入的格式相同。 输出: 输入名称的列表,其顺序和格式与通过以下规则修改的输入相同: 对于唯一的给定名称,仅输出给定名称 对于具有相同给定名称的名称: 除了其给定名称外,还要添加其姓氏的最短唯一版本,该版本不与其他名称共享,后跟一个句点。例如: John Clancy, John Smith变John C.,John S.和James Brown, James Bratte变James Bro.,James Bra. 如果一个姓氏是另一个姓氏的子集,例如Julian King,Julian Kingsley,则返回较小的姓氏的完整姓氏,不带句点。这个例子将成为Julian King,Julian King. 基本上,句点代表正则表达式.+,其中只有一个名称应与之匹配。 您可能会假设没有人会共享相同的给定名称和相同的姓氏 名称区分大小写 测试用例: John Clancy,Julie Walker,John Walker,Julie Clancy -> John C.,Julie W.,John W.,Julie C. Julian King,Jack Johnson,Julian Kingsley > Julian King,Jack,Julian King. Jack Brown,Jack Black,Jack …

20
月球两点之间的距离
给定的两个点的纬度/经度在月球(lat1, lon1)和(lat2, lon2),计算两个点之间的距离以公里,通过使用任何式给出相同的结果haversine公式。 输入值 四个整数值lat1, lon1, lat2, lon2(度)(角度)或 ϕ1, λ1, ϕ2, λ2以弧度表示的四个十进制值。 输出量 两点之间的距离(以公里为单位)(十进制任意精度或四舍五入整数)。 Haversine公式 哪里 r 是球体的半径(假设月球的半径为1737公里), ϕ1 点1的弧度(弧度) ϕ2 点2的弧度(弧度) λ1 点1的经度(弧度) λ2 点2的弧度 d 是两点之间的圆形距离 (来源:https : //en.wikipedia.org/wiki/Haversine_formula) 其他可能的公式 d = r * acos(sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 - λ1)) @miles的公式。 d …

6
菱形序列
想象一下枚举增长的菱形元素[1],[1,3,1],[1,3,5,3,1],…(只有奇数才能使它们很好地对齐)。看起来如下所示,请注意,您始终使用以下方法开始枚举1: 01 1 02 03 04 1 2 3 4 05 06 07 08 09 … 5 10 11 12 13 (1) (1,3,1) (1,3,5,3,1) (1,3,5,7,5,3,1) … 现在,如果您开始对列([1],[2],[1,3,5],[4],[5],[2,6,10],…)求和,您将得到菱形序列。这些是所述序列的前100个元素: 1,2,9,4,5,18,35,24,9,10,33,60,91,70,45,16,17,54,95,140,189,154,115,72,25,26,81,140,203,270,341,288,231,170,105,36,37,114,195,280,369,462,559,484,405,322,235,144,49,50,153,260,371,486,605,728,855,754,649,540,427,310,189,64,65,198,335,476,621,770,923,1080,1241,1110,975,836,693,546,395,240,81,82,249,420,595,774,957,1144,1335,1530,1729,1564,1395,1222,1045,864,679,490,297,100 IO 您可以自由选择以下三种输入/输出方法之一(您无需处理无效的输入): 给定整数n,则按该顺序输出第n个元素(0或1索引,您可以选择) 给定整数n输出该序列的前n个元素 不确定地打印/返回序列 测试用例 请参考上面的前100个术语,这是一些较大的示例(1索引): 101 -> 101 443 -> 1329 1000 -> 49000 1984 -> 164672 2017 -> 34289 …

6
数羊入睡
大多数人都熟悉这种数羊入睡的方法。有一群绵羊,其中一些在篱笆上跳跃,而您在绵羊跳跃时数数。据说,这可以使您的思维平静下来,并使您进入类似睡眠的状态,从而使您入睡。 这是一个面向右侧的ASCII绵羊,等待被计数: '00^> || 这是跳过篱笆的ASCII绵羊: '00^> /\ ++ 这是一个已被数过的朝左的人: <^00' || 挑战 给定两个输入整数,n和m,n > 2描述总共有多少只绵羊,并m > 0说出已经计数了多少只绵羊,输出一个ASCII艺术表示形式来计数要入睡的绵羊。 现在来看一下: 由于绵羊所处的围栏大小,第一排只能容纳最多的10绵羊,这还不包括当前跳跃的绵羊,绵羊也必须始终位于第一排。 随后的各行不能将羊放在各自的笔外(第二行的左边羊不能比第一行的羊多,右边的羊也不能多)。 如果11绵羊总数超过或等于总数,则第一行中必须包含10跳跃的绵羊。 前导/尾随空格和绵羊之间的空格无关紧要,只要: 绵羊之间至少要有一个空白字符 所有字符都正确排列。 只要符合这些规则,绵羊的实际安排就取决于您的实现。 例子 例如,这是n=3和m=1,是最简单的情况。 '00^> '00^> /\ <^00' || ++ || 这是n=11和m=6,可以容纳在一条水平线上的最多的绵羊。 '00^> '00^> '00^> '00^> '00^> /\ <^00' <^00' <^00' <^00' <^00' <^00' || || || …

4
平衡三元逻辑
平衡三元逻辑 三元通常为基地3个,也就是另外一个名字,每一个数字是0,1或2和每一个地方是值得的3倍之多的下一个地方。 均衡三元是三元的变形例,它使用的位数-1,0和1。这具有不需要标志的优点。每个地方的价值仍然是下一个地方的3倍。因此,前几个正整数[1],[1, -1],[1, 0],[1, 1],[1, -1, -1]而前几个负整数是[-1],[-1, 1],[-1, 0],[-1, -1],[-1, 1, 1]。 您有三个输入x, y, z。z或者是-1,0,或1,而x且y可以来自-3812798742493于3812798742493以下。 第一步是将十进制转换为平衡三进制x并转换y。这应该给您27个三叉戟(三重digITS)。然后,您必须使用三元运算来组合来自x和y成对的Trits ,然后将结果转换回十进制。 您可以选择z映射到以下三个三元操作之一的值: A:给定两个Trit,如果其中一个为零,则结果为零,否则,如果它们不同,则结果为-1,如果相同则为1。 B:给定两个Trit,如果其中一个为零,则结果为另一个Trit,否则,如果它们不同,则结果为零;如果它们相同,则为负数。 C:给定两个Trit,如果它们不同则结果为零,如果它们相同则结果为零。 例。假设x是29和y是15。在平衡三元组中,它们变为[1, 0, 1, -1]和[1, -1, -1, 0]。(为简便起见,其余23个零零位省略了。)在每个相应的操作之后,它们变为A:[1, 0, -1, 0],B:[-1, -1, 0, -1],C:[1, 0, 0, 0]。转换回十进制的结果24,-37并27分别。请尝试以下参考实现以获取更多示例: 显示代码段 function reference(xd, yd, zd) { var rd = 0; var p3 …

4
解码因子树
如果您错过了编码因子树,这是因子树的定义: 空字符串为1。 串联表示乘法。 括号(或任何成对的字符)中包含的数字n表示第n个质数,其中2是第一个质数。 请注意,这是递归完成的:第n个素数是括号中n的因数树。 数量的因数应按从小到大的顺序排列。 例如,以下是2到10的因子树: () (()) ()() ((())) ()(()) (()()) ()()() (())(()) ()((())) 这个挑战使用了类似的格式。然而,这个挑战是对这些结构进行解码。 测试用例 无耻地被盗 改变用途从上个挑战。 除了上面的9个之外…… ()()((()))((())) => 100 (()(()(()))) => 101 (()())(((())))(()(())) => 1001 (((((((()))))))) => 5381 (()())((((()))))(()()(())(())) => 32767 ()()()()()()()()()()()()()()() => 32768 规则 输入中的成对字符是您选择的括号,方括号,大括号或尖括号。如果要求,我可以允许其他格式(例如XML标记)。 您应该能够处理2到2 15或32768中任何数字的因子树。 由于这是代码高尔夫球,因此以字节为单位的最短答案会获胜。

5
素数
这没有实际目的,但打高尔夫球可能会很有趣。 挑战 给定数字n, 计算n中每个数字的数量并向每个计数加1 采取的素数分解 n 计算n的素数分解中每个数字的数量,但不包括重复的素数 通过将步骤1和步骤3中列表的各个元素相乘来创建一个新列表 返回该列表的总和 例如,121具有两个1s和a 2,因此您将从步骤1中获得以下列表: 0 1 2 3 4 5 6 7 8 9 1 3 2 1 1 1 1 1 1 1 121的素数分解为11 2,这给出了步骤3的以下列表: 0 1 2 3 4 5 6 7 8 9 0 2 0 0 0 0 0 …

12
列出0000-01-01至99999-12-31之间的所有回文素数日期
您知道回文,素数和日期是什么。 您的任务是列出满足所有三个特征的十万年的所有日期。 除了数字外,别无其他,请使用以下格式:YYYYMMDD和YYYYYMMDD。 0000-01-01和9999-12-31之间的日期应打印为8位回文日期(如果有?),而10000-01-01和99999-12-31之间的日期应打印为9位回文日期。 按时间顺序列出日期不是强制性的。 有效输出的示例部分。 前三个9位数主要回文日期: ... 100111001 100131001 100161001 ... 规则 有标准漏洞。

8
矩阵的特征值
给定一个正方形矩阵,输出矩阵的特征值。每个特征值应重复与其代数多重性相等的次数。 矩阵的特征值A是标量值λ,使得对于某些列向量v,A*v = λ*v。它们也是的特征多项式的解决方案A:(det(A - λ*I) = 0其中I与相同的维的单位矩阵A)。 输出必须精确到3个有效数字。对于您选择的语言,所有输入和输出都将在数值的可表示范围内。 可以使用内置函数,但是建议您包括不使用内置函数的解决方案。 测试用例 在这些测试用例中,I代表虚部。复数以形式书写a + b*I。所有输出的精度为3位有效数字。 [[42.0]] -> [42.0] [[1.0, 0.0], [0.0, 1.0]] -> [1.00, 1.00] [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]] -> [16.1, -1.12, -1.24e-15] [[1.2, 3.4, 5.6, 7.8], [6.3, 0.9, -5.4, -2.3], [-12.0, -9.7, 7.3, 5.9], [-2.5, …

26
电子存钱罐
一个储蓄罐是用于在收集硬币的容器对于这个挑战使用四个美国硬币:季毛钱,镍和一分钱。 挑战 您的挑战是创建一个电子存钱罐。编写一个程序(或函数),当运行(或调用)该程序(或函数)时,输出(或返回)您拥有的每个硬币的计数以及硬币的总金额。 输入值 一串,一串等(您选择的)硬币放入您的存钱罐(不区分大小写)。 Q - Quarter(Value of 25) D - Dime(Value of 10) N - Nickel(Value of 5) P - Penny(Value of 1) 输出量 输入中的硬币总数和总数,由您选择的非整数定界符分隔。(输出硬币总数的顺序无关紧要,但是硬币总值(总和)必须是最后一个元素) 例子 Input -> Output P -> 1,0,0,0,1 or 0,0,0,1,1 or 0,0,1,0,1 or 1,1 N -> 0,1,0,0,5 D -> 0,0,1,0,10 Q -> 0,0,0,1,25 QQQQ …
11 code-golf 

2
我的世界库存管理
Minecraft库存管理非常困难。您有17颗钻石,但需要7颗才能制作附魔表,镐和剑。您捡起它们并右键单击7次吗?还是您右键单击一次,然后右键单击两次,然后左移7个?太混乱了! 对于那些现在感到困惑的人,请放心,我将在几秒钟内为您解释一切 挑战 给定一堆物品的大小和所需的数量,请确定获得该数量的最少点击次数。两个输入最多只需要处理64个,并且可以假定您有无限的库存位置。您不能使用拖动到分发的把戏。 定义 该库存是插槽,可存储项目的集合。 一个插槽是库存中的存储空间,您最多可以将一种类型的项目。 甲堆栈是一个数字放置在同一组项目。出于此挑战的目的,堆栈只是同一位置的一堆项目(因此,忽略堆栈大小) 将光标就是你的尖啄。那个光标。它可以有“上面”的项目;换句话说,如果您单击插槽并拾取了项目,则拾取的项目将“在光标上”,直到您放下它们为止。 技术指标 有四种可能的情况。光标上是否有项目,或者没有,左键单击或右键单击。 如果光标上没有项目,而在插槽上单击鼠标左键,则将拾取整个堆栈。 如果光标上没有项目,然后在插槽上单击鼠标右键,则将堆放的一半取整。 如果光标上有一个项目,并且在插槽上单击鼠标左键,则将所有项目都放入该插槽中。(对于您所有的Minecraft玩家,您将没有超过64件物品可以挑战,它们都可以堆叠64位,并且只有一种类型,因此物品互换不适用于此处) 如果光标上有一个项目,然后右键单击插槽,则将一个项目放入该插槽。 因此,您从插槽中给定的所有项目(第一个输入,或第二个;您可以选择顺序)开始,然后要在光标中输入所需的数量(其他输入)作为结束。 让我们来看一个例子。假设您从17个项目开始,并且想要7。首先,在堆栈上单击鼠标右键,这意味着您已拾取9,该插槽中有8。然后,如果再次在堆栈上单击鼠标右键,则将一个项目放回插槽中,使您剩下8,而插槽则有9。最后,再次单击鼠标右键,您有7,插槽有10。因此,您将返回3(点击次数)。 如果您设法使我失望,请告诉我,我将编辑示例:P 测试用例 这些是手动生成的,因此请告诉我是否有任何错误。我通过单击鼠标右键单击进行库存管理,所以我没有最佳库存管理的经验:P Given, Desired -> Output 17, 7 -> 3 64, 8 -> 5 63, 8 -> 5 10, 10 -> 1 10, 0 -> 0 # note this case 25, 17 …
11 code-golf  game 

4
用雅可比(Jacobi)方法求解矩阵方程(修订)
数学背景 设A为实数的N×N矩阵,N个实数的ba向量和xa个N个未知实数向量。矩阵方程为Ax = b。 Jacobi的方法如下:分解A = D + R,其中D是对角线矩阵,R是其余项。 如果您做出初始猜测解x0,则改进的解为x1 =逆(D)*(b-Rx),其中所有乘法都是矩阵矢量乘法,而逆(D)是矩阵逆。 问题规格 输入:完整的程序应接受以下数据作为输入:矩阵A,向量b,初始猜测x0和“错误”数e。 输出:程序必须输出最少的迭代次数,以使最新的解决方案与实际解决方案之间的差异最多为e。这意味着矢量的每个分量的绝对大小最多相差e。您必须使用Jacobi的方法进行迭代。 如何输入数据是您的选择 ; 它可以是您自己在命令行上的语法,也可以从文件中获取输入,无论您选择什么。 数据的输出方式是您的选择 ; 可以将其写入文件,在命令行中显示,以ASCII文字形式书写,并且只要人类可以阅读即可。 更多详情 您没有得到真正的解决方案:如何计算真正的解决方案完全取决于您自己。例如,您可以通过Cramer规则或直接计算逆来解决它。重要的是您拥有一个能够与迭代进行比较的真正解决方案。 精度是一个问题;有些人的“确切解决方案”可能会有所不同。出于该代码的目的,精确的解决方案必须为10个小数位。 绝对清楚地说,即使您当前迭代解决方案的一个组成部分比真实解决方案中的相应组成部分都增加了e,那么您需要保持迭代。 N的上限取决于您所使用的硬件以及您愿意花多少时间运行该程序。出于此代码高尔夫球的目的,假定最大值N = 50。 前提条件 调用程序时,您可以随时假设以下条件成立: N> 1且N <51,即您永远不会得到标量方程,而总是矩阵方程。 所有输入都在实数范围内,并且永远不会复杂。 矩阵A总是使方法收敛到真正的解,这样您总是可以找到许多迭代以最小化小于或等于e的误差(如上定义)。 A 永远不是零矩阵或恒等矩阵,即有一个解。 测试用例 A = ((9, -2), (1, 3)), b = (3,4), x0 = (1,1), e …

18
独特的逆向工程(强盗的线程)
给定警察程序(o)的输出,字节数(n)和使用的唯一字节数(c),得出一段相应的代码,该代码n长为c字节,具有与警察输出相匹配的唯一字节o。 这是强盗线程。在此处发布您破解的解决方案。 COPS线程位于此处。 强盗应发布以下解决方案: #[Language], `n` Bytes, `c` Unique Bytes (Cracked)[Original Link to Cop Thread] [Solution] (Explanation) 规则 您可能没有为程序输入任何信息。 该程序必须至少使用1个字节,但不能超过255个字节。 输出本身也限制为255个字节。 多次执行时,程序必须具有一致的输出结果。 如果您提交的内容在7天内没有被破解,则可以将其标记为“安全”。 将其标记为安全时,张贴预期的解决方案并将其评分为c*n。 获奖 c*n分数最低的未破解职位赢得了警察的支持。 谁破解得最多,谁就赢得强盗线索,最早的裂缝打破平局。 这将在10个安全答案或几周后决定。 注意事项 如果您感到自大,可以使用扰流器标签告诉用户算法。 注意:另外,请记住要修补裂缝,它们通常是令人印象深刻的部分。

20
Sumac序列的长度[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 2年前关闭。 Sumac序列以两个整数开头:t 1和t 2。 下一项t 3 = t 1 -t 2 更一般而言,t n = t n-2 -t n-1 当t n <0 时,序列结束。 您面临的挑战:编写一个程序或函数来打印Sumac序列的长度,从t 1和t 2开始。 t 1和t 2是您语言范围内的整数。 有标准漏洞。 测试用例 t1 t2 sumac_len(t1,t2) 120 71 5 101 42 3 500 499 4 387 1 3 奖励街头信誉: 3 -128 …

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.