Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Projeto] Desafio Amigo secreto - Hora da pratica

segue as questões de 2 a 5, codigos:

/*Adicione os números 1,2,3 em uma variável chamada minhaLista e armazene os números 4, 5 e 6 separadamente em outra variável. Use o método concat() para combinar as sequências de valores em uma nova lista chamadanovaLista. Imprima novaLista no console.*/
let lista3
let lista1 = [1,2,3,4,5];
let lista2 = [2,3,4,5,6,7,8];

lista3 = lista1.concat(lista2);
console.log(lista3);

/*Remova o último elemento de novaLista. Imprima novaLista após a remoção.*/

let lista4 = lista3.pop();
console.log(lista3);
console.log(lista4);

/*Utilize o algoritmo de Fisher-Yates (também conhecido como Knuth Shuffle) para embaralhar os elementos em novaLista. Pesquise e adapte o código para realizar o embaralhamento.*/

function embaralhar(lista) {
    for (let indice = lista.length; indice; indice--) {
        let indiceAleatorio = Math.floor(Math.random() * indice);
        [lista[indice - 1], lista[indiceAleatorio]] = [lista[indiceAleatorio], lista[indice - 1]];
    }
    console.log(lista);
}
embaralhar(lista3);
/*Crie uma função chamada removerDuplicatas que aceita um array como parâmetro e retorna um novo array sem elementos duplicados. Teste a função com novaLista e imprima o array resultante.*/

function removerDuplicatas(array) {
    return [...new Set(array)];
}

let resultado = removerDuplicatas(lista3).sort();
console.log(resultado);
3 respostas

ja a questão de remover o amigo no sorteio,.. estou tendo problemas, crio a funcionalidade, porem ele não libera.. depois pedi para o ChatGPT analisar, e a resolução dele funciona..porem o meu codigo original não roda... abaixo deixo o meu codigo. e na proxima coloco o do chatGPT

    let grupoAmigos = [];

function adicionar() {
    let nomeAmigo = document.getElementById('nome-amigo').value.trim();
    let listaAmigos = document.getElementById('lista-amigos');
    let nomeAmigoUpper = nomeAmigo.toUpperCase();
        if (nomeAmigo === '') {
            alert('Favor inserir o nome no campo');
            return;
        } 
        if (grupoAmigos.includes(nomeAmigoUpper)) {
            alert("Amigo ja incluido, informe outro nome ou adicione um sobrenome");                
         return;
        }

        grupoAmigos.push(nomeAmigoUpper);
        console.log(grupoAmigos);

        if (listaAmigos.textContent == '') {
                listaAmigos.textContent = nomeAmigo;
        } else {
                listaAmigos.textContent = listaAmigos.textContent + ', ' + nomeAmigo;
            }
            document.getElementById('nome-amigo').value = '';
        }
     

function sortear() {

    if (grupoAmigos.length < 4) {
        alert('Adicione pelo menos dois amigos para realizar o sorteio.');
        return;
    }

    embaralhar(grupoAmigos);
    let listaSorteio = document.getElementById('lista-sorteio');
    listaSorteio.innerHTML = '';

}

function excluirAmigo(index) {
    grupoAmigos.splice(index, 1);
    atualizarLista();
    atualizarSorteio();
}

function embaralhar(lista) {
    for (let indice = lista.length; indice; indice--) {
        let indiceAleatorio = Math.floor(Math.random() * indice);

        [lista[indice - 1], lista[indiceAleatorio]] = [lista[indiceAleatorio], lista[indice - 1]];
    }
}

function atualizarSorteio() {
    listaSorteio = document.getElementById('lista-sorteio');
    listaSorteio.innerHTML = '';

}

function atualizarLista() {
    let listaAmigos = document.getElementById('lista-amigos');
    listaAmigos.innerHTML = ''; 

    for (let i = 0; i < grupoAmigos.length; i++) {
        let paragrafo = document.createElement('p');
        paragrafo.textContent = grupoAmigos[i];

        paragrafo.addEventListener('click', function() {
            excluirAmigo(i);
        });

        listaAmigos.appendChild(paragrafo);
    }
}


function reiniciar() {
    grupoAmigos = [];
    listaSorteio.innerHTML = '';
    document.getElementById('lista-amigos').innerHTML = '';
    document.getElementById('lista-sorteio').innerHTML = '';
}

e aqui a solução que o Chat GPT me deu... Se conseguir me mostrar qual trecho ou sintaxe que estou errando no meu codigo, agradeceria

