编程拼图和代码高尔夫

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

8
最小的正整数,与前两个倒数互为质数并且尚未出现;a(1)= 1,a(2)= 2
定义 如果两个整数除以外没有其他正数除数,则它们是互质数1。 a(1) = 1 a(2) = 2 a(n)是integer的最小正整数,它是和的互质数,a(n-1)并且a(n-2)尚未出现n >= 3。 任务 给定正整数n,输出/打印a(n)。 例 a(11) = 6因为6它与最后两个前任(即11和13)互质,并且6从未出现过。 笔记 请注意,顺序不是递增的,这意味着元素可以小于其前身。 眼镜 您必须使用1索引。 测试用例 n a(n) 1 1 2 2 3 3 4 5 5 4 6 7 7 9 8 8 9 11 10 13 11 6 12 17 13 19 …

5
排列步骤
编写一个函数,该函数采用一组整数并打印该组的每个排列,并在每个步骤之间执行交换 输入值 一组整数,例如(0,1,2) 输出量 格式(set)(交换)(set)的排列和交换列表... 测试用例 Input: (3, 1, 5) Output: (3, 1, 5) (3, 1) (1, 3, 5) (3, 5) (1, 5, 3) (1, 3) (3, 5, 1) (3, 5) (5, 3, 1) (3, 1) (5, 1, 3) 规则 您可以根据需要格式化数字集。 您可以按任何顺序进行交换 您可以重复排列和交换以获得新的排列 您的代码不必实际执行交换,输出仅需要显示在最后一个输出和当前输出之间进行了哪些交换 您的代码仅需要对包含2个或更多元素的集合起作用 您获得的集合将没有重复的元素(例如(0,1,1,2)无效) 这是代码高尔夫球,所以最短的代码胜出!

10
给定一个整数,计算其Levenshtein代码
免责声明:Levenshtein编码与Levenshtein编辑距离度量完全无关。 <插入关于为什么需要在此处计算Levenshtein码的长话。> 编码 Levenshtein编码是一种将二进制代码分配给非负整数的系统,该系统保留了一些与该挑战无关的怪异属性。我们将此代码表示为L(n)。Wikipedia将其描述为五个步骤: 将步数变量C初始化为1。 编写数字的二进制表示形式,但不要1以代码开头开头。 让M为在步骤2中写入的位数。 如果M不为0,则递增C,从步骤2开始重复M作为新数字。 将C 1位和a 写入0代码的开头。 但是,代码也可以递归地描述: 如果数字为0,则其代码为 0。 写数字的二进制表示,不带前导 1以代码开头开头。 让M为在步骤2中写入的位数。 将L(M)写入代码的开头。 1在代码的开头写一点。 对于喜欢示例的人,这里是L(87654321)的递归过程,表示串联: 挑战 编写一个给定数字n的程序或函数,输出位串L(n以任何合理的格式)(这包括用所述位返回一个数字)。与往常一样,不允许出现标准漏洞。 例子 输入: 5 输出: 1110001 输入: 30 输出: 111100001110 输入: 87654321 输出: 111110000101001001110010111111110110001 输入: 0 输出: 0

13
同等公式
在中国剩余定理可以在模运算非常有用。 例如,考虑以下同余关系集: 对于这样的全等关系集,其中所有基数(3, 5, 7在此示例中)都是互质的,则在满足此关系的基数(在此示例中)与的乘积n之间将只有一个整数,1且其中的乘积等于底数(3*5*7 = 105在此示例中) 。 在此示例中,数字将为14,由以下公式生成: 其中2, 4, and 0,从上面的例子中给出。 70, 21, 15是公式的系数,它们取决于基数3, 5, 7。 为了计算70, 21, 15一组基的公式的系数(在我们的示例中),我们使用以下过程。 对于a一组基准中的每个数字: 找到所有其他基数的乘积,记为P。 找出除以P的余数的第一个倍数。这是的系数。1aa 例如,要计算对应于底数的系数3,我们找到所有其他底数的乘积(即5*7 = 35),然后找到该乘积1除以底数后剩下的余数的第一个倍数。 在这种情况下,35留下的剩余部分2时除以3,但35*2 = 70叶子的其余部分1时除以3,所以70对于对应的系数3。同样,3*7 = 21留下的剩余部分1时,除以5和3*5 = 15留下的剩余部分1时,除以7。 简而言之 对于a一组数字中的每个数字: 找到所有其他数字的乘积,记为P。 找出除以P的余数的第一个倍数。这是的系数。1aa 挑战 对于两个或多个碱基的集合,挑战是找到对应系数的集合。 基数的集合保证是成对的互质,每个基数保证大于1。 您的输入是一个整数列表,作为输入[3,4,5]或以空格分隔的字符串"3 4 5",但是您的输入有效。 您的输出应该是整数列表或以空格分隔的表示系数集的字符串。 测试用例 input output [3,5,7] [70,21,15] …
10 code-golf  math 

