1
resposta

[Sugestão] Resolução

Segue minha solução.

Fiz sem olhar a solução dos exercícios anteriores dos instrutores. O que acharam.

// Consegue o nome do amigo
let listaAmigoIncluidos = document.getElementById('lista-amigos');
let listalistaSorteados = document.getElementById('lista-sorteio');
let vetorAmigos = [];
let sorteadosEsquerda = [];
let sorteadosDireita = [];
let pos;


// Adicionar pessoas
function adicionar() {
    let nomeAmigoInput = document.getElementById('nome-amigo').value;
    
    if (nomeAmigoInput != ''){ 
        vetorAmigos.push(` ${nomeAmigoInput}`);
        listaAmigoIncluidos.innerHTML = (vetorAmigos);
    } else{
        alert('Digite o nome do amigo!');
    }
}


function sortear() {   
    
    let tamanhoVetor = vetorAmigos.length;
    sortearVetores(tamanhoVetor);        
    for (let i = 0; i < sorteadosEsquerda.length; i++) {
        listalistaSorteados.innerHTML += `<p id="lista-sorteio">${sorteadosEsquerda[i]} -> ${sorteadosDireita[i]}</p>`;        
    }
            
}


function sortearVetores(tamanhoVetor) {
        
    let pos2 = 0; // posição referencia 2

    while (sorteadosDireita.length < tamanhoVetor ){
        // Encontra vetor da esquerda
        if (sorteadosEsquerda.length < vetorAmigos.length){
            pos= gerarNumeroAleatorio(0,tamanhoVetor); 

            //vetorEsquerda
            if (sorteadosEsquerda.includes(vetorAmigos[pos]) == false){
                sorteadosEsquerda.push(`${vetorAmigos[pos]}`);
            }
        }
        
        // formou vetor da esquerda primeiro
        if (sorteadosEsquerda.length == vetorAmigos.length){

            if ((sorteadosDireita.includes(vetorAmigos[pos]) == false) && (sorteadosEsquerda[pos2] !== vetorAmigos[pos])){
                sorteadosDireita.push(`${vetorAmigos[pos]}`);
                pos2++;
            }
        }
        pos= gerarNumeroAleatorio(0,tamanhoVetor); 
    }
}

function gerarNumeroAleatorio(min, max) {
    return Math.floor(Math.random() * (max - min )) + min;
  }


function reiniciar() {
    vetorAmigos= [];
    sorteadosEsquerda = [];
    sorteadosDireita = [];

    document.getElementById('lista-amigos').textContent = "";
    document.getElementById('nome-amigo').value = "";
    listalistaSorteados.innerHTML = `<p id="lista-sorteio"></p>`;
}
1 resposta

Oi Cristin! Tudo certo?

Que legal que você está se desafiando a resolver o problema por conta própria!

O seu código parece estar no caminho certo. Você está utilizando arrays para armazenar os amigos e para gerenciar os sorteios, o que é uma abordagem comum para esse tipo de problema.

Bons estudos!