не удалось выполнить некоторые тестовые примеры проблемы с кодом-призраком

#javascript #node.js

#javascript #node.js

Вопрос:

У меня есть эта проблема с призраком

и программа должна найти номер номера вертикальной строки, который ведет к самому левому боковому пути (например, на рисунке ниже программа должна вернуть 3, поскольку она может добраться до самой левой строки, следуя правилу призрачной ветви, где она должна следовать за горизонтальной линией всякий раз, когда она встречается)

Параметр передается следующим образом:

 7 4 5  // lines[1] refers to length of each vertical line, the number of vertical lines,the number of horizontal lines
1 3 1  // from lines[2~L-1] each line refers to the a_i, b_i, c_i length of a horizontal line(pls check the picture) 
3 2 2
2 3 5
3 4 4
1 6 6
  

введите описание изображения здесь

и ниже приведено мое решение:

 let lines = [ '5 5 8',
  '3 3 4',
  '1 3 2',
  '4 2 2',
  '2 1 2',
  '2 4 4',
  '3 1 1',
  '1 4 3',
  '4 3 4' ];
// convert the stdin to an two Dimentional array 
let newLines = [];
let log = console.log.bind(console)
for(var i=1; i<lines.length; i  ) {
    let eachLine = []
    let eachEle = lines[i].split(' ')
    for(var j in eachEle) {
        eachLine.push(parseInt(eachEle[j]))
    }
    newLines.push(eachLine)
}

// my way try to do it is the opposite way, like start from the vertical Line 1, and move back to the top following the rule, and return the line number it reaches
let cur_index = 1
let last_c_i = 7
let nodefound = [1]
while(nodefound !== []) {
    const filteredarr = newLines.filter(
        function(each) { 
            return (each[0] === cur_index amp;amp; each[1] < last_c_i) || (each[0] === cur_index - 1 amp;amp; each[2] < last_c_i)})
    if (filteredarr.length !== 0) {
        nodefound = filteredarr.reduce(function (prev, current) {
            return (prev[1] > current[1]) ? prev : current
        })
        last_c_i = nodefound[2]
    } else {
        return console.log(cur_index);
    }
    log('nodefound', nodefound)
    if (nodefound[0] === cur_index.toString() || nodefound[0] === cur_index) {
        cur_index  
    } else {
        cur_index--
    }
}
  

Решение прошло несколько случаев и провалило некоторые, я не могу проверить все тестовые примеры, поэтому не могу понять, что с ним не так.
Любая помощь будет оценена, спасибо!

Комментарии:

1. В каких случаях это не удалось и где что-то пошло не так?

2. Я не знаю, в каком случае это не удается, потому что это проблема на веб-сайте по практике кодирования @JackBashford