Eu não estou conseguindo implementar o Fisher-Yates no desafio 4. :(
Eu não estou conseguindo implementar o Fisher-Yates no desafio 4. :(
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
.
Espero ter ajudado e bons estudos!