0
respostas

[Projeto] Tá dificil entrar, tá dificil entrar, cava uma falta, cava uma falta que é gol!

const presenca = [1,1,1,0,0,0,1,1];

let graficoEmCaixa = [];
let grafico = [];
let linhaTotal = [];
let linha = [];
let maior = 0;
let menor = 0;
let espaço = [];
let graficoTexto = '';

function converterNumeros(p) {
    
    p.map((v, i) => {
        if (v === 1) {
            graficoEmCaixa.push('/');
        }
        if (v === 0 && p[i+1] === 0) {
            graficoEmCaixa.push('\\');
        } else if (v === 0 && p[i-1] === 0){
            graficoEmCaixa.push('\\');
        }
        if (v === 0 && p[i-1] !== 0 && p[i+1] !== 0) {
            graficoEmCaixa.push('_');
        }   
    });
}

function contadorDeLinha(gc) {
    
    gc.map((v, i) => {
        if (v === '/') {
            if (gc[i+1] === '\\') {
                linha.push(0);
            } else if (gc[i+1] === '_' || gc[i+1] === '/') {
                linha.push(1);
            }
        }
        if (v === '\\') {
            if (gc[i+1] === '/') {
                linha.push(0);
            } else if (gc[i+1] === '\\') {
                linha.push(-1);
            }
        }
        if (v === '_') {
            if (gc[i+1] === '/') {
                linha.push(0);
            }
        }
    });
    
    linhaTotal.push(linha[0]);
    linhaTotal.push(linhaTotal[0] + linha[1]);
    
    for (i = 2; i < linha.length; i++) {
        if (linha[i] === 1) {
            linhaTotal.push((linhaTotal[i-1] +1));
        }
        if (linha[i] === -1) {
            linhaTotal.push((linhaTotal[i-1] -1));
        }
        if (linha[i] === 0) {
            linhaTotal.push(linhaTotal[i-1]);
        }
    }
    maior = Math.max(...linhaTotal);
    menor = Math.min(...linhaTotal);
}
let j = 0;

function calculaEspaço(lt) {
    
    lt.map((v, i) => {
        if (v === maior) {
            espaço.push(i+1);
        }
    });
    //console.log({ espaço });
    return espaço;
}

function exibirGrafico(lt) {
    
    for (i = 0; lt.length +1 > i; i++) {

        if (graficoTexto === '') {
            graficoTexto += '\n';
        }
        if (espaço[j] !== i) {
            graficoTexto += ' ';
        } else {
            graficoTexto += graficoEmCaixa[espaço[j]];
            j++;
        }
        if ( i +2 > lt.length +1) {
            graficoTexto += '\n';
            maior -= 1;
            espaço = [];
            j = 0;
            i = - 1;
            let valorDaFuncao = calculaEspaço(linhaTotal);
            espaço = valorDaFuncao;
        }
        if (maior < menor) {
            console.log(graficoTexto);
            break;
        }
    }
}

if (presenca.length > 3) {
converterNumeros(presenca);
contadorDeLinha(graficoEmCaixa);
calculaEspaço(linhaTotal);
exibirGrafico(linhaTotal);
} else {
    console.error('\x1b[33mPara exibir o gráfico de presença é nescesário\nter no mínimo 4 presenças/faltas!\x1b[0m');
}

console.log({ graficoEmCaixa });
//console.log({ linhaTotal });
//console.log({ espaço });
//console.log(graficoEmCaixa[espaço]);

Oi
Eu fiz esse projeto para praticar lógica de programação!
eu tentei várias vezes, umas 4 tentativa para chegar nesse resultado!
foram projetos totalmente diferente desse!
esse foi o maior código que eu fiz até hoje! e o primeiro!
estou satisfeito mas sei que dá pra melhorar muito! não duvido nada
alguém fazer isso com metade das linhas que eu fiz!
ainda não está pronto! tem uns bugs que eu tentei resolver mas não consegui! mesmo usando IA!
e eu usei IA só no final do código para algumas coisas! e tbm usei para
pesquisar soluções melhores! tipo aquele Math.max!

O projeto consiste em fazer um gráfico de presença no console!

1 = presente = '/'
0 = faltou uma vez = '_'
e dois zeros consecutivos (0,0) = faltou mais de uma vez =' '

Alguém consegue arrumar os bugs!
e dar sugestões de melhoria ou de próximos projetos pra mim fazer!
eu agradeço!

Agora eu vou tomar um cafézinho! Tchau!