Если вы не знакомы с этим испытанием, вот инструкции:
https://www.codewars.com/kata/54da539698b8a2ad76000228/train/javascript
Вы живете в городе Картезия, где все дороги расположены видеальная сетка.Вы приехали на десять минут раньше, чем на прием, поэтому решили воспользоваться возможностью, чтобы прогуляться.Город предоставляет своим гражданам приложение Walk Generating на своих телефонах - каждый раз, когда вы нажимаете кнопку, он отправляет вам массив однобуквенных строк, представляющих направления для ходьбы (например, ['n', 's', 'w','е']).Вы всегда идете только по одному блоку в направлении, и вы знаете, что вам понадобится одна минута, чтобы пройти через один городской квартал, поэтому создайте функцию, которая будет возвращать true, если прогулка, которую дает приложение, займет у вас ровно десять минут (вы нехочу быть рано или поздно!) и, конечно, вернет вас к исходной точке.В противном случае верните false.
Пока я пробовал:
function isValidWalk(walk) {
//initiate person starting point
let person = [0, 0]
//establish what the ending point must be
let finalDestination = [0, 0]
let north = [0, 1]
let east = [1, 0]
let south = [0, -1]
let west = [-1, 0]
//as long as the length of the array is 10 or less, continue walk
for (let i = 0; i <= 10; i++) {
//if the letter in the array is "n", move north
if (walk[i] === "n") {
person + north;
}
//if the letter in the array is "e", move east
if (walk[i] === "e") {
person + east;
}
//if the letter in the array is "s", move south
if (walk[i] === "s") {
person + south;
}
//if the letter in the array is "w", move west
if (walk[i] === "w") {
person + west;
}
}
if (person === finalDestination) {
return true;
}
else {
return false;
}
}
И это проходит 6/9 тестов, но не возвращает true
для правильной прогулки,
Как вы видите, я пытался сказать, что функция isValidWalk
должна возвращать true, если местоположение person
равно переменной finalDestination
в конце их обхода.
Я знаю, что, возможно, есть другие способы решения этой проблемы, но я хотел бы продолжить следовать логике, которую я установил, если это возможно.
Мне интересно, проблема в том, что я неправильно обращаюсь к элементам в массиве?Т.е. walk[i]
правильно ли получает здесь элементы массива?
if (walk[i] === "n") {
person + north;
}
Это то, что должно перемещать person
по этой воображаемой сетке, но, очевидно, он ничего не делает.Какой другой синтаксис я должен попытаться получить доступ к элементам в массиве и проверить, равны ли они «n», «e», «s» и «w»?