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
Réponses:
Python 2,
671669663 octetsPHP avec zlib,
738716715 octetsTout d'abord, votre PHP doit être configuré avec
--with-zlib
. Et exécutez ce script à partir de la ligne de commande, commephp 26972.php
. Ce programme prend la contribution de STDIN.(Si
short_open_tag=On
, je peux économiser 3 octets de plus.)Non golfé
la source
C
Cela imprime en fait un hex lisible par l'homme (vs binaire pour la lisibilité). Tout est représenté en long non signé et seuls 9 à 10 chiffres hexadécimaux sont utilisés en raison (selon que vous incluez le remplissage 00000) du malheureux format 6x5 (une police 8x4 aurait été trop facile)
frapper
la source
0x##number##ULL
(voir la version bash pour l'alternative char), mais ideone.com pensait que c'était un appel de fonction, donc je l'ai corrigé (gcc allait bien) ... Je pourrais aussi supprimer le (vide) du principal, mais certaines choses semblent tout simplement erronées.PHP, 874 octets
Vous devrez exécuter ce script à partir de la ligne de commande (
php uscii.php
) car il prend les entrées de stdin.Non golfé:
la source
JavaScript ES6 (838 octets)
Pas écrasé :
la source