Questions tagged «path-finding»

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

9
打印所有3 x 3坚固的正方形
坚固的正方形(类似于魔术正方形)是整数1到N 2在N by N网格上的排列,以使每2 by 2子网格具有相同的总和。 例如,对于N = 3,一个坚固的正方形是 1 5 3 9 8 7 4 2 6 因为四个2 x 2子网格 1 5 9 8 5 3 8 7 9 8 4 2 8 7 2 6 全部加起来等于23, 23 = 1 + 5 + 9 + 8 = 5 + …
24 code-golf  number  arithmetic  number-theory  grid  code-golf  binary  code-golf  popularity-contest  code-golf  chemistry  code-golf  code-golf  date  code-golf  quine  chess  code-golf  hexadecimal  code-golf  number  arithmetic  sequence  array-manipulation  code-golf  math  date  code-golf  typography  code-golf  string  code-golf  string  code-golf  code-golf  math  arithmetic  array-manipulation  grid  code-golf  puzzle-solver  code-golf  music  audio  code-golf  decision-problem  code-golf  geometry  code-golf  number  bitwise  code-golf  string  metagolf  hexagonal-grid  code-golf  string  code-golf  sorting  popularity-contest  code-golf  game  sequence  base-conversion  binary  code-golf  decision-problem  graph-theory  natural-language  code-golf  math  parsing  optimized-output  code-golf  array-manipulation  code-golf  graphical-output  image-processing  tiling  code-golf  graph-theory  path-finding  chess  code-golf  code-golf  balanced-string  code-golf  number  code-golf  sequence  code-golf  math  arithmetic  statistics  code-golf  chemistry 

15
跟着我重复!
给定一个字符串作为参数,输出最长的不重叠重复子字符串的长度;如果没有这样的字符串,则输出零。 您可以假设输入字符串不为空。 例子 abcdefabc:子字符串abc在位置1和7处重复,因此程序应输出3 abcabcabcabcab:abcabc或bcabcaor cabcab重复,因此程序应输出6。(子字符串abcabcabcab也被重复,但是出现的部分重叠,因此我们不接受它)。 aaaaaaa:aaa例如在位置1和4处重复,因此程序应输出3 abcda:a重复,因此程序应输出1 xyz:没有重复的字符串→ 0 ababcabcabcabcab:应返回6 这是代码高尔夫球,因此最少的字节获胜。
23 code-golf  string  code-golf  code-golf  kolmogorov-complexity  primes  code-golf  kolmogorov-complexity  hexadecimal  code-golf  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 

7
极坐标图上行进的两点之间的距离
问题简要说明 编写一个程序,查找仅在从原点发出的光线和以原点为中心的圆上传播的两点之间的最小距离。 前提说明 现在,让我们想象一下我们在飞机上,并且只允许以特殊方式旅行。我们被允许乘坐任何从原点发出的射线旅行。 我们也可以在以圆为中心的任何圆上旅行 现在我们的目标是从飞机上的一个点移动到另一点。但是,我们不能只沿一条简单的欧几里得路径行进,只有当点恰好落在从中心发出的光线上时,我们才能这样做。 我们可以沿着这条路旅行,因为它落在我们的光线之一上。 我们还可以在以原点为中心的圆上旅行。 例子 现在是挑战: 我们必须以最短的路径从一个点到达另一个点。通常,这是绕圈和射线旅行的组合。 但是,这也可能在两条光线上传播。 有时,存在两条经过最小距离的路径。 问题 您的挑战是编写一个程序,如果我们遵循这些规则,当给定两个点时,它们将为我们提供它们之间的最小距离。输入可以是矩形或极坐标形式,并且输出应为一个数字,即两者之间的距离。 测试用例 (带矩形输入) (1,1) (1,-1) -> ~ 2.22144 (0,0) (1, 1) -> ~ 1.41421 (1,0) (-0.4161 , 0.90929) -> ~ 2 (1,1) (1, 0) -> ~ 1.19961 (1,2) (3, 4) -> ~ 3.16609

