Jogo da senha
Em sistemas de autenticação ou jogos de adivinhação, comparar posições exatas versus dígitos corretos mas em posições erradas é uma tarefa comum. Por exemplo, ao implementar um sistema de login com dicas, você precisa informar quantos caracteres estão corretos e quantos estão apenas presentes. Dominar essa lógica com laços while e análise posicional de strings é essencial para resolver problemas de validação sem usar funções prontas.
O PROBLEMA
Gere senha de 4 dígitos aleatória. Declare array de tentativas. Use while para verificar cada tentativa.
EXEMPLO
senha="4821" tentativa="1234" → 1 certo, 2 no lugar errado tentativa="4821" → Acertou!
SOBRE O CONCEITO
O conceito principal é usar um laço while para iterar sobre cada caractere da tentativa e compará-lo com a senha. Você precisa de dois contadores: um para dígitos na posição certa e outro para dígitos existentes mas em posição errada. O erro comum é não verificar se o dígito já foi contado como posição certa, o que pode duplicar a contagem. Por exemplo, senha '4821' e tentativa '1234': o '2' está na posição 1 (índice 1) da senha? Não, está na posição 1 da tentativa, mas na senha está na posição 2. Então '2' conta como dígito existente. Já o '1' está na posição 3 da tentativa e na posição 3 da senha? Não, senha tem '1' na posição 3? Na verdade, senha '4821' tem '1' no índice 3, então se tentativa tiver '1' no índice 3, é posição certa. No exemplo, tentativa '1234' tem '1' no índice 0, então não é posição certa, mas '1' existe na senha, logo é dígito existente. Para implementar, use um while que percorre cada índice, compara tentativa[i] com senha[i] para posição certa, e, se não for, verifica se tentativa[i] está em senha usando includes e um controle para não contar o mesmo dígito mais de uma vez (por exemplo, removendo ou marcando). Evite usar filter ou funções, pois são proibidos.
RESOLUÇÃO