Questions tagged «path-finding»

几何或图形理论中的问题,涉及受约束(障碍)影响的最佳路径(例如最短路径)。

24
实验鼠竞赛:遗传算法练习
这是每两周挑战#3。主题:遗传算法 这个挑战有点实验。我们想看看我们可以用遗传算法做些什么。并非所有内容都是最佳的,但我们尽了最大努力使其变得可访问。如果能够解决问题,谁会知道我们将来会看到什么。也许是希尔的遗传之王? 规格很长!我们已尝试将规范分为基础知识-开始使用框架并提交答案所需的最低知识-和Gory Details-完整规范,以及有关控制器的所有详细信息,可以自己写。 如果您有任何疑问,请随时加入我们的聊天室! 您是行为心理学的研究者。今天是星期五晚上,您和您的同事决定找点乐子,并用您的实验用老鼠参加小老鼠赛跑。实际上,在我们对它们过于迷恋之前,我们称它们为标本。 您已经为标本设置了一个小小的赛道,并且为了使其更加有趣,您在赛道上放置了一些墙壁,陷阱和传送器。现在,您的标本仍然是老鼠……他们不知道什么是陷阱或传送器。他们所看到的只是一些颜色不同的东西。他们也没有任何记忆力-他们所能做的就是根据当前环境做出决定。我猜自然选择会从那些不知道如何避免陷阱的标本中挑选出来(这场比赛将需要一段时间...)。让游戏开始!† †84,465个样本在进行挑战时受到了伤害。 基础 这是一款单人游戏(您和您的同事不想混合人口,因此每个人都建立自己的赛车场)。赛道是一个矩形网格,高15格,宽50格。您从左边缘(其中x = 0)上随机(不一定不同)的15个样本开始。您的标本应尝试达到x≥49和0≤y≤14的任何单元的目标(标本可能会超出右侧的轨道)。每次发生这种情况,您都会得到一点。您也以1点开始游戏。您应该尝试在10,000转后最大化积分。 多个标本可能占据同一个细胞,并且不会相互作用。 在每个转弯处,每个标本都看到一个5x5的周围网格(自身位于中心)。该网格的每个单元包含一个颜色-1来15。-1表示超出范围的单元格。如果标本超出范围,则标本会死亡。至于其他颜色,它们代表空的单元,陷阱,墙壁和传送器。但是您的标本不知道哪种颜色代表什么,您也不知道。但是有一些限制: 8种颜色代表空单元格。 4种颜色代表一个传送器。传送器会将标本发送到其9x9邻域内的某个单元中。对于所有相同颜色的传送器,此偏移量将相同。 2种颜色代表墙壁。进入墙壁等同于静止不动。 2种颜色代表陷阱。甲陷阱表明一个的9个单元在其近邻的是致死的(不一定是陷阱细胞本身)。对于所有相同颜色的陷阱,此偏移量将相同。 现在,关于自然选择……每个标本都有一个基因组,即一个具有100位的数字。通过杂交两个现有的标本,然后稍微突变基因组,可以创建新的标本。标本越成功,复制的机会就越大。 因此,这是您的任务:您将编写一个函数,该函数接收标本所见颜色的5x5网格及其基因组作为输入。您的函数将返回样本的移动(Δx,Δy),其中Δx和Δy分别为之一{-1, 0, 1}。您不得在函数调用之间保留任何数据。这包括使用您自己的随机数生成器。您的函数将提供带种子的RNG,您可以随意使用它。 您提交的分数将是50条随机轨道上的点数的几何平均值。我们发现该分数存在一定差异。因此,这些分数将是初步的。一旦挑战消失,将宣布截止日期。在截止日期结束时,将随机选择100个委员会,所有提交的意见将在这100个委员会中重新评分。请随意在您的答案中加上预估的分数,但我们会为每份提交的作品评分,以确保没有人作弊。 我们提供了几种语言的控制器程序。目前,您可以使用Python(2或3),Ruby,C ++,C#或Java编写提交内容。控制器生成棋盘,运行游戏并为遗传算法提供框架。您所要做的就是提供移动功能。 等一下,那么我该如何处理基因组呢? 挑战在于弄清楚! 由于标本没有记忆,因此您在给定回合中所拥有的只是5x5的颜色网格,对您没有任何意义。因此,您必须使用基因组来达到目标​​。通常的想法是,您使用基因组的一部分来存储有关颜色或网格布局的信息,而您的机器人则根据存储在基因组中的其他信息来做出决定。 现在,您当然不能实际在此处手动存储任何内容。因此,在那里存储的实际信息最初将是完全随机的。但是遗传算法将很快选择那些基因组包含正确信息的标本,同时杀死那些信息错误的标本。您的目标是找到从基因组位和视野到移动的映射,这使您可以快速找到目标的路径,并且始终如一地发展为制胜法宝。 这应该是足够的信息,可以帮助您入门。如果需要,可以跳过下一部分,并从底部的控制器列表中选择您要选择的控制器(还包含有关如何使用该特定控制器的信息)。 继续阅读... 血腥细节 该规范已完成。所有控制器都必须执行这些规则。 除非另有说明,否则所有随机性均使用均匀分布。 轨道生成: 轨道是一个矩形网格,X = 53单元宽,Y = 15单元高。与细胞X≥49是目标细胞(其中,X是从零开始)。 每个单元格只有一种颜色,并且可能是致命的,也可能不是致命的 -除非由以下一种单元格类型指定,否则这些单元格不是致命的。 有16种不同的单元格颜色,从标记0为15,其含义将因游戏而异。另外,-1表示超出范围的细胞-这些是致命的。 选择8种随机颜色。这些将是空单元格(无效)。 再选择4种随机颜色。这些是传送器。对于其中两种颜色,请在9x9邻域中选择一个非零偏移量(从(-4,-4)到(4,4),除了(0,0)以外)。对于其他两种颜色,请反转这些偏移量。如果样本踩在传送器上,它将立即移动该偏移量。 再选择2种随机颜色。这些是陷阱。对于每种颜色,在3x3邻域中选择一个偏移量(从(-1,-1)到(1,1))。陷阱表示该偏移量处的单元格是致命的。注意:陷阱单元本身不一定具有致命性。 剩下的2种颜色是墙壁,阻碍运动。尝试移动到墙单元上将使移动变得静止。壁细胞本身具有致命性。 对于网格的每个非目标单元,选择一种随机颜色。为每个目标单元选择一个随机的空色。 对于轨道左边缘的每个像元,确定是否可以在100转内达到目标(根据下面的转弯顺序规则)。如果是这样,则此单元格是允许的起始单元格。如果起始单元少于10个,则丢弃轨道并生成一个新轨道。 创建15个样本,每个样本具有随机的基因组,年龄为0。将每个标本放在随机的起始细胞上。 ...