let grupoAmigos = [];

function adicionar() {
    let nomeAmigo = document.getElementById('nome-amigo').value.trim();
    let listaAmigos = document.getElementById('lista-amigos');
    let nomeAmigoUpper = nomeAmigo.toUpperCase();

    if (nomeAmigo === '') {
        alert('Favor inserir o nome no campo');
        return;
    }

    if (grupoAmigos.includes(nomeAmigoUpper)) {
        alert("Amigo já incluído, informe outro nome ou adicione um sobrenome");
        return;
    }

    grupoAmigos.push(nomeAmigoUpper);
    console.log(grupoAmigos);

    if (listaAmigos.textContent == '') {
        listaAmigos.textContent = nomeAmigo;
    } else {
        listaAmigos.textContent = listaAmigos.textContent + ', ' + nomeAmigo;
    }
    
    atualizarLista();

    document.getElementById('nome-amigo').value = ''; 
}

function sortear() {
    if (grupoAmigos.length < 2) {
        alert('Adicione pelo menos dois amigos para realizar o sorteio.');
        return;
    }

    embaralhar(grupoAmigos);
    let listaSorteio = document.getElementById('lista-sorteio');
    listaSorteio.innerHTML = '';

    for (let i = 0; i < grupoAmigos.length; i++) {
        let amigo1 = grupoAmigos[i];
        let amigo2 = (i === grupoAmigos.length - 1) ? grupoAmigos[0] : grupoAmigos[i + 1];
        listaSorteio.innerHTML += `${amigo1} → ${amigo2} <br>`;
    }
}

function excluirAmigo(index) {
    grupoAmigos.splice(index, 1);
    atualizarLista();
    atualizarSorteio();
}

function embaralhar(lista) {
    for (let indice = lista.length; indice; indice--) {
        let indiceAleatorio = Math.floor(Math.random() * indice);
        [lista[indice - 1], lista[indiceAleatorio]] = [lista[indiceAleatorio], lista[indice - 1]];
    }
}

function atualizarSorteio() {
    let listaSorteio = document.getElementById('lista-sorteio');
    listaSorteio.innerHTML = '';
}

function atualizarLista() {
    let listaAmigos = document.getElementById('lista-amigos');
    listaAmigos.innerHTML = ''; 

    for (let i = 0; i < grupoAmigos.length; i++) {
        let paragrafo = document.createElement('p');
        paragrafo.textContent = grupoAmigos[i];

        paragrafo.addEventListener('click', function() {
            excluirAmigo(i);
        });

        listaAmigos.appendChild(paragrafo);
    }
}

function reiniciar() {
    grupoAmigos = [];
    document.getElementById('lista-amigos').innerHTML = '';
    document.getElementById('lista-sorteio').innerHTML = '';
}
solução!

Oi, Rony! Tudo bem?

O problema no seu código está na função reiniciar() e na manipulação da lista de amigos. No seu código original, há dois pontos que precisam ser ajustados:

  1. Erro na função reiniciar(): No seu código, você está tentando limpar listaSorteio.innerHTML, mas a variável listaSorteio não foi declarada dentro da função. O correto séria buscar o elemento novamente:

    function reiniciar() {
        grupoAmigos = [];
        document.getElementById('lista-amigos').innerHTML = '';
        document.getElementById('lista-sorteio').innerHTML = '';
    }
    
  2. A atualizarLista() não é chamada após adicionar um amigo: O código do ChatGPT chama essa função depois de adicionar um amigo, enquanto o seu não. Isso garante que a lista seja renderizada corretamente.

    Ajuste seu código adicionando essa chamada em adicionar():

    function adicionar() {
        let nomeAmigo = document.getElementById('nome-amigo').value.trim();
        let listaAmigos = document.getElementById('lista-amigos');
        let nomeAmigoUpper = nomeAmigo.toUpperCase();
    
        if (nomeAmigo === '') {
            alert('Favor inserir o nome no campo');
            return;
        }
    
        if (grupoAmigos.includes(nomeAmigoUpper)) {
            alert("Amigo já incluído, informe outro nome ou adicione um sobrenome");
            return;
        }
    
        grupoAmigos.push(nomeAmigoUpper);
        console.log(grupoAmigos);
    
        atualizarLista(); // Chamada necessária
    
        document.getElementById('nome-amigo').value = ''; 
    }
    

Com essas correções, seu código deve funcionar corretamente.

Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.