Advent of Code Day 11 六边形迷宫

解题语言不限Java

拖更了,不好意思

题目内容

Crossing the bridge, you've barely reached the other side of the stream when a program comes up to you, clearly in distress. "It's my child process," she says, "he's gotten lost in an infinite grid!"
当你快跨过桥的时候,你看见一个沮丧的程序走过来。“这是我孩子的路径”,她说,“他在这个无穷大的网格里迷路了”。
Fortunately for her, you have plenty of experience with infinite grids.
对她来说幸运的是,你对无穷网格很有经验。
Unfortunately for you, it's a hex grid.The hexagons ("hexes") in this grid are aligned such that adjacent hexes can be found to the north, northeast, southeast, south, southwest, and northwest:
对你来说不幸的是,这是个六边形网格(译者注:我把链接的网址换成百度了,方便各位没有梯子的同志们)。六边形在网格里对齐,并且可以向北,西北,西南,东北,东南移动。

  \ n  /
nw +--+ ne
  /    \
-+      +-
  \    /
sw +--+ se
  / s  \

You have the path the child process took. Starting where he started, you need to determine the fewest number of steps required to reach him. (A "step" means to move from the hex you are in to any adjacent hex.)
你有她孩子走过的路径,从当前位置开始,你需要去判断到达他所在位置的最短路径。
For example:

  • ne,ne,ne is 3 steps away.
    最短路径为3。
  • ne,ne,sw,sw is 0 steps away (back where you started).
    最短路径为0,因为转了一圈回来了。
  • ne,ne,s,s is 2steps away (se,se).
    最短路径为2(se,se)。
  • se,sw,se,sw,sw is 3 steps away (s,s,sw).
    最短路径为3(s,s,sw)。

解题思路

这个题目是要求在原点到目标点的曼哈顿距离。不知道曼哈顿距离的朋友可以去看看曼哈顿距离
难点在于和直角坐标系相比,移动向量多了一,并且有移动向量之间是可以互相转换的。
比如说:
我用移动向量(x,y,z)来表示六边形网格中的位置。

  • x是向北移动的距离
  • y是向西北移动的距离
  • z是向东北移动的距离

那位置(-1,1,1)和位置(0,0,0)是一样的
但是在直角坐标系中(x,y)的组合是不会出现这样的问题。因为在二维平面。垂直的两个向量是不会互相影响的。
我在犯了这个错误之后借鉴了一下这个网站,这里面很详细的讲了各种方法来解这个问题。我会在整个活动结束之后出一个学习笔记来解析这个题目。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java开发的准备工作 在进行JDK的安装之前,一定要先把电脑的防火墙关掉。 选择正确的安装版本,如果电脑是64位...
    大鱼鱼阅读 199评论 1 0
  • 大学里坚持做自己喜欢的事情,积跬步终致千里、纵不如所愿、仍有尽吾志也而不能至者·可以无悔矣.
    油管视频阅读 177评论 0 0
  • 深夜 正值动笔的时机 其实刚才的午夜寻觅像是坐了时光机器 在别人的空间里看见了向往成为的自己 不懂的就不要乱说 明...
    清烨阅读 261评论 2 2
  • ​ 流星划过,不过光年之前,时间弄人,羁绊不再。 这是读完最平静的一次,没有刻意凸显人性的恶或善,没有让人限于感情...
    李一没有博先森6阅读 701评论 0 4
  • 今天使用anaconda中spyder爬虫突然出错,代码在别人电脑上正常运行,但是一到自己电脑上就出问题,排查好久...
    芒果不小心黄了阅读 1,965评论 0 0