Convierta un número hexadecimal (de cualquier tamaño) en un número binario.
Ingrese
un número hexadecimal POSITIVO con un 0x
al principio. Una entrada válida siempre coincidirá con la siguiente expresión regular: 0x[0-9a-fA-F]+
. Si la entrada no es un número hexadecimal válido, es decir, cualquier cosa que no coincida con esta expresión regular, la salida debería serlo 0
.
Salida
El hexadecimal convertido a binario.
Reglas originales ganadoras del código de golf, menor cantidad de bocados (bytes)
.
Ejemplos
IN: 0x12
OUT: 10010
IN: 0xFF
OUT: 11111111
IN: 0XFF
OUT: 0
IN: #0ac4
OUT: 0
IN: 0x00101011
OUT: 100000001000000010001
IN: 0x525600
OUT: 10100100101011000000000
IN: 0x58f70555118ec400
OUT: 101100011110111000001010101010100010001100011101100010000000000
IN: 0x6669795966AF3000
OUT: 110011001101001011110010101100101100110101011110011000000000000
IN: 0b018474
OUT: 0
IN: 9577383
OUT: 0
IN: -483355
OUT: 0
IN: -0xf9ad92
OUT: 0
code-golf
base-conversion
Hashim Kayani
fuente
fuente
#0ac4
Sigue siendo un caso de prueba válido?X
es mayúscula).00011010
Respuestas:
Pyth, 15 bytes
Explicación:
Banco de pruebas
Con una aclaración de reglas (que
0x
debe estar en minúsculas) en el OP, puede eliminarr0
13 bytes.fuente
Python 2,
67626059 bytesPruébalo en línea!
Versión que produce errores en una entrada no válida (27 bytes):
Pruébalo en línea!
fuente
05AB1E , 11 bytes
Pruébalo en línea!
Explicación
fuente
0XFF
.0x
por lo que diría que el caso de prueba específico está mal.Å?
o 10 bytes usando el legado .Lote, 402 bytes.
Toma entrada en STDIN. Las 8 líneas se desperdician principalmente en la validación de entrada, por lo que las líneas interesantes son la línea 11, que reemplaza cada dígito hexadecimal con su equivalente binario, pero debido a las limitaciones de Batch, con una
.
línea inicial, 12, que elimina todos los.
s, y la línea 14 , que elimina los ceros iniciales. Sin embargo, esto falla para entradas como,0x0
por lo tanto, "invalido" las que significa que 0 se emite en su lugar.fuente
PHP,
66 6563 bytescorrer como tubería con
-F
.Sin el
0x
, el problema más grave sería que tantohexdec
ybase_convert
simplemente ignorar caracteres que no son hexagonal; pero con esto, debe haber una verificación de validez explícita de todos modos45 bytes sin el
0x
:fuente
echo stristr($a=$argn,"0X")==$a?decbin(hexdec(ltrim($a,Xx0))):0;
¿Es esta una buena alternativa? Debería funcionar para los casos de prueba dadoshexdec
ebase_convert
).echo decbin(hexdec(preg_filter("#^0x([a-f\d]+$)#i","$1",$argn)));
<?=
lugar de laecho
opción -FJavaScript (ES6),
109108bytesFunciona para cualquier tamaño de entrada.
Casos de prueba
Mostrar fragmento de código
fuente
0x1fffffffffffff
- akaNumber.MAX_SAFE_INTEGER
- y devuelve resultados redondeados más allá de eso. Por suerte, los dos casos de prueba grandes se redondean correctamente.1
bit del resultado. Por cierto, ¿necesitas$
el primer regexp?$
. La idea es obtener el cero final si no hay1
nada en el resultado.REXX, 45 bytes
fuente
Retina , 149 bytes
(tenga en cuenta la nueva línea final)
Pruébalo en línea!
Aquí hay una solución alternativa al costo de 7 bytes: ¡ Pruébelo!
fuente
perl, 25
(código 24 + 1 bandera -n)
fuente
JavaScript (ES6),
116111 bytesNo limitado a 53 bits de precisión. Editar: ahorré 5 bytes al reescribir mi conversión de dígitos, lo que también reduce mis requisitos de idioma a ES6.
fuente
0x00101011
, lo siento.Código de máquina 8086 - 63 bytes
Funciona para cualquier entrada de hasta 125 caracteres (la longitud máxima de la línea de comando en DOS)
fuente
JavaScript (ES6),
535249505245 bytes(No compite ya que no maneja entradas de ningún tamaño; tuve suerte con las entradas de muestra)
fuente
CJam , 24 bytes
Pruébalo en línea!
Explicación
fuente
JavaScript (ES6), 107 caracteres
fuente
Perl 6 , 35 bytes
fuente
Javascript, 63 bytes
fuente