Preparando la escena:
Es una tarde promedio, ya que te relajas después de un largo día participando en tu pasatiempo favorito: respondiendo a la gran cantidad de preguntas cautivadoras sobre PPCG. No ha sido un buen día para ti; esos malditos programadores de Pyth siguen obteniendo la mejor respuesta y está matando tu ambiente. De repente, te das cuenta de que se ha publicado una nueva pregunta. Te decides; esta vez no CJammers. Furiosamente, comienzas a escribir, generando una corriente de personajes; Un feto del glorioso bucle BrainFuck que será su producto final. Escribes y escribes. ¡Más rápido! ¡Más rápido todavía! Estás tan concentrado que ni siquiera notas que las luces de tu pantalla comienzan a parpadear. De repente, el monitor se ilumina en verde, un símbolo extraterrestre marcado en el escritorio. Usando tus habilidades impecablescat ~/Desktop/aliensymbol
y que te presenten un montón de números, un mensaje! Siendo el astuto programador de PPCG que eres, te das cuenta de que se parece a ASCII. No importa para ti, print(chr(i) for i in file)
descifra el mensaje. Tu primer pensamiento: "¡Necesito compartir esto con la comunidad!".
...
¿Quién lo hubiera pensado? Que las primeras personas en contactar con extraterrestres serían los humildes programadores de PPCG. ¿Porque nosotros? Tal vez sea porque somos el epítome de la inteligencia humana. O tal vez porque BrainFuck está tan cerca como tenemos de un idioma extraño. Sin embargo, los extraterrestres, siendo las formas de vida ultrainteligentes que son, quieren probar si deben clasificar a la raza humana como inteligente o no. Como prueba de nuestra destreza mental, los extraterrestres nos han pedido que les enviemos algunos programas de computadora para demostrar que estamos tecnológicamente cultos. ¡El problema es que el único lenguaje humano que entienden es ASCII numérico!
Ayuda a la humanidad a mostrarles a esas criaturas quién es el verdadero alfa intelectual. Necesitamos enviarles un script que convierta nuestros códigos fuente basados en texto en sus versiones ASCII numéricas. Desafortunadamente, debido a nuestra tecnología subdesarrollada (gracias Obama), debemos enviar un programa de traducción lo más pequeño posible. ¡Qué bueno que eligieron contactar a PPCG!
El reto:
La premisa de este desafío es simple: debe escribir un programa que tomará el código fuente de cualquier programa (o cualquier archivo de texto general) y generará una versión separada por espacios con una traducción ASCII debajo de cada línea. Es decir, dada la entrada de un archivo de texto, debe generar cada línea de ese archivo seguida de una línea que contenga la representación ASCII de cada carácter en la línea superior (con cada número alineado con el carácter que representa).
Un ejemplo aclarará mucho esto. Tomando el código fuente de los infames hello world
como entrada:
#include <stdio.h>
int main() {
printf("hello, world\n");
return 0;
}
su programa debería generar:
# i n c l u d e < s t d i o . h >
35 105 110 99 108 117 100 101 32 60 115 116 100 105 111 46 104 62 10
10
i n t m a i n ( ) {
105 110 116 32 109 97 105 110 40 41 32 123 10
p r i n t f ( " h e l l o , w o r l d \ n " ) ;
32 32 32 32 112 114 105 110 116 102 40 34 104 101 108 108 111 44 32 119 111 114 108 100 92 110 34 41 59 10
r e t u r n 0 ;
32 32 32 32 114 101 116 117 114 110 32 48 59 10
}
125 10
Detalles de implementacion:
Puede optar por tomar la entrada en la forma que desee (abrir archivo, línea de comando, parámetro de función, etc.) y debe enviar a stdout o devolver la salida de una función.
Cosas a tener en cuenta
- Cada carácter en la salida está separado por un '\ t' para permitir el espacio de 3 dígitos en la línea de abajo para alinear (vamos a suponer que su pestaña está configurada en 4 espacios o más).
- Las nuevas líneas se muestran en la línea donde se presionó la tecla de retorno (observe los 10 en el ejemplo)
- Los requisitos de impresión '\ t' y '\ n' son laxos. Su salida debe, en el sentido general, verse agradable a la vista (necesita mostrar a esos extraterrestres que también tenemos un sentido estético), y si puede doblar los dos puntos anteriores mientras mantiene la integridad visual, será perdonado.
- Puede optar por suponer si hay una nueva línea al final de la última línea.
Tanteo
Este es el código de golf, por lo que gana el programa más corto. Tenga en cuenta que, incluso si su programa no es el más corto, pero usa trucos realmente buenos en relación con el idioma que está utilizando, ¡muchos + 1 para usted!
Buena suerte. La clasificación de inteligencia intergaláctica de la humanidad descansa sobre tus hombros.
Nota: Por favor, perdona los agujeros de la trama. No soy escritor : D