5
黑色和白色的彩虹
给定一个图像,该图像仅包含黑白像素,并且(x,y)位置是白色像素,请根据白色像素与(x,y)的最小曼哈顿距离为它们着色,该路径仅涉及遍历其他白色像素。 彩色像素的色相必须与其与(x,y)的距离成正比,因此(x,y)处的像素的色相为0°(纯红色),而距(x,y)的像素最远将具有360°的色相(也为红色),其他色相之间无缝且线性地混合。的饱和度和值都必须是100%。 如果白色像素未通过其他白色像素连接到(x,y),则它必须保持白色。 细节 输入将包含图像的文件名或原始图像数据,以及x和y整数。 可以将输出图像保存到文件中,或以任何常见图像文件格式将其原始传输到stdout,或简单地显示出来。 x值在最左边的像素为0,向右增加。y值在最上面的像素中为0,并随着下降而增加。(x,y)将始终在图像范围内。 完整的程序和功能都被允许。 以字节为单位的最短代码获胜。 例子 所有这些图像均已缩小以节省空间。单击它们可查看完整尺寸。 输入图片: (x,y) = (165,155) 和 (x,y) = (0,0) 输入图像并输出(x,y) = (0,0): 输入图像并输出(x,y) = (600,350): 输入图像并输出(x,y) = (0,0): 输入图像并输出(x,y) = (0,0): 可选的-30%奖金:使用欧几里得距离。有关您的算法的建议如下(总体概述): 有一个开始像素。 从该像素进行洪水填充。 对于泛洪填充中达到的每个像素, 从开始像素到该像素以半个单位的步长直线移动。 在每个步骤中,将其应用于int()x和y坐标。如果这些坐标处的像素为黑色,请停止。否则,请继续。(这是一种视线方法。) 任何与白色像素和/或先前用明显更高的距离(即+10)标记的像素接壤的到达像素都将成为起始像素。 从更广义的意义上讲,该算法从起始像素/已经彩色的像素开始沿直线扩展到每个像素,然后沿边缘“英寸”延伸。“明显更高的距离”位用于加速算法。说实话,它并不真正的问题是如何在实现欧氏距离,它只是看起来很像这一点。 使用上面的算法,这是第一个具有欧几里得距离的示例的样子: 输入图像和 (x,y) = (165,155) 非常感谢Calvin'sHobbies和trichoplax帮助编写此挑战!玩得开心!