9
旅行南瓜问题
背景: 杰克(Jack)是一个南瓜,每个万圣节都喜欢在南瓜地附近惊吓村庄的居民。但是,每年有人点燃蜡烛后,在蜡烛熄灭之前,他都有有限的时间惊吓所有人,因此无法惊吓更多的村民,因为没人能看到他。在过去的几年中,由于决策不力,他只能吓到少量村庄,但现在有了您的帮助,他将能够吓到尽可能多的村庄! 任务: 给定村庄位置列表和蜡烛寿命,输出杰克可访问的最大村庄数。您不必打印路径本身。 输入: 蜡烛的寿命和笛卡尔坐标系中的村庄位置列表。Jack起源的南瓜补丁始终为0,0。您可以按照自己的意愿格式化输入。为了简化Jack的动作,他只能水平,垂直或对角移动,这意味着他的蜡烛每移动一次将失去1或1.5(对角线需要更长的时间)生命单位。寿命小于或等于0时,蜡烛会烧坏。 输出: 一个整数,它等于蜡烛熄灭前Jack可以访问的最大村庄数。 规则: 这是代码高尔夫球,因此以字节为单位的最短代码获胜。不允许出现标准漏洞。 测试用例: // Format [lifespan] [list of village coordinates] -> [maximum visit-able villages] 4 -1,0 1,0 2,0 3,0 4,0 5,0 -> 3 4 1,1 2,2 3,3 -> 2 5 1,1 2,1 3,1 4,1 5,0 5,1 -> 4

2
带有炸药的鼠标
你是老鼠 您的鼠标朋友全部被捕获,失去知觉,被困在只有一个入口/出口的迷宫中。您恰好有一张完美的迷宫图,因此您可以制定一种解决方案,以赶紧进入并安全携带。但是,迷宫装有安全系统,1000一旦达到阈值,就会触发警报,导致您被抓获并无法执行救援任务。 根据您先前对迷宫的调查,您走过的每个正方形(即,每个水平或垂直移动- 鼠标都不能对角移动)会增加1安全系统的计数器。但是,如果您要负重(一块炸药或一个昏迷的老鼠朋友),它会增加重量,2因为它会检测到额外的压力。入口/出口广场没有此安全系统,因此也不会添加到柜台上。 您带到入口的炸药数量无限制,因此您只需炸毁所有墙壁即可释放朋友。但是您必须谨慎,因为每次爆炸都会增加50震荡压力。此外,您一次只能携带一件东西,无论是一只鼠标还是一块炸药。由于炸药块只能爆炸一个墙面空间,因此,如果连续有多堵墙面,则需要空手返回入口以获取更多空间。 通例 假设我们的迷宫如下所示: ###### #M# E# ###### 我将c用于柜台。我们从E入口开始,一边携带炸药一边向左移动一格c=2。我们引爆炸药炸毁墙壁c=52。我们空手向左移动两个正方形以得到c=54,现在我们站在鼠标的正方形上。我们接起朋友,将3个正方形移回Exit,但是最后一个正方形不计数,因为它没有任何传感器,所以只有2个正方形,背面有东西。这意味着,当我们使用最后一个鼠标c=58(小于)到达出口时1000,因此任务成功。 挑战 在输入迷宫的情况下,无论您是鼠标英雄,还是可以在上述限制范围内成功营救所有被困鼠标,或者任务是否失败,都可以输出。 输入项 任何可接受格式(多行字符串,字符串数组等)的2D迷宫。 对于这一挑战,我将同时使用#内墙和外墙,M鼠标朋友和E入口。 入口永远不会紧邻内墙(始终至少有一个空间可以自由移动)。 您可以替换任何希望的可打印ASCII字符,只要它们是一致的即可。只要您保持一致(例如,如果您选择改用内墙,而选择外墙,则每个内墙都必须是,每个外墙都必须),这确实允许您对内墙和外墙使用两个不同的符号)。@#@# 迷宫将始终被墙壁完全包围,但不一定是矩形。如果需要,您可以假定迷宫用空格填充以进行矩形输入(可选)。 迷宫中的部分可能没有炸药就无法到达。 您无法炸开迷宫的外墙。 输出量 甲truthy / falsey值。对于“是,鼠标可以拯救其他所有鼠标”,为True;对于“否,警报系统将被触发”,为Falsey。 规则 完整的程序或功能都是可以接受的。 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常见的高​​尔夫规则都适用,并且最短的代码(以字节为单位)获胜。 例子 真实示例,用空白行分隔。 ##### #M E# ##### ###### #M# E# ###### ######## #E # M# # # # # # # …

