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)