9
我的监狱安全吗?
为您的挑战提供监狱布局的输入,以确定是否有任何囚犯可以逃脱。 输入项 输入可以采用任何合理的格式,例如字符串,数组,数组数组等。在这种情况下#,输入将由三个字符P和空格组成。输入内容不一定包含所有三个字符。 #: 一堵墙 P:囚犯 空间:一个空白空间 输入示例如下所示: ##### # # # P # # # ##### 输出量 监狱是否安全的真实/错误值。监狱只有能够容纳所有囚犯的情况下才是安全的。如果有任何囚犯可以逃脱,那是不安全的。 如果囚犯没有完全被墙壁包围,他们可以逃脱。对角线连接完全封闭。 测试用例 ############# Truthy # P # P# # # # # P # ############# ############# Truthy # P P # # # # P # ############# ############# Falsey # P ...

7
机器人发现小猫
挑战 按字符数计算的最短代码,可以帮助Robot以尽可能少的步骤找到小猫。 高尔夫球手,这是一个危机时刻-小猫失踪了,找到它是机器人的工作!机器人需要以最短的路径到达小猫。但是,Robot的方式存在很多障碍,他需要您为他编写解决方案。 机器人曾经有个程序可以帮他做,但是那个程序丢失了,机器人也没有备份:(。 Robot的运行时间不是最好的,Robot必须从源代码中读取最少的字符,花费的时间最少,这意味着可以更快地找到Kitten! 机器人的记忆包含他当前所在位置的地图,其中顶部代表北,底部代表南,右代表东,左代表西。机器人总是处在一个未知尺寸的矩形房间中,周围环绕着墙壁,这#在他的雷达图中表示。机器人可以进入的区域以空格表示。 机器人的雷达还会扫描房间中的许多障碍物,并以各种ASCII字母标记它们。机器人不能走过这些障碍。雷达会将Kitten标记为特殊的ASCII字符K,而Robot的位置标记为R。 机器人的导航系统是这样工作的:他可以理解二重方向和应该移动的运动单位数-例如,N 3意思是“向北移动3个运动单位”。制作机器人的雷达图,使运动单位为一个ASCII字符。机器人只能沿4个方向行驶,不能对角线行驶。 勇敢的小猫保护者,您的任务是一次读取机器人的雷达图,并输出最少的方向,最小的移动单位行进距离。确保机器人至少有一条通往小猫的路径。 为确保Robot不会浪费时间执行有故障的程序,该程序不会帮助Robot找到Kitten,我鼓励您,勇敢的Kitten Saver,使用Robot过去的程序的此输出,以确保没有时间浪费在寻找Kitten上! 测试用例 Input: ###################### # d 3 Kj # # # # R # # q # ###################### Output: E 13 N 2 Input: ###################### # d r 3 Kj # # p p # # T X # ...

30
追加字符串长度
挑战: 给定s字符a- z,A- Z,0- 上的字符串9,将其长度附加s到其自身,将长度中的其他字符计为的总长度s。 输入: 只是任意长度的字符串(可以为空)。 输出: 相同的字符串,但其长度附加到末尾。代表长度的字符也应算作长度的一部分。如果要附加多个有效长度,请选择最小的长度(有关示例,请参见测试用例)。 测试用例: INPUT -> OUTPUT // Comment aaa -> aaa4 -> 1 // Empty string aaaaaaaa -> aaaaaaaa9 // aaaaaaaa10 would also normally be valid, but violates using the smallest number rule mentioned above aaaaaaaaa -> aaaaaaaaa11 a1 -> a13 // Input ...
51 code-golf  string  code-golf  string  random  code-golf  array-manipulation  code-golf  ascii-art  kolmogorov-complexity  random  code-golf  array-manipulation  code-golf  stateful  code-golf  hello-world  code-golf  string  code-golf  interpreter  lisp  code-golf  restricted-source  quine  palindrome  code-golf  ascii-art  random  generation  challenge-writing  ascii-art  random  polyglot  maze  answer-chaining  string  cops-and-robbers  whitespace  code-golf  string  cops-and-robbers  whitespace  code-golf  number  sequence  code-golf  date  code-golf  ascii-art  decision-problem  code-golf  combinatorics  chemistry  code-golf  kolmogorov-complexity  source-layout  radiation-hardening  code-golf  ascii-art  path-finding  maze  code-golf  string  ascii-art  game  animation  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  restricted-source  new-years 

6
您的车只向右转!
介绍 您有被困在障碍道上的失控汽车中的不幸。除了损坏的转向系统外,汽车的所有功能均无响应。它可以直行,也可以向右转。可以引导汽车安全吗? 机械学 您的汽车从8x8地图的左上角开始,并试图在右下角实现安全。赛车的方向(最初是向右)以90度为增量进行测量。汽车可以执行以下两项操作之一: 向前开一个方块,或者 顺时针旋转90度,然后向前驱动一个方块 请注意,汽车无法足够急转弯以在单个广场上执行180度转弯。 一些广场是障碍。如果汽车进入障碍物广场,它将坠毁。假定8x8航道之外的所有物体都是障碍物,因此驶离航道等同于坠毁。 右下角的正方形是安全正方形,它使汽车能够逃脱障碍物路线。假定起始正方形和安全正方形不是障碍。 任务 您必须编写一个程序或函数,以8x8数组(矩阵,列表列表等)为输入,表示障碍物路线。程序返回或打印一个布尔值或类似的真值。如果汽车有可能在不撞车的情况下到达安全广场(即,如果地图可解决),则输出为True,否则为False。 计分 标准代码高尔夫规则-获胜者是字节最少的代码。 奖金: 如果对于一张可解决的地图,您的代码输出了一系列有效的驾驶员输入来引导汽车驶入安全广场,请从得分中减去10个百分点。示例输出格式可能是SRSSR(指示“直”,“右”,“直”,“直”,“右”)。该输出将替代标准True输出。 如果对于无法解决的地图,代码的输出区分不可避免的崩溃情况和可能永远绕过障碍物路线的情况,请从分数中减去10个百分点。Crash如果无法避免发生碰撞,或者Stuck汽车永远卡在障碍物路线中,则可能是示例输出。这些输出将替代False无法解决的地图的标准输出。 例 如果给程序一个8x8数组,例如: [[0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 1, 0], [1, 1, 0, 0, 0, 0, 0, 0], [0, 1, 0, 1, 0, 0, 0, 0], ...

3
密码锁
场景 经过一整天的辛苦工作,在办公室里浏览并浏览了stackexchange.com之后,我终于在16:58走出家门,已经疲倦了。因为我仍然只是一名实习生,所以我目前的交通方式是骑自行车。我前往值得信赖的Peugeot Reynolds 501,但是在我不能驶向它之前,我需要将其解锁。该锁是通过框架和前轮的标准四位数密码锁(0-9)。当我尝试保持清醒时,我将手向上拉以进入组合。 挑战 因为我的手指很疲劳,所以我想用最少的动作将锁调到正确的位置。一移动定义为旋转一个位置(36度),例如,从5737到移动一5738。但是,我能够同时抓取最多三个连续的环,并将它们旋转为一个,这仅算作一个动作。例如,从到到仅有一个移动。从到移动不是一个动作,因为数字1,2和4向同一方向移动,但独立于数字3。57376837562657376838 因此,对于给定的组合,我可以在自行车锁上看到(任何4位整数),使锁解锁的最低移动量是多少,是的,我可以随时朝任一方向旋转。我的意思是,我可以在一个方向上转动一些数字,而在另一个方向上转动其他数字:对于每次解锁,并非我的所有动作都是顺时针或顺时针方向。 因为我很懒,所以我的解锁码是0000。 这是我无法打扰的代码编写工作,因此以字节数为单位的最短程序获胜。 输入来自stdin,您的代码应输出每次移动后每一步都能看到的组合,包括末尾的0000。每个组合输出都应以空格/换行符/逗号/句号/&符号分隔。 例子 Input: 1210 0100 0000 Input: 9871 9870 0980 0090 0000 Input: 5555 4445&3335&2225&1115&0005&0006&0007&0008&0009&0000 Input: 1234 0124 0013 0002 0001 0000 我尝试将其发布在http://bicycles.stackexchange.com上,但他们不喜欢它... 免责声明:第一次打高尔夫球,所以任何损坏的信息/遗失信息都请通知我!我也手动完成了所有示例,因此可能会有涉及较少动作的解决方案! 编辑:对于具有多个具有相等移动量(实际上是全部)的解决方案路径的答案,没有首选的解决方案。

3
救命,我陷入了Sierpinski三角!
绘制谢尔宾斯基三角形已经被 做 死。我们还有其他有趣的事情可以做。如果我们在三角形处斜视的程度足够大,则可以将上下颠倒的三角形视为分形图的节点。让我们找到解决该图的方法! 首先,让我们为每个节点分配一个数字。最大的倒置三角形将是节点零,然后我们逐层向下移动(宽度优先),并按从上到下的顺序分配连续的数字: 单击以获取较大的版本,其中较小的数字不太模糊。 (当然,在该模式的蓝色三角形内部循环往复。)来定义的编号的另一种方式是,该中心节点具有索引0,并且节点的子节点i(下一个较小规模的相邻三角形)具有指数3i+1,3i+2和3i+3。 我们如何围绕该图移动?任何给定的三角形最多可以采取六个自然步骤: 一个人总是可以通过边之一的中点移动到当前节点的三个子节点之一。我们会指定这些举措为N,SW和SE。例如,如果我们现在走的节点2,这将导致节点7,8,9分别。不允许通过边缘进行其他移动(到达间接后代)。 只要不碰到三角形的边缘,也可以通过三个角之一移至直接父级或两个间接祖先之一。我们会指定这些举措为S,NE和NW。例如,如果我们当前在node上31,S将导致10,NE无效并NW导致0。 挑战 给定两个非负整数xand y,仅使用上述六个动作找到从x到的最短路径y。如果有几个最短的路径,请输出其中任何一条。 请注意,您的代码不仅仅可以在上图中描述的5个级别中工作。您可能会认为x, y < 1743392200。这样可以确保它们适合32位带符号整数。请注意,这对应于树的20个级别。 您的代码必须在5秒钟内处理任何有效输入。尽管这排除了蛮力广度优先搜索,但它应该是一个相当宽松的约束-我的参考实现在半秒内处理了深度1000的任意输入(对于节点来说约为480位数字)。 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行参数或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。 输出应该是字符串的平面,明确的清单N,S,NE,NW,SE,SW,使用任何合理的分隔符(空格,换行,逗号,","...)。 适用标准代码高尔夫球规则。 测试用例 可以使用上图手动计算出前几个测试用例。其他人确保答案足够有效。对于那些,可能没有列出其他相同长度的解决方案。 0 40 => N N N N 66 67 => S SW N N N 30 2 => NW NW -or- NE SW 93 2 => NE SW ...

6
岛屿高尔夫#1:环游世界
这是Island Golf系列挑战中的第一个。下一个挑战 给定ASCII艺术形式的孤岛,请输出对其进行绕行的最佳路径。 输入项 您的输入将是一个由两个字符组成的矩形网格,分别代表土地和水。在下面的示例中,土地是#,水是.,但是您可以替换任意两个不同的字符。 ........... ...##...... ..#####.... ..#######.. .#########. ...#######. ...#####.#. ....####... ........... 始终将至少有一个地砖。地砖将是连续的(即只有一个岛)。瓷砖也将是连续的(即没有湖泊)。网格的外边界都是水瓦片。地砖将不会以对角线连接:即,您将永远不会看到类似 .... .#.. ..#. .... 输出量 您的代码必须输出相同的网格,并在其上画出最短的环绕。在下面的示例中,环行路径用绘制o,但是您可以替换任何字符,只要它与您的水陆字符不同即可。 一个环游是一个简单的封闭曲线,完全是靠水的瓷砖画,能够完全包围在网格中的所有土地的瓷砖。对角线的连接被允许的。例如,这是上述岛屿的环游世界(但不是最短的一个): .ooooo..... o..##.oo... o.#####.o.. o.#######o. o#########o ooo#######o ..o#####.#o ..oo####..o ....oooooo. 环行的长度计算如下:对于路径上的每对相邻的图块,如果它们是水平或垂直连接的,则加1;否则,为0。如果对角连接,则加√2。以上路径的长度为22 +7√2(≈31.9)。 甲最短环游是用最短的长度的环游。您的程序应输出满足此条件的任何一条路径。对于大多数岛屿,将有多种可能的解决方案。这是上述岛的一种解决方案,长度为10 +13√2(≈28.4): ...oo...... ..o##oo.... .o#####oo.. .o#######o. o#########o .o.#######o ..o#####.#o ...o####.o. ....ooooo.. 细节 您的解决方案可能是完整程序或功能。任何默认的输入和输出方法都是可以接受的。 您的输入和输出可以是多行字符串或字符串列表。如果您的语言具有不同于单字符字符串的字符类型,则可以在上一句中用“字符列表”代替“字符串”。如果您的语言需要输入网格的高度和/或宽度,则可以输入。您的输出可能(可选)有一个尾随换行符。如上所述,您可以使用任何三个不同的字符来代替#.o(请在提交中指定要使用的字符)。 测试用例 A.环游时间最短的岛屿: ...

30
构造身份矩阵
挑战非常简单。给定整数输入n,输出n x n单位矩阵。单位矩阵是1从左上角到右下角的s 矩阵。您将编写一个程序或函数来返回或输出您构造的身份矩阵。您的输出可能是2D数组,或者是由空格/制表符和换行符分隔的数字。 输入和输出示例 1: [[1]] 2: [[1, 0], [0, 1]] 3: [[1, 0, 0], [0, 1, 0], [0, 0, 1]] 4: [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] 5: [[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], ...

30
这个数字是-2的整数次幂吗?
有很多聪明的方法来确定数字是否为2的幂。这不再是一个有趣的问题,因此让我们确定给定的整数是否为-2的整数次幂。例如: -2 => yes: (-2)¹ -1 => no 0 => no 1 => yes: (-2)⁰ 2 => no 3 => no 4 => yes: (-2)² 规则 您可以编写程序或函数,并使用接收输入和提供输出的任何标准方法。 您的输入是一个整数,如果该整数是-2的整数次幂,则输出必须是一个真实值,否则,则必须是一个虚假值。不允许其他输出(例如警告消息)。 通常的整数溢出规则适用:您的解决方案必须能够在语言的假设(或实际)版本中使用任意大整数,默认情况下,所有整数都是无界的,但是如果您的程序由于实现而在实践中失败不支持大整数,这不会使解决方案无效。 您可以使用任何编程语言,但是请注意,默认情况下,这些漏洞是禁止的。 获奖条件 这是一场代码高尔夫球比赛:字节数最少(在您选择的编码中)的答案是获胜者。

22
自然派#0-摇滚
目标 创建一个接受输入的程序/函数N,检查N随机整数对是否相对质数,然后返回sqrt(6 * N / #coprime)。 TL; DR 这些挑战是仅需要自然和大脑(也许还有一些可重复使用的资源)才能逼近Pi的算法模拟。如果您在僵尸启示录期间确实需要Pi,那么这些方法不会浪费弹药!还有另外八个挑战。检出沙盒帖子以提出建议。 模拟 我们在模拟什么?好吧,两个随机整数是相对质数(即coprime或gcd == 1)的概率是6/Pi/Pi,因此计算Pi的自然方法是挖出两个桶(或少数几个)的岩石。数他们;看看他们的gcd是否为1;重复。这样做后,一对夫妇很多次,sqrt(6.0 * total / num_coprimes)会趋向Pi。如果计算世界末日后的平方根使您感到紧张,请不要担心!有牛顿法。 我们如何模拟这一点? 接受输入 N 请执行以下N次数: 均匀生成随机正整数,i并且j 用 1 <= i , j <= 10^6 如果gcd(i , j) == 1:result = 1 其他: result = 0 取N结果的总和,S 返回 sqrt(6 * N / S) 规格 输入值 ...
39 code-golf  math  random  pi  approximation  popularity-contest  code-golf  sequence  number-theory  binary  coding-theory  code-golf  math  3d  code-golf  code-golf  math  number  code-golf  kolmogorov-complexity  code-golf  ascii-art  graphical-output  binary-tree  code-golf  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation  hexadecimal  code-golf  math  number  set-theory  code-golf  math  arithmetic  number-theory  integer  code-golf  string  kolmogorov-complexity  code-golf  math  sequence  arithmetic  decision-problem  code-golf  code-golf  ascii-art  code-golf  array-manipulation  parsing  code-golf  string  ascii-art  kolmogorov-complexity  code-challenge  code-golf  sequence  code-golf  number  array-manipulation  sorting  code-golf  string  function  code-golf  arithmetic  code-golf  math  sequence  number-theory  primes  restricted-source  javascript  code-challenge  polyglot  rosetta-stone  code-golf  code-golf  regular-expression  code-golf  math  code-golf  math  primes  code-golf  ascii-art  kolmogorov-complexity  binary  code-golf  math  sequence  code-golf  sequence  subsequence  code-golf  string  code-golf  parsing  music  code-golf  grid  game  path-finding  board-game  code-golf  string  binary  code-golf  array-manipulation  balanced-string  code-golf  code-golf  algorithm  code-golf  string  number  arithmetic  array-manipulation  code-golf  array-manipulation  binary-tree  tree-traversal  code-golf  code-golf  tips  code-golf  string  base-conversion  code-golf  tips  s.i.l.o.s  code-golf  string  ascii-art  code-golf  code-challenge  code-golf  game 

6
要Vectory!–矢量赛车大奖赛
CarpetPython用户发布了对此问题的新观点,由于搜索空间的增加,该问题更加关注启发式解决方案。我个人认为挑战比我的挑战要好得多,因此请考虑尝试一下! 矢量赛车是一种令人上瘾的游戏,可以用钢笔和一张正方形的纸来玩。您可以在纸上绘制任意的赛道,定义起点和终点,然后以转弯为基础操纵点型汽车。尽可能快地到达终点,但请注意不要陷入困境! 轨道 该地图是一个二维网格,其中每个单元格都有整数坐标。 您在网格单元上移动。 每个网格单元要么是轨道的一部分,要么是一堵墙。 恰好一个跟踪单元是起始坐标。 至少一个跟踪单元被指定为目标。登陆其中任何一个都可以完成比赛。多个目标单元不一定连接。 驾驶汽车 您的汽车以给定的坐标和速度矢量开始(0, 0)。在每个转弯中,您都可以调整速度的每个分量,也可以保持不变±1。然后,将得到的速度矢量添加到您的汽车位置。 图片可能会有所帮助!红色圆圈是您上一转弯的位置。蓝色圆圈是您当前的位置。您的速度是从红色到蓝色圆圈的向量。在这回合中,取决于您如何调整速度,您可以移动到任何绿色圆圈。 如果您降落在墙壁上,则会立即损失。 你的任务 您猜对了:编写一个程序,在输入跑道的情况下,将汽车尽可能少地转向到一个目标单元。您的解决方案应该能够很好地处理任意轨道,并且不会针对所提供的测试案例进行专门优化。 输入值 调用程序时,请从stdin中读取: target n m [ASCII representation of an n x m racetrack] time target是您可能会完成此轨道的最大匝数,并且time是该轨道的总时间预算(以秒为单位)(不一定是整数)。有关计时的详细信息,请参见下文。 对于以换行符分隔的轨道,使用以下字符: # –墙 S- 在开始 *– 一个目标 . –所有其他跟踪单元(即道路) 所n x m提供的网格外部的所有单元格均隐含为墙。 坐标原点在左上角。 这是一个简单的示例: 8 4.0 9 6 ###...*** ###...*** ...

9
编写赛车程序
恭喜@kuroineko。以优异的速度赢得悬赏赛(672步),在Gauntlet赛道上。 领导者:* Nimi为轻量级2129得分。其他条目较大,但显示出一定的速度。 *领导者可能会因以后的参加而发生变化。 您的任务是编写一个小程序,该程序可以快速驾驶赛车。 规则 您的程序将读取曲目的图像。您可以在任何黄色像素处启动汽车,并且必须通过交叉任何黑色像素来完成。您的汽车的行驶路线只能在灰色((c,c,c),其中30 <= c <= 220)轨道上。 您的汽车每转一圈将以直线速度移动,速度v由整数vx和vy组成(从(0,0)开始)。在每个回合开始时,您的程序可以更改vx和vy,以便: abs(vx2-vx1) + abs(vy2-vy1) <= 15 更新:最大加速度增加到15。 然后,您的程序将以白色从当前位置到(位置+ v)绘制一条直线,并在开始处带有一个蓝点。如果此线下方的像素为黑色,则说明您已经完成比赛。否则,如果该行下的所有像素均为灰色或黄色,则可以继续下一轮。 您的程序必须输出轨道图像,并以白色和蓝色添加路径。 附加输出(2015年1月15日新增): 如果您想竞争获胜或奖金,您的程序还应该分别输出城市或护手的点数列表(蓝点)。在答案中包括点列表(用于验证)。的问题应该是这样的:(x0,y0), (x1,y1), ... (xn,yn)。您可以自由使用包含'\n'字符的空白以适合页面上的数据。 您可以使用第三方图像读取和写入,线条绘制和像素访问库。您不能使用路径查找库。如果需要,可以根据需要将PNG图像转换为其他图形格式(例如GIF,JPG,BMP)。 继续前进的几条路 一个简单的开始: 赛道: 障碍课程: 城市: 噩梦之路:护手(如果其他都太容易了) 计分 您的分数将基于您在“城市”赛道上的成绩。积分等于您的程序长度(以字节为单位),加上赛车每转一圈要获得10积分。最低分获胜。请在答案中附上您的城市田径跑步图片-我们希望了解您的驾驶风格。 请使用以下格式的标题作为答案: <Racing Driver or Team Name> <Language> <Score> 例如:Slowpoke Perl 5329 您的程序必须能够按照上述规则在任何轨道图像上行驶。您不得对最佳路径或测试轨迹的任何参数进行硬编码。其他标准漏洞也适用。 类似的挑战 这与马丁提出的难题类似:致Vectory!– Vector ...

15
解锁你的锁
您已使用3位数的密码锁锁定了自行车。现在您想去兜风,需要在以下程序的帮助下将其解锁。 输入项 第一个参数 处于锁定状态的锁的数字组合。它必须不同于第二个参数(= 解锁状态的组合)。(否则您的自行车可能会被盗!) 范围000..999。不能省略前导零。 第二个参数 处于解锁状态的锁的数字组合。此值是您的目标。 范围000..999。不能省略前导零。 输出量 每次“旋转”之后,组合锁的每个状态的列表,包括初始状态(始终为第一个参数)和最后一步(始终为第二个参数)。 算法 您开始逐个“旋转”第一个数字,直到在解锁状态下到达正确的数字为止。但是,由于您了解整个解锁代码,因此可以在需要最小旋转量的方向上旋转数字,以达到处于解锁状态的数字。如果是平局,您可以选择自己喜欢的方向。 当您到达正确的第一位数字时,请从第二位开始相同的过程,然后从第三位开始。 数字顺序应理解为圆: ... 9 0 1 2 3 4 5 6 7 8 9 0 1 2 ... 这意味着从1到9的最小旋转量不是 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 = ...

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.