3
烧饼问题
这项挑战与翻转薄煎饼有关。 您可能听说过煎饼分类,将一叠煎饼按大小分类,方法是将锅铲插入堆栈中,然后将所有煎饼翻转到锅铲上方,直到煎饼在盘上从最小到最大被分类。煎饼烧焦的问题略有不同。现在,所有薄煎饼的一面都被烧过,一旦分类完成,每个薄煎饼的烧过的一面必须面对盘子。 例如,给定以下堆栈(左侧的煎饼大小。右侧0为糊状,右侧1为糊状): 1 0 3 1 2 1 您可以翻转整个堆栈以获取20 30 11,翻转前两个31 21 11堆栈以获取10 20 30,然后再次翻转整个堆栈以获取,是一叠烧焦的煎饼。翻转3,翻转2,翻转3的移动顺序可以表示为3 2 3。 挑战 给定一组煎饼的大小(不一定是唯一的)和它们的方向,输出任何有效的烧饼分类顺序,即一系列翻转,导致从薄饼到烧饼的面朝下从最小到最大的顺序排列。 输入和输出可以是任何带有分隔符的理智的格式,但是请指定要使用的格式,并指出输入格式的哪一端是堆栈的顶部(TOS)。 允许翻转零煎饼。 允许在输入/输出中混合分隔符。 测试用例 对于以下所有测试用例,输入是一个列表,输出是一个用空格分隔的字符串,TOS在左侧。 [[1, 0], [3, 1], [2, 1]] "3 2 3" [[5, 1], [3, 0], [4, 1], [2, 1], [1, 0]] "5 3 4 1 3 2 …

