arrays - React:通过字符串映射并为每次迭代发出命令。然后计算结果
问题描述
所以我在 React 中有一个挑战。
挑战是这样的。想象一个带有 x 轴和 y 轴的二维网格。像这样:
(+y)
^
|
|
(-x) <-----+-----> (+x)
|
|
v
(-y)
使用 2d 向量 (x,y),您可以在您所在的网格中找到。所以 (0,0) 在中间是直的
所以你从 (0,0) 开始,然后从那里开始,以及你在四个不同方向上移动的任何位置。左,右,上或下。
您将获得一份关于移动方向的说明列表。每条指令将您在相应方向上移动一个方格。这些指令被编码为一串 ascii 字符,其中每个字符对应一个指令:
^
向上移动(向北)(y +1)v
下移(南)(y -1)>
向右移动(向东) (x +1)<
左移(西)(x -1)
所以“>>>”会将你向右移动三个位置。你最终在 (3,0) 和 "<<^^<
您必须实现以下两个函数来回答这些问题:
- 处理完所有指令后的最终位置是什么?
- 您将访问两次的第一个地点是哪个?
假设任何有效的字符串都可以作为输入。
到目前为止我制作的起始代码,因此您可以更好地理解问题:https ://repl.it/@jdegrell/map-through-the-grid
随意更改其中的任何内容。
所以计算最终位置本身很容易。只需循环遍历字符串的数组版本并根据输入递增或递减 x 和 y。像这样:
var coord = [0,0]
for (var i=0; i < inputData.split("").length; i++) {
if (arr[i] == ">") {
cord[0]++
} else if (arr[i] == "<")
{
cord[0]--
} else if (arr[i] == "^")
{
cord[1]++
}
else if (arr[i] == "v")
{
cord[1]--
}
}
但是当我们需要计算哪个是第一个位置被访问了两次时,这就变成了一个问题。为此,我需要迭代循环,并且还要知道网格上的先前步骤。所以我需要通过insteed进行映射。但我不确定如何正确执行此操作。
任何人都想帮助我解决问题,并可能解释如何在这种情况下正确使用地图。
谢谢。
解决方案
推荐阅读
- python - 在 python、selenium 中使用 xpath 从网页中抓取数据
- servlets - 如何使用 WebSphere 8.5.5 传统支持 Servlet 3.1
- list - 排序 List(Double, (String, List[String])) 首先按 Double 然后按元组中的第一个 String 值
- mysql - MySQL:通过将位于两个单独表中的价格和数量列相乘来计算餐厅数据库中每个订单的总价格
- python - 查询不会使用变量运行
- c++ - 用 const 定义的变量会占用内存吗?
- swift - 如何在对同一链中的 dataTaskPublisher 的请求中使用来自一个发布者的值?
- python - 如何从 while 循环中删除尾随逗号?
- python - 使用 matplotlib 的 fill_between 函数出现意外值错误
- reactjs - 反应和打字稿中的 useState() 效果不佳..!再次