Mise en scène:
C'est un après-midi moyen, alors que vous vous détendez après une longue journée en vous adonnant à votre passe-temps favori: répondre à la pléthore de questions captivantes sur PPCG. Ce n’a pas été une bonne journée pour vous; ces maudits programmeurs Pyth continuent d'obtenir la meilleure réponse et cela tue votre ambiance. Soudain, vous remarquez qu'une nouvelle question a été publiée! Vous décidez; pas cette fois CJammers. Furieusement, vous commencez à taper, donnant naissance à un flot de personnages; un fœtus de la magnifique boucle BrainFuck que sera votre produit final. Vous tapez et tapez. Plus rapide! Toujours plus vite! Vous êtes tellement concentré que vous ne remarquez même pas que les lumières sur votre écran commencent à clignoter. Soudain, le moniteur devient vert, un symbole semblable à un extraterrestre marqué sur le bureau. En utilisant vos compétences impeccables, vouscat ~/Desktop/aliensymbol
et recevez un tas de chiffres, un message! Étant le programmeur PPCG astucieux que vous êtes, vous remarquez qu'il ressemble à ASCII. Peu importe pour vous, vous print(chr(i) for i in file)
et déchiffrez le message. Votre première pensée: "J'ai besoin de partager cela avec la communauté!".
...
Qui l'aurait pensé? Que les premières personnes à entrer en contact avec des extraterrestres seraient les humbles programmeurs de PPCG. Pourquoi nous? C'est peut-être parce que nous sommes l'incarnation de l'intelligence humaine. Ou peut-être parce que BrainFuck est aussi proche que possible d'une langue étrangère. Néanmoins, les extraterrestres - étant les formes de vie ultra-intelligentes qu'ils sont - veulent tester s'ils doivent classer la race humaine comme intelligente ou non. Pour tester nos prouesses mentales, les extraterrestres nous ont demandé de leur envoyer quelques programmes informatiques pour démontrer que nous sommes cultivés sur le plan technologique. Le problème est que le seul langage humain qu'ils comprennent est l'ASCII numérique!
Aidez l'humanité à montrer à ces créatures qui est le véritable alpha intellectuel. Nous devons leur envoyer un script qui convertira nos codes sources basés sur du texte en leurs versions ASCII numériques. Malheureusement, en raison de notre technologie sous-développée (merci Obama), nous devons envoyer un programme de traduction aussi petit que possible. Heureusement qu'ils ont choisi de contacter PPCG!
Le défi:
La prémisse de ce défi est simple: vous devez écrire un programme qui prendra le code source de tout programme (ou tout fichier texte général d'ailleurs), et en sortir une version séparée par des espaces avec une traduction ASCII sous chaque ligne. C'est-à-dire, étant donné l'entrée d'un fichier texte, vous devez sortir chaque ligne de ce fichier suivie d'une ligne contenant la représentation ASCII de chaque caractère dans la ligne au-dessus (chaque numéro étant aligné avec le caractère qu'il représente).
Un exemple clarifiera grandement cela. Prendre le code source de l'infâme hello world
comme entrée:
#include <stdio.h>
int main() {
printf("hello, world\n");
return 0;
}
votre programme devrait produire:
# 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
Détails d'implémentation:
Vous pouvez choisir de prendre l'entrée sous la forme que vous souhaitez (fichier d'ouverture, ligne de commande, paramètre de fonction, etc.) et vous devez sortir sur stdout ou renvoyer la sortie d'une fonction.
À noter
- Chaque caractère dans la sortie est séparé par un '\ t' pour permettre l'espace de 3 chiffres dans la ligne ci-dessous pour s'aligner (nous allons supposer que votre tabulation est définie sur 4 espaces ou plus).
- Les nouvelles lignes s'affichent sur la ligne sur laquelle la touche retour a été enfoncée (remarquez les 10 dans l'exemple)
- Les exigences d'impression «\ t» et «\ n» sont laxistes. Votre sortie doit, dans le sens général, avoir l'air agréable à l'œil (nous devons également montrer aux extraterrestres que nous avons un sens esthétique), et si vous pouvez plier les deux points précédents tout en maintenant l'intégrité visuelle, vous serez pardonné.
- Vous pouvez choisir de supposer s'il existe ou non une nouvelle ligne à la fin de la dernière ligne.
Notation
C'est le golf de code, donc le programme le plus court gagne. Notez que même si votre programme n'est pas le plus court, mais utilise des astuces vraiment soignées par rapport à la langue que vous utilisez, beaucoup de +1 pour vous!
Bonne chance. Le classement de l'intelligence intergalactique de l'humanité repose sur vos épaules.
Remarque: veuillez pardonner les trous de l'intrigue. Je ne suis pas écrivain : D