gpt4 book ai didi

javascript - "MapQuest"编码挑战 - 消除相互抵消的 "Directions"

转载 作者:行者123 更新时间:2023-11-29 18:40:15 25 4
gpt4 key购买 nike

这个想法是为了消除在一系列方向上的无意义的旅行:

'N' = 北

'S' = 南

'E' = 东

'W' = 西

因此,如果我们有数组 ['S', 'E', 'W', 'W'],我们需要 mapQuest 函数来返回:

['S', 'W']

由于东方西方彼此相邻,因此它们会相互抵消。

*注意方向必须在数组中彼此相邻,以便取消。

此外,数组应该继续减少直到最终数组包含任何对立面 - 即它处理“复杂情况”:

['W', 'N', 'S', 'E', 'N']

应该返回

['N']

因为 ['W', 'N', 'S', 'E', 'N'] => ['W', 'E', 'N'] => ['N']

这个挑战的一部分是我必须使用 reduce方法。

根据我对.reduce()的理解,我的想法是做这样的事情:

function mapQuest (array) {
return array.reduce((accumulator, current, i) => {
if ((array[i] === 'S' && array[i + 1] !== 'N' && array[i - 1] !== 'N')) {
accumulator.push(array[i]);
}

if ((array[i] === 'N' && array[i + 1] !== 'S' && array[i - 1] !== 'S')) {
accumulator.push(array[i]);
}

if ((array[i] === 'E' && array[i + 1] !== 'W' && array[i - 1] !== 'W')) {
accumulator.push(array[i]);
}

if ((array[i] === 'W' && array[i + 1] !== 'E' && array[i - 1] !== 'E')) {
accumulator.push(array[i]);
}

return accumulator;
}, []);
}

console.log(mapQuest(['S', 'E', 'W', 'W']));

有效但未通过最后的测试规范 - 处理复杂情况。

期望 ['N', 'N', 'E', 'W', 'S', 'S', 'E', 'W', 'N', 'N', 'W ', 'S', 'E'] 等于 ['N', 'N', 'W', 'S', 'E']

最佳答案

一个解决方案,虽然不是很稳健,但是将缩减数组分配给一个变量,然后缩减该数组:

function mapQuest (array) {
let first = array.reduce((accumulator, current, i) => {
if ((array[i] === 'S' && array[i + 1] !== 'N' && array[i - 1] !== 'N')) {
accumulator.push(array[i]);
}

if ((array[i] === 'N' && array[i + 1] !== 'S' && array[i - 1] !== 'S')) {
accumulator.push(array[i]);
}

if ((array[i] === 'E' && array[i + 1] !== 'W' && array[i - 1] !== 'W')) {
accumulator.push(array[i]);
}

if ((array[i]=== 'W' && array[i + 1] !== 'E' && array[i - 1] !== 'E')) {
accumulator.push(array[i]);
}

return accumulator;
}, []);
let second = first.reduce((final, current, index) => {
if ((first[index] === 'S' && first[index + 1] !== 'N' && first[index - 1] !== 'N')) {
final.push(first[index]);
}

if ((first[index] === 'N' && first[index + 1] !== 'S' && first[index - 1] !== 'S')) {
final.push(first[index]);
}

if ((first[index] === 'E' && first[index + 1] !== 'W' && first[index - 1] !== 'W')) {
final.push(first[index]);
}

if ((first[index] === 'W' && first[index + 1] !== 'E' && first[index - 1] !== 'E')) {
final.push(first[index]);
}

return final;
}, []);
return second;
}
console.log(mapQuest(['N', 'N', 'E', 'W', 'S', 'S', 'E', 'W', 'N', 'N', 'W', 'S', 'E']));

通过所有测试规范。

关于javascript - "MapQuest"编码挑战 - 消除相互抵消的 "Directions",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57742473/

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