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