Este es un desafío de código de golf. Tal como dice el título, escriba un programa para convertir una cadena de caracteres ascii en binario.
Por ejemplo:
"Hello World!"
debe convertirse en
1001000 1100101 1101100 1101100 1101111 100000 1010111 1101111 1110010 1101100 1100100 100001.
Nota: Estoy particularmente interesado en una implementación de Pyth.
code-golf
string
binary
conversion
ericmarkmartin
fuente
fuente

Respuestas:
CJam, 8 bytes
Pan comido:
Pruébalo aquí
fuente
Python 3, 41 bytes
Me gusta la respuesta de KSFT , pero pensé en señalar que, además de
raw_input -> input, Python 3 también tiene una ventaja aquí debido al splat paraprint.fuente
Pyth, 10 bytes
Mapeo y explicación de Python:
La entrada es la cadena que debe convertirse sin las comillas.
Pruébalo aquí
fuente
Psum(d).append(Pfilter(lambda T:gte(head(join(Plen(k),Plen()))))), donde d = '' yk = ''. Entonces no, no es válido en absoluto.Python 3 - 43 bytes
No es el más corto, sino un enfoque interesante de la OMI. Tiene la ventaja adicional de que si el número de bits significativos varía, EG
Hi!, el relleno con ceros es trivial (2 bytes más, en lugar de 9 para.zfill(8)):fuente
Python - 52
Trabajaré en traducir esto a Pyth.Alguien más ya respondió Pyth.Si no le importa que sea un programa completo o sobre el formato de E / S y use Python 3, puede hacerlo en 23 bytes de esta manera:
xes la entradaSé que esto no cuenta porque el intérprete no fue lanzado antes de que se publicara el desafío, pero aquí está en KSFTgolf:
fuente
Ruby,
342824 bytesToma entrada a través de STDIN. 6 bytes guardados gracias por AShelly y otros 4 gracias a britishtea.
fuente
$<.each_byte{|c|$><<"%b "%c}String#byteslugar deString#each_byte. La forma de bloque está en desuso, pero aún funciona :)PowerShell,
635946 bytes-13 bytes gracias a @mazzy
Pruébalo en línea!
fuente
Matlab
Esta es una función anónima
uso es
f('Hello World').Alternativamente, si
xse define como la cadenaHello World!en el espacio de trabajo, entonces simplementedec2bin(char(x))funcionará.fuente
char? Creo que te refieresdec2bin(x)-'0'char(x)cuandoxya es una cadena, no hace nada. Para que pueda eliminarlo para ahorrar algo de espacio. Por otro lado, el resultado dedec2bines una cadena, y creo que la salida debería ser númerosJ - 9
No tengo idea de cómo hacer esto en una fila sin duplicar la longitud del código, necesito que J gurus me lo diga :)
fuente
".al principio. Evalúa su resultado para que esté en una línea y separado por espacios. Incluso más corta es la creación de Base10 números con los dígitos Base2:10#.#:3&u:.Java: 148 bytes
Editado para incluir el archivo completo
fuente
for(char c:a[0].toCharArray()){o inclusofor(byte b:a[0].getBytes()){dado que la entrada es ascii, suponiendo una configuración regional de máquina no utf-16publicy acortar el nombre del programa a un solo carácter para ganar más bytes. Además,(String[]a)el compilador lo acepta perfectamente, lo que le otorga otro byte.JavaScript ES6, 63
65bytesEsto es bastante largo, gracias a los nombres largos de funciones de JavaScript. El siguiente fragmento de pila es el equivalente aproximado de ES5, por lo que se puede ejecutar en cualquier navegador. Gracias a edc65 por las mejoras en el golf.
fuente
[for of]es un poco más corto que[...].mapenumerar caracteres en cadenas:alert([for(c of prompt())c.charCodeAt().toString(2)].join(' ')).join(' ')con.join` `. Puedes jugar muchos bytes usando una función en lugar deprompt/alertScala -
59-55bytesNormalmente, uno debe usar foreach y no el mapa.
fuente
Código de máquina 8088, IBM PC DOS,
3331 bytes *Listado:
Archivo COM ejecutable completo de PC DOS, la entrada es a través de la línea de comando.
Con ceros a la izquierda:
Descargue y pruebe ASCBIN.COM .
O 39 bytes sin ceros a la izquierda:
Descargue y pruebe ASCBIN2.COM .
* Como no estaba explícitamente claro para mí si los ceros iniciales están permitidos o no, estoy publicando versiones en ambos sentidos.
fuente
MITS Altair 8800 , 0 bytes
La cadena de entrada está en la dirección de memoria
#0000H( permitida ). Salida en binario a través de luces de E / S del panel frontalD7-D0.Ejemplo, haz
RESET, luegoEXAMINEpara ver el primer byte, seguido de repetirEXAMINE NEXTpara ver el resto."H" = 01 001 000:"e" = 01 100 101:"l" = 01 101 100:Pruébalo en línea!
No competidora, por supuesto. :)
fuente
Haskell, 65
uso intensivo de la lista mónada. no se pudo convertir en comprensiones de listas porque las últimas declaraciones no eran a
return.fuente
C ++ - 119 bytes
¿Liberando memoria? ¿Que es eso?
(MSVC compila el código con advertencia)
fuente
main(int c,char**v){char x[9];for(;c=*(v[1]++);printf("%s ",itoa(c,x,2)));}Jalea , 3 bytes
Pruébalo en línea!
fuente
Tcl , 52 bytes
Pruébalo en línea!
fuente
binary scan [join $argv] B* b;puts [regsub -all .{8} $b {& }]APL (Dyalog) , 12 bytes
Pruébalo en línea!
Gracias a Adám por la ayuda con esta solución.
fuente
Python 3.6 , 39 bytes
Pruébalo en línea!
fuente
Commodore VIC-20 / C64 / 128 y TheC64Mini, 101 bytes BASIC tokenizados
Aquí está la lista ofuscada usando las abreviaturas de palabras clave Commodore BASIC:
Aquí, para fines de explicación, está el listado simbólico no ofuscado:
La función
fn bdeclarada en la línea cero acepta un parámetro numéricoxque seANDedita con el valor deb; SGN se utiliza para convertirx and ba1o0.La línea uno acepta una entrada de cadena a la variable
a$, y el ciclo comienza (indicado coni) a la longitud de esa entrada.brepresenta cada bit del sexto al 0º bit.c$toma cada carácter de la cadena en su posicióni.la línea 5 inicia el bucle para probar cada posición de bit;
right$se utiliza en la línea 6 para eliminar un problema de formateo automático cuando Commodore BASIC muestra un número y convierte la salida defn ba una cadena;asc(c$)convierte el carácter actual a su código ASCII como un valor decimal.La línea 7 representa el siguiente valor de bit. El ciclo
jfinaliza antes de imprimir un espacio, luegoifinaliza el último ciclo .fuente
JavaScript ES6, 71 bytes
fuente
.split('')dividir en la cadena vacía;.split()se convierte"abc"en["abc"].Adelante (gforth) , 45 bytes
Pruébalo en línea!
Explicación del código
fuente
Rubí, 24 bytes.
Tenía la esperanza de vencer a Martin Ender , pero solo logré atarlo.
Toma entrada en STDIN; +1 bytes para la
-pbandera.Pruébalo en línea!
fuente
Gaia , 4 bytes
Bastante feliz con esto
Cómo funciona
Pruébalo en línea!
fuente
Python 3 , 39 bytes
Pruébalo en línea!
Ligera mejora con respecto a la respuesta actual de Python
fuente
STATA 158
Usé un enfoque diferente al de la mayoría. Lea a través del indicador display _request () (abreviado a di _r (r)). Escriba la cadena en un archivo llamado b en modo texto. Abra b en modo binario y lea cada carácter como un byte y conviértalo a binario. Técnicamente, el archivo b debe cerrarse al final, pero es un programa válido y se ejecuta con éxito sin él.
fuente
Golang - 68
Soy nuevo en Go y tampoco estoy seguro de las reglas para contar caracteres en este idioma aquí.
Importaciones (11 bytes):
Función (55 bytes):
Puedes ejecutarlo aquí .
fuente
C # nunca ganará este tipo de preguntas, pero aquí hay una prueba, completamente sin codificación. :)
C # - 84
fuente
x=>String.Join(" ",x.Select(y=>Convert.ToString(y,2)));Sin embargo, tenga en cuenta que, debido al uso.Select(), tanto esta respuesta más corta como su respuesta original, deben incluir los 18 bytes, ausing System.Linq;menos que especifique que está usando el compilador interactivo de Visual C # , que importa System.Linq por defectoCobra - 64
Como una lambda:
fuente