Dada una entrada de una cadena con bytes que puede estar en binario, octal o hexadecimal, genera el equivalente ASCII de la cadena.
La entrada se proporcionará en el siguiente formato, por ejemplo:
501200100001147
que representa
0x50 0o120 0b01000011 0x47
que es equivalente (en ASCII) a
PPCG
Binario, octal y hexadecimal siempre se proporcionarán con 8, 3 y 2 dígitos respectivamente.
Para los propósitos de este desafío, solo se debe admitir ASCII imprimible. Esta es la gama 32..126inclusive. Por lo tanto, es imposible que haya ambigüedad. Tenga en cuenta que
Una cadena representa binario si y solo si comienza con ay
0su segundo carácter es a0o a1. Todos los caracteres ASCII imprimibles tienen su bit alto desactivado en binario (es decir, comienzan con a0), y ninguno de ellos comienza con00o01en hexadecimal u octal.Con el binario fuera del camino, tenga en cuenta que todos los caracteres ASCII imprimibles comienzan con
2-7en hexadecimal y0-1en octal. Por lo tanto, es posible distinguir inequívocamente entre hex y octal también.
Puede suponer que la entrada hexadecimal se proporciona en minúsculas o mayúsculas, lo que sea más conveniente.
Regex hace que la parte de análisis del desafío sea semi-trivial. No quiero prohibir el uso de regex directamente, pero si tiene una solución que no sea regex por más tiempo que su contraparte que usa regex, no dude en publicarla junto con la respuesta "real" de todos modos, ya que estaría interesado para verlo también :)
Como se trata de código golf , el código más corto en bytes ganará.
Casos de prueba:
In Out
-----------------------------------
501200100001147 | PPCG
5C01101111100 | \o@
313206306400110101 | 12345
2A200530402C | * + ,
0011111100111111 | ??
<empty string> | <empty string>
fuente

0[01]{7}lugar de0[01].{6}.ES6,
8680 bytesSolución basada en expresiones regulares:
Solución recursiva no regex para 95 bytes:
fuente
Python 3, 165 bytes
Sin expresiones regulares
fuente