7
构造雅可比矩阵
取未知向量,并应用一些通用的微分函数。的雅可比然后通过矩阵给出,使得: 例如,假设m=3和n=2。然后(使用基于0的索引) 雅可比f然后 这个挑战的目标是打印这个雅可比矩阵。 输入值 你的程序/功能应该采取作为输入两个正整数m和n,其代表的部件的数目f和u分别。输入可以来自任何所需的来源(stdio,功能参数等)。您可以指定接收顺序,对于输入的答案必须一致(请在答案中指定)。 输出量 代表雅可比矩阵的东西。此表示形式必须明确拼出Jacobian矩阵的所有元素,但是每个术语的确切形式都是实现定义的,只要明确区分什么以及关于什么进行区分,并且每个条目均以逻辑顺序输出。用于表示矩阵的示例可接受形式: 列表列表,其中外部列表​​的每个条目都对应于雅可比行的一行,内部列表的每个条目都对应于雅可比行的列。 字符串或文本输出,其中每行是Jacobian行,每行中由定界符分隔的条目对应于jacobian的列。 矩阵的一些图形/视觉表示。示例:使用MatrixForm命令时Mathematica显示的内容 其他每个条目都已存储在内存中并且可以查询的密集矩阵对象(即,您不能使用生成器对象)。例如,Mathematica如何在内部表示Matrix对象 条目格式示例: 形式为的字符串d f_i/d u_j,其中i和j是整数。例如:d f_1/d u_2。请注意,d和f_1或之间的这些空格x_2是可选的。此外,下划线也是可选的。 形式为d f_i(u_1,...,u_n)/d u_j或的字符串d f_i(u)/d u_j。也就是说,功能组件的输入参数f_i是可选的,并且可以明确地拼写出来或以紧凑形式保留。 格式化的图形输出。例如:计算表达式时Mathematica会打印什么D[f_1[u_,u_2,...,u_n],u_1] 您可以选择起始索引u和目标索引f(请在答案中指定)。输出可以是任何所需的接收器(stdio,返回值,输出参数等)。 测试用例 以下测试用例使用约定m,n。索引显示为从0开始。 1,1 [[d f0/d u0]] 2,1 [[d f0/d u0], [d f1/d u0]] 2 2 [[d f0/d u0, d f0/d u1], [d f1/d u0, d …

7
可视化链规则
定义 具有两个功能的链式规则指出: D[f(g(x))] = f'(g(x)) * g'(x) 或者,或者: D[f1(f2(x))] = f1'(f2(x)) * f2'(x) 具有三个功能的链式规则指出: D[f(g(h(x)))] = f'(g(h(x))) * g'(h(x)) * h'(x) 或者,或者: D[f1(f2(f3(x)))] = f1'(f2(f3(x))) * f2'(f3(x)) * f3'(x) 等等。 任务 给定2到21之间的整数,以第一种形式或第二种形式输出具有许多功能的链式规则。 请指定您是否使用第二种形式。 眼镜 字符串的格式必须与上面所述完全相同,并带有: 所有空间保持完整 大写 D 紧随其后的方括号 D 星号完好无损 允许一个额外的尾随空格(U + 0020)。 第二种形式的函数名称中的前导零(例如,f01代替f1)是允许的。 测试用例 如果您使用第一种形式: input output 2 …

6
二进制重复序列
二进制重复序列是具有以下形式的递归定义的序列: 这是斐波那契(x = 1, y = 2, a = [1, 1], alpha = 1, beta = 1)序列和卢卡斯(x = 1, y = 2, a = [2, 1], alpha = 1, beta = 1)序列的概括。 挑战 给定n,x,y,a,alpha,和beta,在任何合理的格式,输出n对应的二进制递归序列的第术语。 规则 您可以选择序列是1索引还是0索引,但是您的选择必须在所有输入中保持一致,并且必须在答案中记下您的选择。 您可能会假设不会给出任何无效输入(例如在之前终止n的序列或引用未定义术语(例如F(-1)或F(k)where k > n)的序列)。由于这一结果,x并y会一直是积极的。 输入和输出将始终是整数,在语言的自然整数类型的范围内。如果您的语言具有无界整数,则输入和输出将在该范围内[2**31, 2**31-1](即32位带符号二进制补码整数的范围)。 a将始终精确地包含y值(按照定义)。 测试用例 注意:所有测试用例均以0索引编制。 x = 1, y = …

2
保卫自己的生命!
让我们一起踢吧! 尽管Moogie是当前的获胜者,但如果有人能获得他的桂冠,他们会被鼓励这样做 踢罐子是一种儿童游戏。涉及一名防御者和多名攻击者。今天不再是这样的游戏!您的工作是写一个机器人玩这个游戏,赢得胜利,成为王道! https://en.wikipedia.org/wiki/Kick_the_can 此游戏有一些主要区别。第一个关键区别是游戏是多人游戏(5v5)。第二个主要区别是,这两种机器人都可以使用地雷和投掷炸弹杀死并消灭敌方玩家!机器人看不到任何地雷(无论距离有多远)或距离超过五个街区的玩家! 该地图如下所示是一个迷宫。 该迷宫在程序上是通过首先使用深度优先递归回溯算法创建一个迷宫来生成的。然后将显示的孔放进去(并使迷宫变得更“不完美”。迷宫的宽度为65x65块,索引为零。因此,蓝色标记(can)为1,1,红色标记(can)为以63,63产生。蓝队以2,2和3,3 4,4等产生,红队以62,62和61,61、60,60等产生。青色方块是蓝队的机器人,并且洋红色中的方块是红色的bot。游戏始终是5比5。团队中的每个bot都会使用您的代码(但可以存储其他实例变量(或创建本地文件)来跟踪状态并区分角色。 游戏玩法 地雷可以放置为灰色。炸弹最多可以扔四个距离。这些武器穿过墙壁和其他玩家最多可移动四个街区,只会杀死阻碍您前进的敌人。每走一步,他们就有40%的机会掉下来。因此,他们有100%的机会在1个射程60%在2个射程36%在3个射程以及21.6%在3个射程放置地雷或投掷炸弹需要一支团队弹药。它从0开始,可以通过收集橙色框来增加。请注意,这些弹药缓存中的四(4)个将方便地居中。机器人按两个红色和两个蓝色排列。IERRRRBBBBB。允许对标志进行修饰,但是要注意,靠近标志(即少于五个块)会导致速度变慢,并且仅允许移动。每三转。竞技场每回合都会随机选择一个启动器。一世。 目的 对五个机器人(每个机器人具有相同的类文件)进行编程,以成功在迷宫中导航并触摸相对的罐子,同时注意不要意外撞倒自己的罐子或踩到地雷。 程式设计 竞技场和漫游器条目当前使用Java,但是存在其他语言的stdin / out包装器。 竞技场代码将可用,但是这里是相关的详细信息。 机器人课 public class YourUniqueBotName extends Bot{ public YourUniqueBotName(int x , int y, int team){ super(x,y,team); //optional code } public Move move(){//todo implement this method //it should output a Move(); //A move has two …

3
取得电话号码的方法
鉴于第一个数字的输入,第二个数字(均为正整数,零已排除),确定有多少种方法可以使第二列全国第一,使用以下操作:+1,+2和*3。简单地从左到右应用操作。 例子: 输入:1 2。输出:1。即,您只能2这样做+1,所以是一种方法。 输入:1 3。输出:3。也就是说,你可以得到由要么做3 +2或+1+1,或*3 输入:1 4。输出:4。 输入:2 6。输出:6。 输入:2 7。输出:9。 输入:1 10。输出:84。 如果没有办法,例如100 100或100 80,输出为0。 您也可以将输入作为数组或带有任何方便分隔符的字符串。 最短的解决方案获胜。

6
找到路径!
您必须编写一个程序或函数。 输入是数字的“映射”。您可以选择将地图作为带换行符(\n)的字符串或二维字符串数组。 所有地图都是5个字符乘5个字符,并且这些字符始终是大于0的数字或空格。 这是地图的示例: 12 45 11233 233 1 2 899 您的任务是在地图中找到连接的组件。有效成分是至少三个水平和/或垂直(非对角线)相连的相同数字(不是空格)的序列。然后,您需要用xs 替换有效连接的组件的字符,然后打印或返回该结果。 因此,以上示例的输出为: x2 45 xx2xx 2xx 1 2 899 这是另一个测试用例(感谢Martin Ender): Input: 2 3 4 1 5 111 6 11 7 Output: 2 3 4 x 5 xxx 6 xx 7 这是代码高尔夫球,因此以字节为单位的最短代码获胜!

2
证明数字是代数的
受此答案启发(重点是我的): 我们将玩游戏。假设您有一些数字x。您可以从x开始,然后可以加,减,乘或除以除零以外的任何整数。您还可以乘以x。您可以根据需要多次执行这些操作。如果总数变为零,则您赢了。 例如,假设x为2/3。乘以3,然后减去2。结果为零。你赢了! 假设x为7 ^(1/3)。乘以x,然后再乘以x,然后减7。您赢了! 假设x为√2+√3。在这里,要赢得胜利并不容易。但是事实证明,如果您乘以x,然后减去10,再乘以x两次,再加上1,那么您就赢了。(这似乎并不明显;您可以使用计算器进行尝试。) 但是,如果您从x =π 开始,您将无法获胜。如果您对整数进行加,减,乘或除,或与π相乘,则无论采取多少步,都无法从π变为0。(这也不应该很明显。这是非常棘手的事情!) 像√2+√3这样的数字可以被赢得,称为代数。像π这样无法赢得的数字称为先验数字。 为什么这很有趣?每个代数数字都与整数算术相关,游戏中的获胜手法向您展示了如何做到这一点。到达零的路径可能很长且很复杂,但是每个步骤都很简单,并且有一条路径。但是,先验数在本质上是不同的:通过简单的步骤,它们与整数没有算术关系。 本质上,您将使用上面引用的问题中使用的步骤为给定的输入“赢得”游戏。 给定一个实数代数常量x,请使用以下允许的运算将数字转换为零: 加或减整数。 用非零整数乘或除。 乘以原始常数x。 输入是一个字符串,其中可以包含整数,加法,减法,乘法,除法,乘幂(您对**或的选择^,指数用于表示根)和括号。输入中的空格是可选的,但输出中的空格则是可选的。您应该输出获得零结果所需的步骤,因此乘以7一个步骤将输出为*7。允许尾随空格和/或换行符。 例子 0 -> +0 (or any other valid, or empty) 5/7 + 42 -> -42 *7 -5 (or shorter: *7 -299) 2^(1/3) -> *x *x -2 5*(3**(1/4)) -> *x *x *x -1875 2^(1/2)+3^(1/2) …
10 code-golf  math 

16
懒人打码高尔夫
你在这个代码高尔夫的目标是把两个字符串,language并且code (如果你这个写的golfed代码为多,那么这个变量将是多),和一个整数bytes。它们表示编程语言的变量,占用的字节数以及代码本身。 之后,您将像打高尔夫球的人一样格式化它。 输出变量是称为的多行字符串answer。 您可以在以下位置使用多行字符串: C ++ 蟒蛇 佩尔 的JavaScript 如果搜索Stack Overflow,则应该能够找到更多支持它的编程语言。 这是输出减价的模板。该code变量在代码块中,并且具有第二级标头。 ## {language}, {bytes} bytes {code} 这是粘贴到Markdown解析器中后的输出结果。 {language},{bytes}个字节 {code} 假定变量已经作为您在代码高尔夫代码中输入的语言,其占用的字节数以及实际代码进行了填写。 这是代码输出的另一个示例,这次填充了变量: ## JavaScript, 1337 bytes document.getElementById("foo").innerHTML = bar; 这是版本的块引用: JavaScript,1337字节 document.getElementById("foo").innerHTML = bar; 如果您使用一种<p>通过id 设置HTML中元素文本的方法,则可以从代码中删除字节result,例如以下JavaScript代码: document.getElementById("result").innerHTML = answer; 确保<p id="result"></p>在JSFiddle的HTML部分中也包含,这样才能起作用。 计分 像所有的代码问题一样,使用最少字节数的代码也是最好的。

7
向下数字竞赛
您的任务是创建一个程序,该程序将随机数字添加到最终数字竞赛摊牌中的先前总和。 每个赛车手(列)从0开始,并在比赛的每一步中将1或0添加到先前的总和,直到所有赛车手达到获胜所需的分数为止。1或0应该随机选择(可以在此处找到random的标准定义)。输出将显示比赛的结果,每一列以一种格式表示: >> racers:5,score needed:2 0 0 0 0 0 # all racers start at 0 + + + + + # add 1 0 0 0 1 # random 1 or 0 = = = = = # equals 1 0 0 0 1 # sum + + + …
10 code-golf 

10
查找获得结果所需的操作
因此,任务很简单,给定数字和结果数组,您需要从array中找到需要对数字进行哪些操作才能获得请求的结果。 让我们简化启动过程,只允许执行基本操作,例如:加法,减法,乘法和除法。 例: Input : [5,5,5,5,5] 100 Output : 5*5*5-5*5 为了给Java之类的语言带来一些好处,请求是实现功能,而不是整个程序,结果可以通过参数返回或打印到控制台。 代码是根据字节数计分的,这是高尔夫球代码挑战赛中得分最低的获胜者。 另一个要求是,如果数组仅包含digids,则可以从以下数字构造数字,从而获得-10分。即 Input : [1,2,3,4,5] 0 Output : 12-3-4-5 请注意,如果输出是建议的输出,则某些情况下可能有多个解决方案。您将根据自己的任务提供一个或多个解决方案。 编辑: 从数学的角度来看,结果必须是有效的,因此除法是有理除法,而不是整数,并且运算优先级与经典数学中的相同(首先是乘除法,然后是加法和减法)。

3
一百个方块!
回归本源... 作为当地小学(年级?)的老师,您需要一种方法来教您班级的时间表。您可以随意使用数百个正方形和大量的红笔。您还需要能够快速向班级显示正确答案。 现在,您足够聪明,可以编写一个可以执行时间表的程序,但是可以在100平方尺上绘制它们吗? 挑战 使用ansi-escape码将100平方输出到stdout或等价的数字,以数字的阴影表示,该数字是输入的倍数。 输出包含数字1-100的10x10网格。 只要保持一致,每个框中2位数字的对齐方式都没有关系 对于1位数字,您可以填充至2位数字,并使用与2位数字相同的格式,或者在框中间居中。 如果框中的数字是输入的倍数,请将整个框涂成红色。 这意味着整个盒子,而不仅仅是数字部分 例如,给定输入3,打印给定的百平方 这是代码高尔夫球,所以最短的答案以字节为单位!

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.