1
resposta

Desafio amigo secreto

let amigos = [];

// Adiciona um amigo à lista
function adicionar() {
    let inputAmigo = document.getElementById('nome-amigo');
    let nome = inputAmigo.value.trim();
    
    if (nome === '') {
        alert("Por favor, insira um nome.");
        return;
    }
    
    if (amigos.includes(nome)) {
        alert("Este nome já foi adicionado.");
        return;
    }
    
    amigos.push(nome);
    atualizarListaAmigos();
    inputAmigo.value = '';
}

// Atualiza a visualização da lista de amigos
function atualizarListaAmigos() {
    let lista = document.getElementById('lista-amigos');
    lista.innerHTML = '';
    
    amigos.forEach((nome) => {
        let li = document.createElement('li');
        li.textContent = nome;
        li.style.cursor = 'pointer';
        li.title = 'Clique para remover este amigo';
        li.addEventListener('click', () => removerAmigo(nome));
        lista.appendChild(li);
    });
}

// Remove um amigo da lista
function removerAmigo(nome) {
    let index = amigos.indexOf(nome);
    if (index !== -1) {
        amigos.splice(index, 1);
        atualizarListaAmigos();
    }
}

// Realiza o sorteio de amigo secreto
function sortear() {
    if (amigos.length < 4) {
        alert('É necessário ter pelo menos 4 pessoas para realizar o sorteio.');
        return;
    }
    
    embaralhar(amigos);
    let sorteio = document.getElementById('lista-sorteio');
    sorteio.innerHTML = '';

    for (let i = 0; i < amigos.length; i++) {
        let proximo = (i === amigos.length - 1) ? amigos[0] : amigos[i + 1];
        sorteio.innerHTML += `${amigos[i]} --> ${proximo}<br/>`;
    }
}

// Embaralha a lista de amigos usando Fisher-Yates
function embaralhar(lista) {
    for (let i = lista.length; i > 0; i--) {
        const indiceAleatorio = Math.floor(Math.random() * i);
        [lista[i - 1], lista[indiceAleatorio]] = [lista[indiceAleatorio], lista[i - 1]];
    }
}

// Reinicia o sorteio e a lista de amigos
function reiniciar() {
    amigos = [];
    document.getElementById('lista-amigos').innerHTML = '';
    document.getElementById('lista-sorteio').innerHTML = '';
}

Desafios Lógica e Arrays

let minhaLista = [1, 2, 3];
let outraLista = [4, 5, 6];
let novaLista = minhaLista.concat(outraLista);
console.log("novaLista após concatenação:", novaLista);

novaLista.pop();
console.log("novaLista após remover o último elemento:", novaLista);

function embaralharArray(array) {
    for (let i = array.length; i > 0; i--) {
        const indiceAleatorio = Math.floor(Math.random() * i);
        [array[i - 1], array[indiceAleatorio]] = [array[indiceAleatorio], array[i - 1]];
    }
}
embaralharArray(novaLista);
console.log("novaLista após embaralhar:", novaLista);

function removerDuplicatas(array) {
    let novoArray = [];
    array.forEach(item => {
        if (!novoArray.includes(item)) {
            novoArray.push(item);
        }
    });
    return novoArray;
}

let semDuplicatas = removerDuplicatas(novaLista);
console.log("novaLista sem duplicatas:", semDuplicatas);
1 resposta

Olá, tudo bem?

Parabéns pelo resultado na resolução do desafio, ficou ótimo!

Além disso, agradeço por compartilhar seu código com os demais estudantes, com certeza vai ajudar nos estudos de todas as pessoas que estão aprendendo este mesmo assunto.

Continue mergulhando em tecnologia e se tiver dúvidas, conte com o fórum.

Abraços e bons estudos!