Organizzare la scena:
È un pomeriggio medio, mentre ti rilassi dopo una lunga giornata impegnandoti nel tuo passatempo preferito: rispondere alla pletora di domande accattivanti su PPCG. Non è stata una buona giornata per te; quei dannati programmatori Pyth continuano a ricevere la risposta migliore e stanno uccidendo la tua atmosfera. Improvvisamente, si nota che è stata pubblicata una nuova domanda! Decidi tu; non questa volta CJammers. Furiosamente, inizi a scrivere, dando vita a un flusso di personaggi; un feto del glorioso loop BrainFuck che sarà il tuo prodotto finale. Digiti e digiti. Più veloce! Ancora più veloce! Sei così concentrato che non ti accorgi nemmeno che le luci sullo schermo iniziano a lampeggiare. All'improvviso, il monitor si illumina di verde, un simbolo simile ad un alieno marchiato sul desktop. Usando le tue abilità impeccabili tucat ~/Desktop/aliensymbole vieni presentato con un mucchio di numeri, un messaggio! Essendo il programmatore PPCG accorto che sei, noti che sembra ASCII. Non importa per te, tu print(chr(i) for i in file)e decifrare il messaggio. Il tuo primo pensiero: "Devo condividere questo con la comunità!".
...
Chi l'avrebbe mai pensato? Che le prime persone a contattare gli alieni sarebbero gli umili programmatori di PPCG. Perché noi? Forse è perché siamo l'epitome dell'intelligenza umana. O forse perché BrainFuck è più vicino che dobbiamo a una lingua aliena. Tuttavia, gli alieni - essendo le forme di vita ultra-intelligenti che sono - vogliono verificare se dovrebbero classificare la razza umana come intelligente o no. Come prova della nostra abilità mentale, gli alieni ci hanno chiesto di inviare loro alcuni programmi per computer per dimostrare che siamo tecnologicamente colti. Il problema è che l'unico linguaggio umano che comprendono è ASCII numerico!
Aiuta l'umanità a mostrare a quelle creature chi è il vero alfa intellettuale. Dobbiamo inviare loro uno script che convertirà i nostri codici sorgente basati su testo nelle loro versioni numeriche ASCII. Sfortunatamente, a causa della nostra tecnologia sottosviluppata (grazie Obama), dobbiamo inviare il più piccolo programma di traduzione possibile. Per fortuna hanno scelto di contattare PPCG!
La sfida:
La premessa di questa sfida è semplice: devi scrivere un programma che prenderà il codice sorgente di qualsiasi programma (o qualsiasi file di testo generale per quella materia), e ne produrrà una versione separata da spazio con una traduzione ASCII sotto ogni riga. Cioè, dato un input di un file di testo, è necessario emettere ciascuna riga di quel file seguita da una riga contenente la rappresentazione ASCII di ciascun carattere nella riga sopra di esso (con ogni numero in fila con il carattere che rappresenta).
Un esempio chiarirà molto questo. Prendendo il codice sorgente del famigerato hello worldcome input:
#include <stdio.h>
int main() {
printf("hello, world\n");
return 0;
}
il tuo programma dovrebbe produrre:
# 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
Dettagli di implementazione:
Puoi scegliere di prendere l'input in qualunque forma tu voglia (apertura del file, pipe della riga di comando, parametro della funzione ecc.) E dovresti emettere in stdout o restituire l'output di una funzione.
Cose da notare
- Ogni carattere nell'output è separato da un '\ t' per consentire lo spazio di 3 cifre nella riga sottostante per allinearsi (supponiamo che la tua scheda sia impostata su 4 o più spazi).
- Le nuove righe vengono visualizzate sulla riga in cui è stato premuto il tasto Invio (notare i 10 nell'esempio)
- I requisiti di stampa '\ t' e '\ n' sono lassisti. La tua produzione deve, in senso generale, apparire piacevole alla vista (è necessario mostrare anche a quegli alieni che abbiamo un senso estetico), e se puoi piegare i due punti precedenti mantenendo l'integrità visiva, verrai perdonato.
- Puoi scegliere di assumere se c'è una nuova riga alla fine dell'ultima riga.
punteggio
Questo è code-golf, quindi il programma più corto vince. Nota, anche se il tuo programma non è il più breve, ma utilizza trucchi davvero accurati rispetto alla lingua che stai utilizzando, molti +1 per te!
In bocca al lupo. La classifica dell'intelligenza intergalattica dell'umanità riposa sulle tue spalle.
Nota: per favore perdona i buchi della trama. Non sono uno scrittore : D