Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Acredito que tenha feito o código que o Lionel devia ter feito

Boa tarde. Fiquei curioso e tentei fazer o código como o Lionel deveria ter feito. Como a lógica de como o A2030 geraria GH1022 não é dita no problema, eu fiz uma lógica simples como se fosse a decodificação do código. Deixo aqui pra quem teve a mesma curiosidade que eu e quer saber como outro resolveu. Um problema que encontrei que não soube resolver foi que quando a letra colocada fosse muito a frente no alfabeto, ele não retorna nada, pois é uma posição do array que não possui elemento.

<script>
    function decode(letra, numeral1, numeral2) {

        //Definir um array com o alfabeto
        const alfabeto = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K",
            "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X",
            "Y", "Z"];
        //Achar a posição da letra que foi input
        var posicaoLetra = alfabeto.indexOf(letra);
        //E "decodifica-la"
        var decodeLetra1 = posicaoLetra + 6;
        var decodeLetra2 = posicaoLetra + 7;

        var letra1 = alfabeto[decodeLetra1];
        var letra2 = alfabeto[decodeLetra2];

        //Agora para os números
        var decodeNumero1 = Math.round(numeral1 / 2);
        var decodeNumero2 = Math.abs(numeral2 - 8); 
        //Math.abs converte um número inteiro em positivo

        return(letra1 + letra2 + decodeNumero1 + decodeNumero2);

    }

    document.write(decode("A", 20, 30))
    document.write("<br><br>")
    document.write(decode("G", 50, 66))
</script>

Na execução o codigo retorna: GH1022 (Como proposto no problema quando coloca A, 20, 30)

MN2558 (E outro teste)

1 resposta
solução!

Olá Hector, tudo bem? Espero que sim!

Fico feliz em ver que você está explorando a resolução do problema e compartilhando sua solução. Sua lógica parece esta correta, considerando a decodificação do código proposta.

No entanto, como você mencionou, há um problema quando a letra está muito à frente no alfabeto e não existe uma posição correspondente no array. Nesse caso, é possível tratar essa situação de diferentes maneiras, dependendo dos requisitos do problema ou da sua preferência.

Uma possível abordagem é fazer um tratamento para evitar que a posição da letra ultrapasse o tamanho do array do alfabeto. Isso pode ser feito usando o operador módulo (%), que retorna o resto da divisão. Por exemplo, se a posição calculada for maior ou igual ao tamanho do array, você pode usar o operador módulo para garantir que a posição esteja dentro do intervalo válido.

Aqui está um exemplo de como você poderia atualizar o trecho de código para lidar com essa situação:

var decodeLetra1 = (posicaoLetra + 6) % alfabeto.length;
var decodeLetra2 = (posicaoLetra + 7) % alfabeto.length;

Dessa forma, a posição da letra será reduzida ao intervalo válido do array do alfabeto, independentemente de quão à frente ela esteja.

Espero ter ajudado!

Caso tenha dúvidas, fico à disposição

Abraços e bons estudos!