Il s'avère qu'il y a des extraterrestres éloignés qui connaissent l'anglais (et qui ont par hasard normalisé sur des architectures informatiques 8 bits) . Pourtant, ils n'ont jamais entendu parler de l'ASCII, ni même de l'ordre alphabétique.
On pense que ces extraterrestres récupèrent des informations sur la Terre. Pourtant, ils le font avec un équipement numérique qui lit des informations sans signification lorsqu'aucune transmission n'est envoyée ... ainsi le signal doit être contenu de manière à se démarquer du bruit environnant.
Un nouveau standard a été créé, calqué sur l'utilisation par Arecibo Message d'une longueur de signal semi-prime:
Codage sémiotique universel pour l'échange d'informations (USCII)
(Voir: http://uscii.hostilefork.com )
Dans USCII, chaque code est dérivé d'un bitmap représentant le caractère, qui a une largeur et une hauteur prime. Par exemple, cette représentation 5x7 d'une lettre A:
01110
10001
10001
10001
11111
10001
10001
Cela produit 35 bits. Pourtant, afin de faire ressortir même les messages à un seul caractère du bruit et les rendre cohérents, les chaînes sont intégrées dans un format de conteneur qui aide à renforcer les facteurs premiers. Le conteneur a été choisi pour faciliter également la manipulation des chaînes sur les architectures qui fonctionnent sur des multiples de 8 bits.
Avec son conteneur, le "A" ci-dessus ressemblerait à:
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
Les caractères du message sont d'abord préfixés avec cinq bitmaps solides 5x7 et sept bitmaps solides 5x7 ajoutés à la fin. (Le "mètre" .) Ensuite, chacun de ceux-ci a cinq 0 bits cloués sur l'extrémité pour faire un même 40 bits.
Enfin, il y a 7 exécutions tout-zéro de 40 bits ajoutées au début et 5 exécutions tout-en-un de 40 bits ajoutées à la fin. (Le "silence" .)
Votre mission
Vous devez écrire un encodeur. L'entrée est une chaîne ASCII classique tapée à partir du clavier. Les bitmaps que vous utiliserez proviennent de la police CPU 5x7 PIC .
(Remarque: il est assez facile d'extraire la police de la page pour tous les golfeurs de code talentueux ici, mais si vous voulez que tous ces octets soient réunis, les voici .)
La sortie doit être une chaîne imprimée en hexadécimal.
Exemples
Entrée :
ABCDEFG
Sortie :
0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE074631FC620F463E8C7C074610845C0E4A318CB80FC21E843E0FC21E84200746178C5E0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Entrée :
Dear aliens: Please get me off of this planet!!!
Sortie :
0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0E4A318CB80001D1FC1E0001C17C5E0002D9842000000000000001C17C5E061084211C00100421080001D1FC1E0002D98C620001F0707C003180630000000000000F463E8420061084211C0001D1FC1E0001C17C5E0001F0707C0001D1FC1E00000000000001F1787C0001D1FC1E0213E421440000000000000375AD620001D1FC1E00000000000001D18C5C01148E210801148E210800000000000001D18C5C01148E210800000000000213E4214408421E8C6200100421080001F0707C00000000000003D1F420061084211C0001C17C5E0002D98C620001D1FC1E0213E421440210840008021084000802108400080FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Clarifications
- Il n'est pas nécessaire de gérer les caractères non imprimables pour cette tâche (bien que les commentaires sur les idées à quoi ils pourraient ressembler soient les bienvenus)
Conditions gagnantes
0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE074610845C0001D18C5C00842F8C5E0001D1FC1E00000000000746178C5E0001D18C5C061084211C01148E21080210840008021084000802108400080FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF