gpt4 book ai didi

java - 给定 2 个坐标,判断一个人要去哪个方向(左/右)

转载 作者:行者123 更新时间:2023-12-01 12:04:24 32 4
gpt4 key购买 nike

如果您有坐标系或 map (或者二维数组,如果您愿意的话),并且每个单元格的编号范围为 [0,0] 到 [m,n]。 给定起点和目的地坐标,如何判断每一步的前进方向?如果不在网格边界(北、南、西北等),一个人可以走 8 个方向。所以没有向上或向下,只有向左/向右等。

目标是有一系列“向右走”、“向左走”……直到目的地考虑到人们始终看向哪个方向。例如,如果一个人正在寻找 map 的左侧并向前移动,一个人将与正在寻找网格但向左走的人落在同一个单元格中。

示例

从[0,0]到[2,1]。出于说明原因,我画了 2 个步骤(如果将步骤计入网格,则为 3 个步骤)。每个箭头还表明人们从哪个方向进入牢房以及进入后所看的方向。例如,在单元格 [1,1] 中,看起来是东北方向。

enter image description here

我希望这不是太离题,但在我看来这是一个编程问题。你如何回答取决于你。我用 Java 将其实现为图表

最佳答案

要做的就是将“当前方向”添加到 Hobo 的状态中。我将使用枚举 N、NE、E... 来表示状态和移动方向。然后可以从表格计算“方向”;我用A(头)H(alf)L(左),L(左)

          Hobo faces
N NE E ...
------------------
Dir N | A HL L ...
NE| HR A HL ...
E | R HR A ...
...

TomTom 建议的实现

此 HashMap 中的键是“LOOKING_DIRECTION”+“GLOBAL_MOVE_DIRECTION”元组,您获得的值是左/右/..,形式为西/东/..(这些方向不是全局的,而是主观的)和同时寻找下一步的方向。

HashMap<String, String> DIR_CONVERTER = new HashMap<>();

String[] directions = {"N", "NE", "E", "SE", "S", "SW", "W", "NW"};

for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
DIR_CONVERTER.put(directions[i]+directions[j], directions[(j+8-i)%8]);
}
}

关于java - 给定 2 个坐标,判断一个人要去哪个方向(左/右),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27733053/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com