Resulta que hay algunos extraterrestres distantes que saben inglés (y coincidentemente se han estandarizado en arquitecturas de computadora de 8 bits) . Sin embargo, nunca han oído hablar de ASCII, ni siquiera del orden alfabético.
Se cree que estos extraterrestres están recogiendo información de la Tierra. Sin embargo, lo están haciendo con equipos digitales que leen información sin sentido cuando no se envía ninguna transmisión ... por lo tanto, la señal debe estar contenida de manera que se destaque del ruido circundante.
Se ha creado un nuevo estándar, modelado a partir del uso del mensaje de Arecibo de una longitud de señal de semiprime:
Codificación semiótica universal para el intercambio de información (USCII)
(Ver: http://uscii.hostilefork.com )
En USCII, cada código se deriva de un mapa de bits que representa el carácter, que tiene un ancho y una altura de primer. Por ejemplo, esta representación 5x7 de una letra A:
01110
10001
10001
10001
11111
10001
10001
Eso produce 35 bits. Sin embargo, para que los mensajes de un solo carácter se destaquen del ruido y se vean coherentes, las cadenas están incrustadas en un formato contenedor que ayuda a reforzar los factores primos. El contenedor ha sido elegido para facilitar también la manipulación de las cadenas en arquitecturas que operan en múltiplos de 8 bits.
Con su contenedor, la "A" anterior se vería así:
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
0111010001100011000111111100011000100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111111111
1111111111111111111111111111111111111111
1111111111111111111111111111111111111111
1111111111111111111111111111111111111111
1111111111111111111111111111111111111111
Los caracteres del mensaje tienen como prefijo cinco mapas de bits sólidos de 5x7 y siete mapas de bits sólidos de 5x7 agregados al final. (El "medidor" .) Luego, cada uno de estos tiene cinco 0 bits pegados en el extremo para formar incluso 40 bits.
Finalmente, hay 7 carreras de 40 bits todo cero agregadas al principio, y 5 carreras de 40 bits todo en uno agregadas al final. (El "silencio" .)
Tu misión
Debes escribir un codificador. La entrada es una cadena ASCII convencional escrita desde el teclado. Los mapas de bits que usará son de la fuente de CPU PIC 5x7 .
(Nota: es bastante fácil extraer la fuente de la página para todos los golfistas con código talentosos aquí, pero si quieres esos bytes todos juntos aquí están ).
La salida debe ser una cadena impresa en hexadecimal.
Ejemplos
Entrada :
ABCDEFG
Salida :
0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE074631FC620F463E8C7C074610845C0E4A318CB80FC21E843E0FC21E84200746178C5E0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Entrada :
Dear aliens: Please get me off of this planet!!!
Salida :
0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0E4A318CB80001D1FC1E0001C17C5E0002D9842000000000000001C17C5E061084211C00100421080001D1FC1E0002D98C620001F0707C003180630000000000000F463E8420061084211C0001D1FC1E0001C17C5E0001F0707C0001D1FC1E00000000000001F1787C0001D1FC1E0213E421440000000000000375AD620001D1FC1E00000000000001D18C5C01148E210801148E210800000000000001D18C5C01148E210800000000000213E4214408421E8C6200100421080001F0707C00000000000003D1F420061084211C0001C17C5E0002D98C620001D1FC1E0213E421440210840008021084000802108400080FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Aclaraciones
- No hay necesidad de manejar caracteres no imprimibles para esta tarea (aunque los comentarios sobre ideas sobre cómo podrían verse son bienvenidos)
Condiciones ganadoras
0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE074610845C0001D18C5C00842F8C5E0001D1FC1E00000000000746178C5E0001D18C5C061084211C01148E21080210840008021084000802108400080FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Respuestas:
Python 2,
671669663 bytesPHP con zlib,
738716715 bytesPrimero, su PHP necesita ser configurado con
--with-zlib
. Y ejecute este script desde la línea de comandos, comophp 26972.php
. Este programa recibe información de STDIN.(Si
short_open_tag=On
, puedo guardar 3 bytes más).Sin golf
fuente
C
En realidad, esto imprime hexadecimal legible por humanos (vs binario para legibilidad). Todo está representado en un largo largo sin signo y solo se usan 9-10 dígitos hexadecimales (dependiendo de si incluye el relleno 00000) el desafortunado formato 6x5 (una fuente 8x4 hubiera sido demasiado fácil)
golpetazo
fuente
0x##number##ULL
(vea la versión bash para la alternativa char), pero ideone.com pensó que era una llamada de función, así que lo rechacé (gcc estaba bien) ... También podría eliminar el (vacío) de main, pero algunas cosas parecen estar mal.PHP, 874 bytes
Deberá ejecutar este script desde la línea de comando (
php uscii.php
) porque toma la entrada de stdin.Sin golf:
fuente
JavaScript ES6 (838 bytes)
No aplastado :
fuente