1
你能听到我吗?
背景 您是软件帝国的有钱人。您的时间值得很多金钱。因此,您必须始终以最有效的路线行驶。但是,作为主管,您会花费大量时间参与重要的电话通话。绝不要打断电话,这是至关重要的,因此您绝不能穿越没有电池服务的区域! 挑战 您将得到一个三元组列表,每个元组代表一个蜂窝塔的位置和功能。作为示例,[50, 25, 16]将代表位于<x,y> = <50, 25>其周围的半径为16的圆的蜂窝塔。请牢记此清单,您必须以最短的距离从起始位置<0, 0>到达目的地的目的地<511, 511>,而不会丢失电池服务。这是代码高尔夫球,所以最短的代码获胜! 输入输出 您可以自由地将输入操作为易于阅读的形式,例如在文件中,或者使用STDIN通过使用STDIN的嵌套数组eval等。您可以对输入进行硬编码,只要您的代码可用于其他输入即可:好。用于硬编码输入的确切字符将不计算在内,但变量名称和赋值字符将被计算在内。您不应该假设输入是按任何特定顺序排列的,也不应该假设每个基站都与问题有关。如果您有任何疑问,请发表评论,我会尽力澄清。 输出将是一个坐标列表,标记点,这些点在按顺序连接时将形成出口的路径。精度只需要四舍五入到最接近的整数,如果您的输出示例比我的输出示例低1-2个单位,那就很好。我在下面提供了图片以澄清这一点。 祝你好运! 例子 input: [ 32, 42, 64] [112, 99, 59] [141, 171, 34] [157, 191, 28] [177, 187, 35] [244, 168, 57] [289, 119, 20] [299, 112, 27] [354, 59, 58] [402, 98, 23] [429, 96, …

28
做一个简单的自动包装
(注意:这是我有史以来第一个关于高尔夫的代码问题,但是据我所知,没有人能完全做到这一点,所以我应该很好。) 您的任务是制作一个程序或函数,该程序或函数接受一个字符串s和一个整数n,并返回或输出包装成多行的文本。每个单词必须全部在一行上;即中间没有字。每行的n字符长度不能超过字符,并且每行中必须包含尽可能多的单词。 例: s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget erat lectus. Morbi mi mi, fringilla sed suscipit ullamcorper, tristique at mauris. Morbi non commodo nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed at iaculis mauris. Praesent a …
22 code-golf  string  code-golf  string  parsing  apl  math  primes  integer  fastest-code  code-golf  math  primes  integer  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  array-manipulation  code-golf  number  code-golf  sequence  code-golf  math  arithmetic  code-golf  date  conversion  code-golf  geometry  combinatorics  grid  code-golf  string  code-golf  counting  java  code-golf  chess  code-golf  path-finding  conversion  atomic-code-golf  logic-gates  code-golf  fibonacci  code-golf  ascii-art  fractal  code-golf  quine  code-golf  string  code-golf  array-manipulation  decision-problem  code-golf  quine  code-golf  code-challenge  array-manipulation  code-challenge  word-search  code-golf  binary  conversion  code-golf  code-golf  restricted-source  code-golf  kolmogorov-complexity  restricted-source  code-golf  kolmogorov-complexity  random  animation 

3
路径与浪费时间
前提 因此,最近我约有半个小时的时间去预约,并决定在外面等。我还确定,如果我一动不动地站在房子前面,那看起来会很奇怪。因此,我决定在有限的区域内快速散步。我还得出结论,如果我开始绕圈子行走,很明显我在游荡。因此,我受到启发,创造了我的第一个高尔夫挑战赛。 规格 您将得到一张列表,一张区域地图,其中将包含" "或"#",它们代表自由空间和某种障碍。自由空间只能越过一次,越过它需要1分钟。您的初始位置将以"@"无赖的传统来表示,目标将以来表示,"$"因为这就是您将要失去的位置。您还将获得一个整数,该整数表示在看上去好像没有被入侵之前必须浪费多少分钟。当您降落在"$",它必须是确切的分钟数(因此,如果您要递减计数,则在相邻图块上必须为1,在图块上必须为0)。始终可以到达目的地。您的程序或函数将必须返回一个列表,该列表显示带有<,>,^和v的最短路径,以表示四个可能的方向。 例子 输入: [[" ", " ", " ", " "], ["@", " ", " ", "$"], [" ", " ", " ", " "], [" ", " ", " ", " "]] 和 5 输出: [[">", ">", ">", "v"], ["^", " ", " ", "$"], …

2
在2D地牢中找到宝藏
您位于一楼的地牢中。有一个被锁着的门保护的宝藏。可以通过找到相应的钥匙来打开门。您的目标是找到通往宝藏的最短路径。 输入项 输入将是代表地牢初始布局的二维网格。 ########### #$ # g# # # #### ###G## # # ####C# #c @ # ########### 这是您:@ 这些是墙壁:# 这是宝藏:$ 锁着的门是大写字母:A... Z 每扇门都有对应的小写字母:a...z 永远存在一个@和一个$。 地牢将始终为矩形。 不能保证地牢的外边缘是一堵墙。这是有效的地牢: $ A## @ a 不能保证宝藏是可以到达的。有些地牢可能无法解决。 可能有些门没有钥匙,并且有些钥匙没有打开任何门。 永远不会有重复的门或钥匙。 输出量 程序应该打印的序列R,L,U,D(或4个其它不同符号)来表示最短可能路径宝。在此,分别RLUD代表右,左,上和下。如果有多个最短路径,则程序只需要打印其中一条即可。 您不能移动到墙上。 您不能移动到地牢边界之外。 您必须先捡起钥匙才能上门。 移至钥匙上进行拾取。 不必打开每一扇门。 如果无法通过有效的移动顺序到达宝库,则您的程序必须终止而不打印任何内容。(允许尾随换行符。) 计分 这是代码高尔夫球,因此具有最低字节数的答案将获胜。 测试用例 每个测试用例的第一行都将具有地牢的高度和宽度,最后一行将具有最佳移动次数的一条可能路径。 1 2 @$ R …

2
高峰体验:快速参观所有高峰
我站在x 地图中以数字表示高度的点(0,0)上,例如:HW 1132 2221 1230 # H = 3, W = 4 我想体验每一个山峰的美景,在这种情况下,这里是海拔很高的地区3。但是,爬山并非易事,而且我也没时间了。 挑战 面临的挑战是找到最快的途径参观所有的山峰然后回来。 最短的程序获胜。 输入项 H,W-地图的高度和宽度(整数)(可选,可以是列表/元组或两个单独的整数输入) 以任何方便的格式(2D列表,用换行符分隔的字符串等)H以W数字集(0- 9)形式给出的地图。 输出量 参观每个高峰并回到起点的最短时间(整数) 条件 给定区域的高度由从0到的数字表示9。 “高峰”由海拔最高的区域定义。 路径必须在左上角(0,0)区域开始和结束。 您只能移动到与当前区域相邻的区域,并且不能对角移动。 如果高度没有变化,则从一个区域移动到另一区域需要3分钟。 爬上需要11分钟;也就是说,要从一个区域移动到另一个1单位正好更高的区域。 爬下需要2分钟;就是说,从一个区域移动到另一个1单位正好较低的区域。 您不能将区域移到1比您所在的位置高或低的地方。(例如,您不能从一个高海拔的区域1到另一个有高海拔的区域3) 保证通往所有山峰的道路 最大峰数为15。 样品 输入项 4 5 32445 33434 21153 12343 输出量 96 说明 您从左上角开始3。你必须访问两个5是位于在s (0,4)和(3,3)回来到3在(0,0)在最短的时间内。 3 2 4->4->5 V …

10
网格路由战
注意:该挑战目前已死,因为我无法安装运行比赛所需的语言。如果其他人有时间和兴趣去做,我并不反对。 有关排行榜,请参见帖子底部。 这是一种半合作式的“山上之王”挑战,机器人在其中通过二维网格图构建路径。控制流量最大的节点的机器人是赢家。但是,实际上需要一个机器人的资源来建立一条连接路径,因此这些机器人必须在某种程度上协同工作。 游戏玩法 在下面,N > 0设为正在运行的机器人的数量。 网格 游戏在尺寸为2的二维整数网格上进行,其左下坐标为。每个坐标与具有出边的三个坐标,以及在其上方,其中,所述坐标-取模 。这意味着网格在东边和西边环绕。每个下坐标是一个源,每个上坐标是一个下沉。⌊4/3N2⌋ × ⌊4/3N2⌋(0,0)(x,y)0 ≤ y < ⌊4/3N2⌋-1(x-1,y+1)(x,y+1)(x+1,y+1)x⌊4/3N2⌋(x,0)(x,⌊4/3N2⌋-1) 下图显示了一个8 × 8网格。 图的每个顶点是不活动的,活动的或损坏的。所有顶点都开始处于非活动状态,并且可以被漫游器激活,然后漫游器将成为其所有者。此外,漫游器可能会破坏顶点,因此无法修复。 转单 转弯包括破坏阶段和激活阶段。在销毁阶段,每个漫游器可能会破坏一个不活动的顶点。该顶点从那时起就被破坏了,任何人都不能激活它。在激活阶段,每个漫游器可以激活一个不活动的顶点。从那时起,他们拥有该顶点,并且其他任何人都无法重新激活它。如果多个漫游器都在同一转弯上激活单个顶点,则它们可能拥有一个顶点。在每个阶段,顶点选择是同时完成的。 计分 一轮持续一圈。此后,该回合得分如下。从每个活动的源顶点,我们沿着活动的顶点执行一次随机的深度优先搜索(这意味着每个顶点的子级均以随机顺序访问)。如果找到从源到某个汇的路径,则对于该路径上的所有顶点,顶点的每个所有者都会获得一个点。N2N 整个游戏持续100回合,而总分最高的机器人就是赢家。如果分数差异太大,我可能会增加这个数字。 附加规则 不会弄乱控制器或其他提交内容。 每个参赛者最多提交一份。 在游戏开始时,除了一个私人文本文件外,没有其他外部资源被清除。 不要设计您的机器人来击败或支持特定的对手。 提供命令来编译和运行您的机器人。可以免费使用任何可用于Debian Linux的编译器/解释器。 控制器 该控制器是用Python 3编写的,可以在GitHub中找到。有关详细说明,请参见README文件。这是一个让您入门的API: 僵尸程序在每个回合开始时开始,并一直持续到回合结束。使用换行符终止的消息,通过STDIN和STDOUT与控制器进行通信。 BEGIN [num-of-bots] [num-of-turns] [side-length] 在开始时输入。 DESTROY [turn]在每个销毁阶段开始时输入。您的漫游器应VERTEX x,y以选择一个顶点或做出响应NONE。 BROKEN [turn] [your-choice] [other-choices]在每个销毁阶段结束时输入。其他机器人的顺序在每个游戏开始时都是随机的,但在此过程中保持不变。选项显示为x,y或N。 ACTIVATE [turn]和OWNED …

1
流氓寻路
流氓寻路 给定下面描述的元素的二维数组(表示地牢),您的任务将输出或返回一个数字,该数字表示流氓可以在不唤醒任何怪物的情况下收集的金块数量。 数组的元素如下: 空格由.您的呼叫或一个空格表示; 当然,Rogue的起始位置由@; 表示。 一块金代表$; 墙壁用#; 怪物由以下正则表达式中的字符表示:[a-zA-Z*&]。 该数组不应包含上面未列出的任何字符,因此您可以假定不是墙壁,空白空间,流氓或金币的任何东西都是怪兽。 寻路的规则是: 流氓只能穿过空的牢房或含金的牢房。 转向到相邻或对角线相邻的单元格; 拿起黄金是立即的; 流氓在不醒来的情况下不能与怪物相邻或对角相邻超过一个回合,这是被禁止的; 流氓可以多次进入怪物的意识区域,只有流氓在其附近连续走两圈时,怪物才会醒来。 输入和输出规则 您可以采用任何合理的格式获取输入,包括二维数组,平面数组,字符串或其他任何格式。如果它使您的生活更轻松,那么您也可以考虑数组的尺寸。 可以确保流氓一开始不会在怪物附近。 完整的程序或功能很好。 计分 这是代码高尔夫球,分数是提交的字节数,越少越好。 测试用例 为了方便阅读,我在此处使用空格表示点,如果您愿意,可以使用空格(请参见上文)。还要注意,这纯粹是偶然的,流氓总是在左上角,您的代码也应该处理任何其他有效位置。 1) @.. .$. ... -> 1 只是一个健康测试。 2) @.... ...g$ ..... -> 0 再次进行健全性测试。 3) @.... ...$g ..... -> 1 流氓可以通过向左移动来抢金。 4) @....g.. .......$ ........ .....h.. …

3
遵循不完整的指示
您的一位朋友已为您指示了镇上最好的餐厅。这是一系列的左转和右转。不幸的是,他们忘了提到在这些转弯之间需要走多长时间。幸运的是,您有一张包含所有餐厅的街道地图。也许您能弄清楚他们的意思是哪家餐厅? 输入项 该地图以ASCII字符的矩形网格形式给出。.之路,#是一个建筑,A到Z是各种餐馆。您从左上角开始,向东行驶。例: .....A .#.### B....C ##.#.# D....E ##F### 您朋友的说明将以(可能为空)字符串或包含Ls和Rs 的字符列表的形式给出。 输出量 您可以走与输入字符串中的左转和右转相对应的任何路径,前提是您在每个位置之前和末端至少向前走了一步。特别是,这意味着如果字符串以R您开头,则不能在最左边的列中立即向南移动。这也意味着您不能当场旋转180°。 除了最后到达的那栋建筑物或餐厅,您不能漫步。您可以假设左上角为.。 您应该将您朋友指示下可以到达的所有餐馆输出为字符串或列表。 您可能会认为这些说明将导致至少一家餐馆。例如,一张单张L对于以上地图无效。 上图的一些示例: <empty> A R F RR B,D RL C,E RLRL E RLLR C RLLL B RLRR D RLRRRR A,C RLLLRLL B 请特别注意R达不到B。 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行自变量或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。 适用标准代码高尔夫球规则。 其他测试用例 这是一张较大的地图,由Conor O'Brien提供(我对此做了一些修改): .......Y..........................###### .####.....#.##....##..######....#.###.## B.........#.##.#..##....##...##.#.#P...# .#.#####..#.##..#.##....##.#....#.####.# .#.#...C..#.##...G##..#.##.#....#.#....# .#.#.#.#..#.####.###.#..##.#....#.#.NO.# .#.#A#.#..#.##...F###...##.#.##.#......# …

3
我的障碍路线有多变化?
背景 我通过将盒子放在矩形房间中来构造一个简单的障碍物路线。现在,我想计算解决问题的本质上不同的方法。我需要你为此写一个程序。 输入项 您的输入是字符的非空矩形数组.#。点.是空白,#是障碍。 一个路径通过障碍课程开始在AT右下角的左上角和结束,并进入只向右或向下。同样,有效路径不能穿过障碍物。以下是一些使用+-characters 绘制的示例: Valid path Invalid path Invalid path Invalid path ++........ ++........ +++++..... ..+....... .++++++#.. .+.....#.. ....+++#++ ..++...#.. ......+#.. .+.++++#.. .......#.+ ...+++.#.. ....#.++++ .+++#.++++ ....#....+ ....#+.... 两条路径是基本相似的1,如果可以通过移动一个被转化成其它+在时间。中间路径也必须有效,因此您不能在障碍物上弯曲路径。例如,这里的前两个路径本质上是相似的,但是第三个路径与它们本质上是不同的,因为它不能绕过两个障碍: ++........ +......... +++++++++. .+++++.#.. ++.....#.. .......#+. .....+.#.. .++++++#.. .......#++ ....#+++++ ....#.++++ ....#....+ 输出量 您的输出是穿过障碍物路线的基本不同路径的数量。换句话说,如果将所有有效路径划分为本质上相似的路径类别,则输出为类别数。请注意,如果没有有效的路径,则此数字可能为0。 规则和计分 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。没有时间限制,只是您应该在提交每个测试用例之前对程序进行评估。 测试用例 .... .... …

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.