"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Problemas difíceis recursivos usando Javascript

Problemas difíceis recursivos usando Javascript

Publicado em 19/08/2024
Navegar:698

Recursive Hard Problems Using Javascript

P. Como encontrar um caminho para casa / origem até o destino usando recurssão

"XXXXXEX",
"XX",

"XSXXXX"

"XXXXXEX",
"X X X",
"X X X",
"X XXX X",
"XX",
"XSXXXXXX"

A partir desses 2 padrões, descubra o caminho da origem ao destino

// const maze = [
//     "XXXXXEX",
//     "X     X",
//     "XSXXXXX"
//     ];
const maze = [
    "XXXXXEX",
    "X   X X",
    "X   X X",
    "X XXX X",
    "X     X",
    "XSXXXXXX"
    ];
const dir = [
    [-1, 0],
    [1, 0],
    [0, -1],
    [0, 1]
    ];

visited = {};

path = [];

const findPath = (row, col) => {
    //1. out of bound condition
    if (row = maze.length || col = maze[0].length) {
        return false;
    }

    //2. Already visited 
    if (visited[`${row}_${col}`]) {
        return false;
    }


    // found road block 
    if (maze[row][col] === 'X') {
        return false;
    }

    // found the End

    if (maze[row][col] === 'E') {
         path.push(`${row}_${col}`);
        return true;
    }

    path.push(`${row}_${col}`);
    visited[`${row}_${col}`] = true;

    for (let item of dir) {
        const [x, y] = item;
        if (findPath(row x, col y)) {
            return true;
        }
    }
    path.pop();
    return false;
};

findPath(5,1);
// findPath(2,1);
console.log(path)

/*
node /tmp/n2GEk3kzOo.js
[
  '5_1', '4_1', '4_2',
  '4_3', '4_4', '4_5',
  '3_5', '2_5', '1_5',
  '0_5'
]
*/
Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/ashutoshsarangi/recursive-hard-problems-using-javascript-4cid?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3