Dada a entrada de uma string com bytes que podem ser binários, octais ou hexadecimais, produz o equivalente ASCII da string.
A entrada será fornecida no seguinte formato, por exemplo:
501200100001147
que representa
0x50 0o120 0b01000011 0x47
que é equivalente (em ASCII) a
PPCG
Binário, octal e hexadecimal sempre serão fornecidos com 8, 3 e 2 dígitos, respectivamente.
Para os fins deste desafio, apenas ASCII imprimível deve ser suportado. Este é o intervalo, 32..126
inclusive. Portanto, é impossível haver ambiguidade. Observe que
Uma cadeia de caracteres representa binário se, e somente se, começa com ae
0
seu segundo caractere é a0
ou a1
. Todos os caracteres ASCII imprimíveis têm seu bit alto desativado em binário (ou seja, começam com a0
) e nenhum deles começa com00
ou01
em hexadecimal ou octal.Com o binário fora do caminho, observe que todos os caracteres ASCII imprimíveis começam com
2
-7
em hex e0
-1
em octal. Portanto, é possível distinguir inequivocamente entre hex e octal.
Você pode supor que a entrada hexadecimal seja fornecida como minúscula ou maiúscula, o que for mais conveniente.
O Regex torna a parte de análise do desafio semi-trivial. Não quero proibir o uso de regex diretamente, mas se você tiver uma solução que não seja regex por mais tempo que sua contraparte que usa regex, sinta-se à vontade para publicá-la juntamente com a resposta "real" de qualquer maneira, pois eu estaria interessado para ver também. :)
Como esse é o código-golfe , o código mais curto em bytes será vencedor.
Casos de teste:
In Out
-----------------------------------
501200100001147 | PPCG
5C01101111100 | \o@
313206306400110101 | 12345
2A200530402C | * + ,
0011111100111111 | ??
<empty string> | <empty string>
0[01]{7}
vez de0[01].{6}
.