1
resposta

[Dúvida] Não conseguir realizar o deafio 4

Eu não estou conseguindo implementar o Fisher-Yates no desafio 4. :(

1 resposta

Olá, Mário! Vejo que você está tendo problemas com o algoritmo de Fisher-Yates no desafio 4. Não se preocupe, é um algoritmo um pouco mais complexo e é normal ter dificuldades no início.

O algoritmo de Fisher-Yates é usado para embaralhar os elementos de um array de maneira eficiente. Aqui está um exemplo de como você pode implementá-lo:

function embaralhar(array) {
    var m = array.length, t, i;

    // Enquanto ainda houver elementos para embaralhar...
    while (m) {

        // Escolha um elemento...
        i = Math.floor(Math.random() * m--);

        // E troque-o com o elemento atual.
        t = array[m];
        array[m] = array[i];
        array[i] = t;
    }

    return array;
}

var novaLista = [1, 2, 3, 4, 5, 6];
novaLista = embaralhar(novaLista);
console.log(novaLista);

Neste código, a função embaralhar recebe um array como parâmetro. Ela percorre o array de trás para frente (isso é o que o while (m) faz) e, para cada elemento, escolhe outro elemento aleatório do array e troca os dois de lugar (isso é o que o i = Math.floor(Math.random() * m--) e as três linhas seguintes fazem).

Você pode adaptar esse código para o seu problema, substituindo array por novaLista.

  • Para ver a resposta dá uma olhadinha na "Opinião do instrutor" no botão verde:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Espero ter ajudado e bons estudos!