Produire le message Arecibo

38

Le message Arecibo est un message radio interstellaire de 1974 contenant des informations de base sur l'humanité et la Terre, envoyé au groupe d'étoiles globulaire M13 dans l'espoir que l'intelligence extraterrestre puisse le recevoir et le déchiffrer ... Le message consistait en 1 679 chiffres binaires, environ 210 octets ...

Le nombre 1 679 a été choisi car il s’agit d’un semi-prime (le produit de deux nombres premiers), qui doit être disposé de manière rectangulaire en 73 rangées de 23 colonnes. La disposition alternative, composée de 23 lignes sur 73 colonnes, produit un ensemble inintelligible de caractères (comme tous les autres formats X / Y).

Le message d'Arecibo

C'est le message avec la couleur ajoutée pour mettre en évidence ses parties séparées. La transmission binaire réelle ne contenait aucune information de couleur.

Source: Wikipedia


Votre tâche consiste à afficher le message Arecibo dans l’agencement exact 23x73 indiqué dans l’image. N'importe lequel de ces formats de sortie est acceptable:

  • Texte, utilisant un caractère pour les uns et un autre pour les zéros (en utilisant les règles habituelles pour la séparation des lignes)
  • Un tableau 2D de deux valeurs distinctes
  • Une image 23x73 avec deux couleurs distinctes
  • Un flux ininterrompu de 1679 éléments de deux valeurs distinctes (c’est-à-dire n’importe lequel des formats ci-dessus, mais à plat.)
  • Un entier de 1679 bits. Indiquez l'ordre des bits et des octets (finalité) dans votre solution.

Pour votre commodité, voici une version copier-coller (également un exemple de sortie au format texte):

00000010101010000000000
00101000001010000000100
10001000100010010110010
10101010101010100100100
00000000000000000000000
00000000000011000000000
00000000001101000000000
00000000001101000000000
00000000010101000000000
00000000011111000000000
00000000000000000000000
11000011100011000011000
10000000000000110010000
11010001100011000011010
11111011111011111011111
00000000000000000000000
00010000000000000000010
00000000000000000000000
00001000000000000000001
11111000000000000011111
00000000000000000000000
11000011000011100011000
10000000100000000010000
11010000110001110011010
11111011111011111011111
00000000000000000000000
00010000001100000000010
00000000001100000000000
00001000001100000000001
11111000001100000011111
00000000001100000000000
00100000000100000000100
00010000001100000001000
00001100001100000010000
00000011000100001100000
00000000001100110000000
00000011000100001100000
00001100001100000010000
00010000001000000001000
00100000001100000000100
01000000001100000000100
01000000000100000001000
00100000001000000010000
00010000000000001100000
00001100000000110000000
00100011101011000000000
00100000001000000000000
00100000111110000000000
00100001011101001011011
00000010011100100111111
10111000011100000110111
00000000010100000111011
00100000010100000111111
00100000010100000110000
00100000110110000000000
00000000000000000000000
00111000001000000000000
00111010100010101010101
00111000000000101010100
00000000000000101000000
00000000111110000000000
00000011111111100000000
00001110000000111000000
00011000000000001100000
00110100000000010110000
01100110000000110011000
01000101000001010001000
01000100100010010001000
00000100010100010000000
00000100001000010000000
00000100000000010000000
00000001001010000000000
01111001111101001111000

Si votre langue, pour quelque raison que ce soit, intègre le message Arecibo, vous ne pouvez pas l'utiliser.

Bonne chance!

UPDATE: J'ai accepté la réponse 05AB1E car c'était la première à être plus courte que le message d'origine. Ne laissez pas cela vous dissuader de nouvelles solutions.

MISE À JOUR 2019-09-09: Réponse acceptée déplacée vers une nouvelle réponse 05AB1E, car elle obsolète la réponse précédente 05AB1E. Le même point va comme la mise à jour précédente; les nouvelles solutions sont toujours les bienvenues.

Boeuf
la source
9
Si un message Arecibo est intégré à une langue, je peux dire avec certitude que j'ai tout vu dans ce monde c:
Luis felipe De jesus Munoz
6
Mathematica (IIRC) a une image intégrée pour Lena, donc cela ne me surprendrait pas si elle contenait aussi un message Aricebo.
Beefster le
@RobertS. non, car il existe d'autres formats valides que le texte.
Beefster le
4
Dans l'esprit du format d'origine, un résultat / résultat plat devrait être autorisé. Le point entier de 1679 bits est précisément que le nombre correct de lignes et de colonnes peut être déduit de la longueur du signal.
Adám
4
@LuisfelipeDejesusMunoz Mathematica a une commande interne pour déterminer les chèvres dans une image , donc un message d' Arecibo builtin ne me surprendrait pas vraiment non plus .. Cette langue est construit sur builtins de l'univers ..>>.
Kevin Cruijssen

Réponses:

2

05AB1E , 182 octets

•sv¯ö¨₁ÿ.ÛïžôΔ¨γ_Ígv…=Bм„Ð.(ܦi´…ε±G½0^/₃öRÛž¼¤"āêL!ˆ6‘Gā܇ðв₁÷Ã7€₂䬂Cć¨g¾†@÷[_-68¯a∍iG*6ÆîÆ;>éjζãÎÂ+ºžnî¼ć'(ÝÞΔ‹∞ÉݹÕ5λ₆*a|§oÄmôæ¨;—:hž¥ð¢ocË'¨%¡4Ćáß©ìća;FÁ?iˆèεƒʒ•Ž6–FD4‰`3ÊD?i-

Essayez-le en ligne! (utilise 1pour 0 et 0pour 1, comme le permet la question).

Essayez-le en ligne! (5 octets de plus, 0pour 0 et 1pour 1, ajout de nouvelles lignes pour la lisibilité).

La majeure partie du code est une constante entière N de base 255, le reste est un décodeur de système numérique asymétrique , utilisant des probabilités codées en dur de 75% / 25% (la fréquence réelle de 0 est de 76,35%, ce qui est si proche de 75%). économiserait seulement 1,2 bits dans la charge utile, alors que les 75% permettent de sauver plusieurs octets dans le décodeur).

Ž6–F                  # repeat the following 1679 times:
    D                 #  duplicate N
     4‰`              #  divmod 4: pushes N / 4, N % 4 on the stack
        3Ê            #  is N % 4 != 3 ? (boolean 1 or 0)
          D?          #  print a copy
            i-        #  if it's 1, subtract: N = N - (N / 4)
                      #  (otherwise, N = N / 4, since that's the top of the stack)

Voici l'encodeur ANS qui a généré la constante: Essayez-le en ligne!

Î                          # start from N = 0
 Rv         ]              # for each bit in the reversed input:
   4*                      #  N *= 4
     yi                    #  if the bit is 1:
       3+                  #   N += 3
         ë                 #  else:
          3÷               #   N /= 3 (integer division)
             ₅B'•.ø        # compress N as base-255
Grimmy
la source
Bon travail pour rendre obsolète la réponse précédente 05AB1E!
Beefster le
13

05AB1E , 215 210 200 octets

Enregistrement de 15 octets grâce à Magic Octopus Urn

•cOž¤4é57ñΛ\Ö₃BαöĀíL½₅üBdoÙRθLγ¨G×Tćú$G(˜ƒ¦!€R»SDrµCnJ†d∊ζ·<8‡T@|‹ï=BζćósxG\ÙÎ$¿o₁5/ÔŸÇBûXé-”a::Ž]°∊y;ζ]MÜβ‘иL”β{üÃÇíäc€÷›ÎU=}¨иaŸdY`»¾ÚUβ:ô©¦β†₅DGŠβ3Jêθ,äá!ícqšVÖ›lÈΣ¯pε €êʃDpÙ/¬Žλ8:ãÿ3=€.Þć•3BY¾4×:

Essayez-le en ligne! ou avec formatage supplémentaire

Chaîne trinaire codée en base 255 avec les occurrences de 0000remplacé par 2.

Emigna
la source
@MagicOctopusUrn: Merci! Cela fait 210 même :)
Emigna
Il est en fait encore mieux si vous remplacez 0000avec 2par 9 autres octets. - pastebin.com/aZ6tHxjx pour 201
Urne Octopus Magique
@MagicOctopusUrn: Oui, j'ai trouvé ça aussi et j'étais sur le point de le poster :)
Emigna
2
Cool! Les messages Arecibo étant de 210 octets (23 * 73/8 = 209.875), votre solution (actuellement de 200 octets) est plus courte que le message lui-même!
JL
Je suis allé de l'avant et en ai fait la réponse acceptée puisque c'était le premier à être plus court que le message lui-même.
Beefster
11

Java, 688 678 590 379 361 octets

Retourne une chaîne.

n->new java.math.BigInteger("in95mzupnpa2r0khpoepyql6ioqyn413avucdtfay6indx4wh9dehe3sn18klobtf4z9g9q17umqmwpegr2khb5eqinn7azl4jpfp2a8eui0xfrx5qwrou6gd65jh4ge3ls14k5lu7qrvmg6942ms29u5rb8fa6yrdhfoh5zoi9bdi7uh5ig0u0ff9kounth8sh357x7qox4m3oqviqsbrvakonbka4ahp21bgzi5v1akzzuqoncszhpabbru9q1uo2g11zr73iuyiqr5ikr69zn7cdv7e1lhd6ese9",36).toString(3).replace("2","0000")

-10 octets en renvoyant le flux brut (ancienne réponse)
-88 octets en utilisant des valeurs numériques de base 10 (merci @ceilingcat!)
-211 octets (je savais que cela pouvait être joué au golf!) En utilisant un BigInteger codé en base 36 (merci @JollyJoker !)
-18 octets en utilisant un entier codé différent (merci encore @JollyJoker)

Essayez-le en ligne!

Explication:

n->new java.math.BigInteger("base36 string",36) // Decode the base-36 integer.
   .toString(3)                                 // Re-encode as ternary
   .replace("2","0000")                         // Replace 2 with "0000"
                                                // Implicit return
Benjamin Urquhart
la source
1
Les commentaires ne sont pas pour une discussion prolongée; cette conversation a été déplacée pour discuter .
Adam Lear
9

Gelée , 213 octets

“H²ɓ¶Ṡḷ€ẹ]ƒf*ḳḢ&ƁṇOḥ{ḄṫwỊ+oLạʋߢH9¢¹÷ỴɗÇ⁶ƲƙæḊẋ3³=1!VƇƁ'D⁺3Ỵɱ©⁵%fȯez#ƈjƒżṆo.ZF⁶ċṢ⁶ọṛb9Ȯƒd?ƁUĠt4ẇ,ḞġƒµƭfʠƁP§÷øȤŻPɲẋ(¢ß¢(⁽3¶ṙėɗy@ṁYȮL~e⁷ƤĊ§nỊṅµṠ°@7ẠB>Ġ⁻İ}uy¡½:esOpḢt}qS©HÞṬĖṛṇḣ9÷;ESḢ,Ẉ^ṙpƲ©tṃwçnẒṆ¡⁻Jıƒị£-&Ɱ*ẋʂżoȯÑḢɼ’

Essayez-le en ligne!

J'ai joué avec le codage Huffman, mais les améliorations de la taille des données ont été compensées par le code supplémentaire. En tant que tel, il s’agit simplement d’une version encodée en base 250 de la sortie souhaitée. La sortie consiste en un entier qui, une fois décodé en tant que base bijective 2, donnera la liste 1D de 1 et 2. Merci @Emigna d'avoir signalé le changement de règles.

Essayez-le en ligne - avec un décodage supplémentaire pour démontrer la sortie!

Si un codage binaire plus conventionnel est préféré, en voici un qui code une représentation entière du message binaire inversé. Le bit le plus significatif de l'entier représente le début du message.

Nick Kennedy
la source
7

Brainfuck, 2360 2008 1938 octets

-[>+<-----]>---......+.-.+.-.+.-.+.-............+.-.+.-.....+.-.+.-.......+.-.<++++[->.+.-..<]>+.-.+..-.<+++++++++[->.+.-<]>..+.-..+.-<++++++[->......<]>.+.<++[->.-...................+..-.+<]>.-..................+.-.+.-.+.-..................+.....-<++++++++[->....<]>+..-....+...-...+..-....+..-...+.-.............+..-..+.-....+..-.+.-...+..-...+..-....+..-.+<++++[->.-.+....<]>.-<+++++[->.....<]>.+.-.................+.-............................+.-.................+......-.............+.....-.......................+..-....+..-....+...-...+..-...+.-.......+.-.........+.-....+..-.+.-....+..-...+...-..+..-.+.-.+.....-.+.....-.+.....-.+.....-..........................+.-......+..-.........+.-...........+..-...............+.-.....+..-..........+......-.....+..-......+.....-..........+..-.....<+++[->........+.-<]>.....+.-......+..-.......+.-.......+..-....+..-......+.-..........+..-...+.-....+..-...............+..-..+..-.............+..-...+.-....+..-.........+..-....+..-......+.-.......+.-......+.-........+.-.....+.-<++[->.......+..-........+.-...+.-.<]>........+.-.......+.-<++++[->.....+.-..<]>..........+..-.........+..-........+..-.........+.-...+...-.+.-.+..-...........+.-.......+.-..............+.-.....+.....-............+.-....+.-.+...-.+.-..+.-.+..-.+..-......+.-..+...-..+.-..+.......-.+...-....+...-.....+..-.+...-.........+.-.+.-.....+...-.+..-..+.-......+.-.+.-.....+......-..+.-......+.-.+.-.....+..-......+.-.....+..-.+..-<+++++++[->.....<]>+...-.....+.-..............+...-.+.-.+.-..<++++++[->.+.-<]>..+...-.........+.-.+.-.+.-.+.-................+.-.+.-..............+.....-................+.........-............+...-.......+...-.<++[->........+..-...<]>....+..-.+.-.........+.-.+..-<++[->.....+..-..+..-..<]>..+.-...+.-.+.-.....+.-.+.-...+.-..<+++[->..+.-...+.-<]>........+.-...+.-.+.-...+.-............+.-....+.-.<++[->...+.-.........<]>+.-..............+.-..+.-.+.-...........+....-..+.....-.+.-..+....-...

Essayez-le en ligne!

Je vais probablement jouer au golf encore plus bientôt.

orthoplex
la source
5

Les poissons morts ~ , 1115 1088 1084 octets

oooooo{i}ooo{d}iod{o}{i}c{d}ooiodoiodoooooiodoiodoooooooiodoo{i}c{ii}is{iiii}doooio{{{d}}}oioodooiodo{i}coooooooo{d}o{{i}}oo{{d}i}c{d}{oo}ooo{i}c{d}{o}ooioodooooooooo{i}c{d}{o}ioodoiodooooooooo{i}c{d}{o}ioodoiodooooooooo{i}c{d}oooooooooiodoiodoiodooooooooo{i}c{d}oooooooooiooooodooooooooo{i}c{d}{oo}ooo{i}c{d}ioodooooiooodoooioodooooioodooo{i}c{d}iod{o}oooioodooiodoooo{i}c{d}ioodoiodoooioodoooioodooooioodoiodo{i}c{d}iooooodoiooooodoiooooodoioooood{i}c{d}{oo}ooo{i}c{d}oooiod{o}oooooooiodo{i}c{d}{oo}ooo{i}c{d}ooooiod{o}oooooooiod{i}c{d}ioooood{o}oooioooood{i}c{d}{oo}ooo{i}c{d}ioodooooioodooooiooodoooioodooo{i}c{d}iodoooooooiodoooooooooiodoooo{i}c{d}ioodoiodooooioodoooiooodooioodoiodo{i}c{d}iooooodoiooooodoiooooodoioooood{i}c{d}{oo}ooo{i}c{d}oooiodooooooioodoooooooooiodo{i}c{d}{o}iood{o}o{i}c{d}ooooiodoooooiood{o}iod{i}c{d}iooooodoooooioodooooooioooood{i}c{d}{o}iood{o}o{i}c{d}ooiodooooooooiodooooooooiodoo{i}c{d}oooiodooooooioodoooooooiodooo{i}c{d}ooooioodooooioodooooooiodoooo{i}c{d}ooooooioodoooiodooooioodooooo{i}c{d}{o}ioodooioodooooooo{i}c{d}ooooooioodoooiodooooioodooooo

Essayez-le en ligne!

Si quelqu'un a la patience de jouer encore plus au golf, je vous salue d'avance. : P

-27 octets en imprimant des 10 et des 100 à des endroits appropriés.
-4 octets en imprimant trois 1000 et un 1001 sur la ligne 3

Rétablir Monica
la source
4

Piet , 1763 codels

Génère un flux de 0 et de 1 (pas de saut de ligne).

Codel taille 1:

Programme de message Arecibo avec taille de code 1

Codel taille 4, pour une meilleure visualisation:

Programme de messages Arecibo avec taille de code 4

Explication

  • Commencez par insérer une valeur sentinelle de -1 dans la pile.
  • Ensuite, appuyez sur le message Arecibo, dans l'ordre inverse (car il s'agit d'une pile), en utilisant le codage de longueur d'exécution.
  • Enfin, alternez entre deux boucles, l’une imprimant des zéros et l’autre.
    • Le compteur de boucles est la valeur actuelle de la pile, décrémentée jusqu’à atteindre zéro; elle est alors rejetée et nous passons à l’autre boucle.
    • Entre la boucle zeroes et la boucle one, recherchez la valeur sentinel et quittez-la si elle est trouvée.

Remarques

Le programme suit un chemin en spirale, dans le sens des aiguilles d'une montre, du haut vers la gauche jusqu'au centre. Les blocs noirs dispersés qui suivent grossièrement les diagonales constituent le contrôle de flux. Voici la trace de NPiet .

J'y travaille depuis le jour où le défi a été relevé, mais il a fallu un peu de temps pour que le message soit "écrit" dans la photo! J'ai d'abord écrit les boucles finales et la valeur sentinelle, puis j'ai construit le message du centre vers l'extérieur. (Comme Piet commence toujours l'exécution en haut à gauche, je m'attendais à devoir mélanger et faire pivoter l'image pour éviter les espaces blancs excessifs, mais elle correspondait parfaitement!)

Anecdote: Le codage par longueur dans Piet ne permet pas (par lui-même) d'économiser de l'espace. Il faut n codes de couleur pour appliquer la valeur n à la pile ou n codes de couleurs différentes pour insérer autant de 1 dans la pile. Donc, c'est le même nombre de codes dans les deux cas. Mais les grands nombres que RLE vous donne signifient que vous pouvez utiliser des astuces arithmétiques (par exemple, au lieu d’appuyer sur 9, vous pouvez appuyer sur 3, dupliquer et multiplier) pour réduire le nombre de codes et de blocs de forme amusante pour remplir les espaces disponibles.

Je ne savais pas trop comment compter le score des entrées de Piet. J'ai trouvé certains qui semblent compter tous les codes, et d'autres explicitement que ceux qui sont activement utilisés. Je viens de les compter tous; ignorer les codes blancs (même ceux que le programme ne traverse jamais) semble s'apparenter à ignorer les espaces dans un langage de programmation plus typique.

Oh, et tout à l'heure (deux heures après avoir posté), j'ai réalisé que j'avais perdu mon temps à travailler là-dessus. Je voulais couper la dernière ligne et la dernière colonne presque complètement blanches, alors j'ai remué tout ça… y compris les blocs noirs de contrôle du flux. Mais les bords de l'image fonctionnent comme le noir! Si je venais de m'en souvenir, je n'aurais pas eu besoin de passer autant de temps à déconner au sujet de la complexité des PDD et des CC ...

Tim Pederick
la source
3

C # (compilateur interactif Visual C #) , 366 332 329 319 octets

int i;foreach(var g in"*ЀʂЄ࢈ҲપԤ␀␀␀؀ȀȀȀ؀␀␀సؘࠀƐഘؚ྾ߟ␀␀Ā␀␀ྀ␀␀రܘࠈഌΚ྾ߟ␀␀ă␀ྃ␀ȁăÃ1`ƀ1`ÃĂȃЃЁȂĀ`ÀƀȺ؀Ȃ␀ȏЀȗɛ'Ŀஇ7;ȅ?ȅ0ȍЀ␀␀΂␀ΨՕ΀Ŕ␀ŀЀ?܀àǀƀ`̀°٠Ƙѐʈш҈EB@Ѐޟɸ")Write(Convert.ToString(g,2).PadLeft(12-i++%2,'0'));

Remplacez toutes les instances de with \0to test.

Essayez-le en ligne!

C # (compilateur interactif Visual C #) , 305 octets, 210 caractères

_=>"*ЀʂЄ࢈ҲપԤ␀␀␀؀ȀȀȀ؀␀␀సؘࠀƐഘؚ྾ߟ␀␀Ā␀␀ྀ␀␀రܘࠈഌΚ྾ߟ␀␀ă␀ྃ␀ȁăÃ1`ƀ1`ÃĂȃЃЁȂĀ`ÀƀȺ؀Ȃ␀ȏЀȗɛ'Ŀஇ7;ȅ?ȅ0ȍЀ␀␀΂␀ΨՕ΀Ŕ␀ŀЀ?܀àǀƀ`̀°٠Ƙѐʈш҈EB@Ѐޟɸ".Select((g,i)=>Convert.ToString(g,2).PadLeft(12-i%2,'0'))

Idem avec ci-dessus, remplacez par par \0pour tester. Sortie en tant que IEnumerable<string>.

Essayez-le en ligne! (Gracieuseté de Jo King)

Incarnation de l'ignorance
la source
Je crois que le ++in 12-i++%2est un nop (du moins, cela a fonctionné pour moi lorsque je l'ai enlevé)
mon pronom est monicareinstate
@ oneome one Ils sont un copier-coller de l'ancienne réponse que j'avais oublié de supprimer
Incarnation de l'Ignorance
2

Perl 6 , 368 octets

.say for :36('FJXOE0PDDNF5Y5EHGB8M9SWMXQOXIKIT9F6ZKWWDEACHCBGXL1N2H60CN0CJ4EMKF7D6MODSKYJVNR4SFTDR6NSM421LQ67B6MWF0G5BQATFOJJJBQ0UFQM64T0MWSQN41C4S5D1QR5KJM2L9UTYMMKUBBQWY45YCMRGO8ZRGTQH7LXMZBUASLCTKX30IH0AYKYEPHO8HFHX8GAY5WM38YOSUX0HABYSH2PPBLRDRZIN5ANAQ3V8PLOZ6EHC0UI95EVJVYD1820T6J14HGX85NWFQET2NWOMSNUT0JW4LHMY90X094TEE9KXJXSNN6YPERFQW').base(2).substr(1).comb(23)

Essayez-le en ligne!

La longue chaîne est le message composé d'un seul nombre base-36 (avec un seul bit préfixé pour conserver les zéros non significatifs), qui est ensuite reconverti en binaire et imprimé 23 bits à la fois.

Sean
la source
Vous pouvez utiliser >>.sayet &{S/.//}pour sauvegarder des octets. Avez-vous pensé à utiliser une base différente à la place?
Jo King le
Oui, j'ai essayé d'utiliser la base 65536 / Unicode, mais le message se heurte à des points de code de substitution interdits. J'ai pu éviter cela en ajoutant un décalage fixe à chaque point de code, mais étonnamment, certaines des chaînes générées se sont écrasées plusieurs fois dans Emacs. La résolution des problèmes a commencé à prendre plus de temps que je ne pouvais me permettre de commettre. Je reviendrai probablement sur le problème plus tard.
Sean
Inutile d'utiliser plusieurs caractères sur plusieurs octets, car cela augmente votre nombre d'octets. 289 octets en appliquant mes astuces ci-dessus et en utilisant la base 122 (pour éviter les retours de chariots)
Jo King
2

Wolfram Language (Mathematica) , 383 octets

StringPartition[Uncompress@"1:eJylVNsRwjAM44s92KBaBTZgAUZhZXqtHUuOWrgjfSRRHFlO4tyer/vjfb1clq0gHirZLRjby986hppcT5p+L3BmgJ3t4Ul4GsNyG++7YbaXLh0ZTPhXa4Sn+X/s9Qfk3Hx2cOaSIuNYaVu5laschvgzSqAjHeZBhilKgKBDEhw0upJRg+HOK4MyNC29sfbc3RV0VPDqeLiRTsG1ulExq1IitpunOa7asnYM9siDZ6eidUCkEzBOUbCkGIig4aTyUGBYWAX6W6aXIWGGI/HlhmsqzSU0QTZjkMVpaX5sBsm1OGKVg1qdjKP0EdyqZBRLhukn8DLBQav6kccgz8OKfgBzjj6Z",23]

Essayez-le en ligne!

J42161217
la source
2

Node.js , 333 octets

Renvoie une chaîne binaire de 1 679 caractères.

_=>Buffer(")SI)=.);1K?>>>2333A3,93/I3>3)g33)AEAAI)5JQZJTddda3)*3*33+3,e)*e3)//0/1+)1C/7Cgggg3395)9)A3IY)h*IH),39+)995*)AA-)59Y)*O3Z,)//*)91**)A*-)Y+1)I11+)I1)/)5)Y*0?)+)I)-0Y)1@;_*7<gaE/a)Q7[*9HM+IY16I33)a1)*^.><I+S3.38I)*hY)7)a)Y)A,9*A5Y/A:9=9K:1I-=9)19I)9*329)GH<").map(x=>s+=(x-51&&x-41).toString(2).padStart(x-51?6:12,0),s='')&&s

Essayez-le en ligne! (avec sortie formatée)


JavaScript (ES8), 413 octets

Renvoie une chaîne binaire de 1 679 caractères.

_=>atob('AsKoAFBQEiIlwpVVUk!!ABwo!DQ!Gg!V!Aw7g!!GHGHCi!yGjHChsK+w7vDr8K!!Q!Q!!g!/DgAHDs!AGGHDhiAgCGhjwprDu8Ovwr4!ABAw4AQAcK!MKDAD8GB8OAD!QCAQQMBAYYEAMQwABwpgAMQwBwoYEBAgEEBgEQDAIwoAgIMKAwoDCgMKABgDDgDAEdcKACAgAEHwAIXTCtgTDpMO+w6HDgcK4AsKDwrIFB8OkCgwINg!!A4IAB1FVTDoArCo!U!/CgAB/w4ADwoDDoAwAYDQBYMOMBmEUFEIkSMKARR!woQgAQB!MKUAHnDtA'.split`!`.join`AA`).replace(/[\s\S]/g,c=>c.charCodeAt().toString(2).padStart(8,0))

Essayez-le en ligne! (avec sortie formatée)

Arnauld
la source
2

Bubblegum, 275 236 octets

00000000: e006 8e00 e45d 0018 6988 6507 a228 f86f  .....]..i.e..(.o
00000010: f042 c62f d4d7 b99e 38bc 56c4 52e8 2630  .B./....8.V.R.&0
00000020: 8aaa 7252 d47d 5ef4 c96a 511f 6842 423f  ..rR.}^..jQ.hBB?
00000030: 4532 ca9f 22d3 1633 e0c4 665a d5dc 4e68  E2.."..3..fZ..Nh
00000040: 7b09 76ae 3c7e f9d4 fa4a 05e0 4163 c580  {.v.<~...J..Ac..
00000050: c585 a383 2396 4ca9 1f48 a4b9 744e 37c8  ....#.L..H..tN7.
00000060: 68c5 af23 645d 59a7 542a e6d1 23b9 3aba  h..#d]Y.T*..#.:.
00000070: f0e6 2738 dfd5 b0a3 c6a3 60bf c5b6 5ae6  ..'8......`...Z.
00000080: 7893 30a8 ae04 edf9 298b b777 4d56 285b  x.0.....)..wMV([
00000090: cb74 07cc 7a7b a399 3dc7 c6e7 b693 e715  .t..z{..=.......
000000a0: d908 876e 001f 7408 3c6a 5fcd 37cb 02c4  ...n..t.<j_.7...
000000b0: 93de 33c2 a11e 5bac cd12 d99a fac3 e0fa  ..3...[.........
000000c0: 5268 94f7 d640 0f73 cede f79d 821f 39d1  [email protected].
000000d0: dc49 ff06 6962 6c31 dc29 a077 01c3 7690  .I..ibl1.).w..v.
000000e0: 85ef bbec 31d7 5c7f f9fc 8c00            ....1.\.....

Essayez-le en ligne!

orthoplex
la source
2

outils bash + GNU, 351 octets

base64 -d<<<H4sIAPnNrVwCA6WUCRLDIAwDv8T+/3NNG4wvkTBTcisGSyA8xrcxj9Ds02F+Z7yuf3hnPyz0vYEGz+FG3IKBs+x3oL2PSh0TM/PnaGamft9nPUCew3uCp5RBWdRKGz+qNJn8qRKkkNaTBgeVIFXWOdi8VCaIeUnsfHo6TXpaFa3H5olf6J5MuIHLoEi0uKcRFCvEXG4xseglKzZg7kpYJSLMA3M7wXKR+/L2WiK0kvg+TDASLp6Co1KEVIlVmFzhCktRhBBDdSZYU1xKHrmDUllcWpNR/YNW2QNcHtF0rSySb0MXk/SDUgEwG5gfLvQDxuEdDo8GAAA=|gunzip

TIO

Nahuel Fouilleul
la source
Je n'ai pas vu votre message avant que je poste le mien - tellement plus petit!
Noodle9
2

MathGolf , 223 220 octets

'06*"x·<×J× Ç×►B×ê\"@$↕!◙è0♥f░×→0×♠p└☺α?×└•×◙×P♣p¬è:×►∟××××←♦♠♣≥â☻┘A☺▄αp⌂r☻[║►×>◘×♦♦└:☻↑`×♥@@@@►►@♦↑ ☻♀◘☻♦☻☻├×å↑×╠×Ç!♠ 0♀◘↑◘☻♦◘×♠α♥â▼ÇA×└×◘` ×××▀≈}═14♦►►π0♀××°×α•×►×××☻×◘××└≈}_├↑♪↓×─0♫♥×××|××*××♪×Ç♠×└×××× ⌐¬╩↕◄○((×T☺"$à+

Essayez-le en ligne!

Explication

'0                push single character "0"
  6*              repeat 6 times
    "..."         push the magic string
         $        convert to ordinal
          à       convert to binary string
           +      pop a, b : push(a+b) (add the 6 zeroes)
                  below is the footer
            L/    divide into groups of 23 characters
              n   join array with newlines into string
maxb
la source
Vous pouvez déplacer le L/nvers le pied de page, donc c'est en fait 220 octets. Peut-on sauvegarder davantage d'octets en portant les réponses 05AB1E / Java (à l'aide de cet entier compressé , convertissez-le en base 3 et remplacez tout 2s par 0000s)?
Kevin Cruijssen le
@KevinCruijssen belle prise! J'aimerais avoir plus de fonctions de remplacement de corde, mais cela ne fait pas partie de MathGolf pour le moment.
maxb
Que diriez - vous d' une carte par chiffre, qui mappe 2à ♫░╞? EDIT: Peu importe. Je vois que vous ne disposez pas d'une conversion de base intégrée (sauf binaire / hexadécimale) pour convertir en base 3?
Kevin Cruijssen Le
@KevinCruijssen J'ai un peu réfléchi à la façon dont je devrais changer la conversion de base. Je n'ai certainement pas besoin d'une commande pour convertir une chaîne binaire en décimal, ni d'une autre pour convertir un tableau binaire en décimal. De cette façon, je peux intégrer une autre commande de conversion de base (et l’idée a toujours été d’avoir une conversion de base générale dans la langue).
maxb
Vous pouvez sûrement passer aussi +au pied de page
Jo King
1

Perl 5 , 460 octets

printf"%023b",oct"0x$_"for qw/15400 141404 4444b2 555524 0 600 1a00 1a00 2a00 3e00 0 61c618 400190 68c61a 7df7df 0 80002 0 40001 7c001f 0 618718 404010 68639a 7df7df 0 81802 1800 41801 7c181f 1800 100804 81808 61810 18860 1980 18860 61810 81008 101804 201804 200808 101010 80060 60180 11d600 101000 107c00 10ba5b 1393f 5c3837 283b 10283f 102830 106c00 0 1c1000 1d4555 1c0154 140 7c00 1ff00 701c0 c0060 1a00b0 330198 228288 224488 22880 21080 20080 9400 3cfa78/

Essayez-le en ligne!

Xcali
la source
1

Python 2 , 336 octets

print bin(int('gVQAKCgJERLKqqkgAAAAAMAABoAADQAAKgAAfAAAAAMOMMQAGQ0Yw19998AAAAgAAgAAABAAB+AA+AAADDDjEBAENDHNffffAAAAIGAIAMAAQYAfgwPgBgAIBAIIGAgMMCAGIYAAzAAYhgDDAgIEAggMAiAYBEAQEEBAQEADAGAYAjrABAQACD4AELpbAnJ/cODcAUHZAoPyBQYEGwAAAAAcEAA6iqpwBVAACgAHwAA/4AHAcAYAMBoAsGYDMIoKIRIkQCKIAEIQAIAgAEoAPPp4'.decode('base64').encode('hex'),16))[3:]

Essayez-le en ligne!

Imprime une chaîne d'octets

TFeld
la source
1

Java (OpenJDK 8) , 364 octets

n->new java.math.BigInteger("in95mzupnpa2r0khpoepyql6ioqyn413avucdtfay6indx4wh9dehe3sn18klobtf4z9g9q17umqmwpegr2khb5eqinn7azl4jpfp2a8eui0xfrx5qwrou6gd65jh4ge3ls14k5lu7qrvmg6942ms29u5rb8fa6yrdhfoh5zoi9bdi7uh5ig0u0ff9kounth8sh357x7qox4m3oqviqsbrvakonbka4ahp21bgzi5v1akzzuqoncszhpabbru9q1uo2g11zr73iuyiqr5ikr69zn7cdv7e1lhd6ese9",36).toString(3).replaceAll("2","0000")

Essayez-le en ligne!

Explication: D'abord n->new java.math.BigInteger(str,36).toString(2), convertir simplement un nombre de base 36 en binaire, mais cela nécessitait neuf caractères supplémentaires pour les zéros non significatifs. Ensuite, j'ai eu l'idée de coder en longueur quelques zéros par longueur. Une longueur de quatre zéros semble minimiser la longueur de la base 36, doncn->new java.math.BigInteger(str,36).toString(3).replaceAll("2","0000")

Voir la discussion sous cette réponse pour le correctif de zéros principaux de @KevinCruijssen

JollyJoker
la source
Agréable. C'est très court pour Java!
Eric Duminil
1

[Python 2] , 345 octets

s=''
for c in")pG/K(K*j$h%kk$ppjGE&I6S6S5[5eCv~vw0x&z$wgqcde$e=G4G?G4eG0e:vv~w*G,gn$wy$uuuuG=G)I,G.I2G(I-eG(I)e-I0G+G+G(G)I*G*vI)G-w'I2y0w'I,vI)G*G)G+G(G*I+W+I+W,G*G(G*G*G*G/I,I+I,iq.G*G1G(e/g$c%sG)m%md~$M(},K(cO)K(eO)K(I)G(aE$M(G1c$hpoI,pG3K1e3eU/M*M,I.I*S,Q(y*y'hG(ng&j$j$G+hW/g'G/G,G1k.d$e$mN":c=ord(c)-35;s+=[bin(c-35)[2:],'0'*c][c<35]
print s

J'ai encodé la longueur des chaînes de 0 sous la forme d'un octet commençant à chr (31). Ensuite, j'ai encodé les 10101 restants sous forme de nombres binaires allant de chr (70) à chr (126). Les chaînes binaires qui ne correspondaient pas ont été scindées en morceaux plus petits.

Edit: réduit à 326 octets. Merci Jo King

Edit: Correction d'un bug dans le programme générateur de code

Edit: édition finale

Chien surprise
la source
Vous n'avez pas besoin de sauvegarder la grosse chaîne dans oune variable.
Xnor
1

Zsh , 577 octets

essayez-le en ligne !!

S=fxxxxibxxdxxfyzzzyx1yxxxxxxxxyyywl2ij1xxhj1xxhixxxhi5iw2d3c2d2cxl2bxc2az2c2d2ax4x4x4x5wcxpxwdxp15m5w2d2d3c2cxfxhxc1xxc2c2y1xx4x4x4x5wc1f2ixj2kd1e2j15e2f5j2kb1h1hyc1f2gzd2d2fzaf2c1d2ej2b2gf2c1d2ed2d2f1dc1f1hzb1g2hya1h2hya1i1gzb1g1g1dc1l2ed2h2gbz2xx2ibzd1lbzb5jb1dx2xyx1x2fy2yy6x3d3e2a3ixxd2x2b1fxxd6b1fxxd2db1e2a2jwb3e1lb2xxzxxxxx1b3ixxxynxxeh5jf9hd3g3fc2k2eb2a1ix2da2b2g2b2cazxxdxzzazyzyzzezxz1ge1d1d1ge1i1ggyxxia3y4xy3z
for X in ${(s::)S};{case $X in
[a-w])V=$[##$X-96];printf 0%.s {1..$V};;[1-9])V=$[##$X-48];printf 1%.s {1..$V};;[x-z])V=$[##$X-119];printf $[10**$V];;esac}

Utilisé la logique de codage personnalisé. La chaîne Sest de 421 caractères, pourrait éventuellement être compressée un peu plus. Les lettres a-wreprésentent une répétition de l' 0art. Les chiffres 1-9représentent des répétitions de l' 1art. Les lettres x y zreprésentent 10 100 1000respectivement.

J'aurais peut-être dû essayer l' encodage par paire d'octets ou Ascii85 .

roblogic
la source
0

Frapper , 702 697 octets

xxd -r -p<<X|xz -dc
fd377a585a000004e6d6b4460200210116000000742fe5a3e006d7010c5d
0018698865079cf6752c9e9a501a87a798b4844f9fcfdaaf87733b9d8239
48c816d860a938767f6cb81299f3e8a638effe3068c0e096a8949c81d706
7dff3ec44e5df185b3a48e5b5857724386e8c37cfbd5c856b12614ee78ec
c41df4db3aea71fd3a8fa474905609f78eb3fd66e246557965e4ab6dfd67
efbd9202f542ded9cf98a6401ee2d23afb2f544bd2442c6f428fd612397c
f2c6ec50847ddccc5832185e487712e5a7676b97058d7e485d5a3536166a
44ab3c689c93073cdda73b5306a83c4cd268e79db238bfa2d08ac912a578
75020bc7828342d5a62ce367aff7fd89290336128d119fa4272da2b2a79f
5973c71935af054f2d91c1bd3ea4847a3502d6dc8c975114dacf8a4de600
622d80986dbb0cd00001a802d80d00001b16e2a7b1c467fb020000000004
595a
X

Essayez-le en ligne!

Noodle9
la source
0

Rubis , 362 octets

puts"5r0afnfm8wyke8tfy1pwt7xnuaxyh3wodfp7bhsdufyw0xbdp1pumrz2xir652tuc0ss9oec8yad9vefivd66j126wybhefgk2lv38uqqiur11u26q275jk3h2ucithd59awpaenqpqi1pszh52179zw0ddqtbrvo6kyrrgv8c34pqrp83j8estjp63v29t4hqp9yg2hhzjlq1e9zqx6gh20n9lsttimz3nbq060ritrphxaru7quwmv3oujhd9xjddpbacq4bnpf270znhgto59yn0980itylf95pxw9x7rvkvi7mfql1sx46puo8rg4dq0".to_i(36).to_s(2).rjust(1679,?0)

Entier écrit en base 36. Il existe sûrement un moyen plus efficace de compresser l'entier, par exemple avec zlib oubase64 .

Essayez-le en ligne!

Eric Duminil
la source
350 octets si vous: (1) utilisez "% b" pour le formatage à la place de to_s, (2) utilisez le préfixe? 0 * 6 au lieu d'appeler rjust
Go
0

[C ++ (VC ++) (mais également testé avec gcc)], 585 octets

#define l(x,y)for(int x=0;x<y;x++)
void f(){const char*a="02A800505012Y595Y240U180YD0Y1A0Y540YF80V61C618800321A3186BEFBEF80X10Y40W20YFC001F0X1861C620200868639AFBEFBE0W40C0100180Z83003F0607C00C001008041030101860400C430Z19800310C018604040804101804403008802020808080800600C030047580080800107C002174B604E4FEE1C1B80283B20507E40A0C08360U3820Z751554E00AA0Z140ZF80Z7FC00380E00C0060340160CC06611414422448804510Z8420010040Z940079F4F0";int x=1679;l(i,365){int d=a[i],c=0;d-=(d>47&d<58)?48:((d>64&d<71)?55:0);if(d>70&d<91)c=91-d,d=a[i-1];for(c;c>=0;c--)l(j,4){if(x--)cout<<(int)((d&(8>>j))>0);}}}

Essayez-le en ligne!

Version non-golfée (manque la pause après le 1679ème élément et va jusqu'au 1680ème):

#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
    const char arecibo[]="02A800505012Y595Y240U180YD0Y1A0Y540YF80V61C618800321A3186BEFBEF80X10Y40W20YFC001F0X1861C620200868639AFBEFBE0W40C0100180Z83003F0607C00C001008041030101860400C430Z19800310C018604040804101804403008802020808080800600C030047580080800107C002174B604E4FEE1C1B80283B20507E40A0C08360U3820Z751554E00AA0Z140ZF80Z7FC00380E00C0060340160CC06611414422448804510Z8420010040Z940079F4F0";
    int i = 0,j;
    while (i<sizeof(arecibo)-1)
    {   
        char digit = arecibo[i];
        int count=0;
        if (digit >= '0' & digit <= '9')
        {
            digit -= '0';
        }
        else if (digit>='A'& digit<='F')
        {
            digit -=  'A'-10;
        }
        else if (digit > 'F'&digit<='Z')
        {
            //digit does not contain any valid hex digit in this case
            count = 'Z' - digit+1; //digit = Z means repeat 2 more times...
            digit = arecibo[i - 1];
        }
        for (count; count >= 0; count--)
        {
            for (j = 0; j<4; j++)
            {
                cout << (int)(((digit)&(8 >> j))>0);
            }
        }
        i++;
    }
    return 0;
}

en tant qu'explication: j'ai concaténé les 73 lignes de sortie d'échantillon données en une seule ligne longue. Je les ai codés en hexadécimal où l’ordre des bits est msbfirst (en utilisant ce programme https://github.com/Marc-Bender/longBinaryStreamToHex/releases/download/addedErrorCode-4/longBinaryStreamToHex.exe ) j’ai raccourci la sortie de celui-ci par environ 70 chiffres hexadécimaux en utilisant les lettres 'G' - 'Z' comme signe pour répéter le dernier chiffre une certaine quantité de temps (Z = 2 fois, Y = 3 fois plus…) le reste devrait être relativement explicite pour les golfeurs . abuser du préprocesseur pour raccourcir les boucles, abuser de l' ,opérateur, etc.

Le format de sortie est un flux ininterrompu de 1679 valeurs 0/1.

der Bender
la source
avant que quiconque ne demande à la const est compatible avec VC ++ (avec lequel le travail de développement principal a été effectué)
der bender
@ceilingcat, je pense que vous pouvez même faire court-circuit plus que cela en opposant votre inclusion dans la section d'en-tête ...
der bender
554 octets
ceilingcat le
0

Perl 6 , 348 octets

{"000000"~:36<5r0afnfm8wyke8tfy1pwt7xnuaxyh3wodfp7bhsdufyw0xbdp1pumrz2xir652tuc0ss9oec8yad9vefivd66j126wybhefgk2lv38uqqiur11u26q275jk3h2ucithd59awpaenqpqi1pszh52179zw0ddqtbrvo6kyrrgv8c34pqrp83j8estjp63v29t4hqp9yg2hhzjlq1e9zqx6gh20n9lsttimz3nbq060ritrphxaru7quwmv3oujhd9xjddpbacq4bnpf270znhgto59yn0980itylf95pxw9x7rvkvi7mfql1sx46puo8rg4dq0>.base(2)}

Basé sur la solution Java de Benjamin Urquhart .

Utilise un flux direct de 0 et 1 caractères. Le lien ci-dessous contient du code pour épurer la sortie.

Essayez-le en ligne!

bb94
la source
0

Tcl , 366 octets

binary scan [binary decode base64 QBUACgpIRKSpqkoCAAAAgAEAsAAAWAAAKgAAHwAAAGA4hhEATFiMYX3f9wEAAAgAIAAAAAQA8AOADwAAGIZjBAQQFsZZ3/d9AAAAAgMIgAEAwQD8YOADMAAIECAIDAgYBgIwwgCAGQCMMIBhICAQIAgYIAIMEAEEBAEBAQFgAAMMIK4BEBAACD4AhC5tICd/h4MdQMFNoOAnUDAQbAAAAAAcBACuqCoHUAUAKADwAQD+A8ABBzAABiyABjNghigoQiQSAaIIACEEgAACACkAni8P] b* z
puts [join [regexp -all -inline .{23} $z] \n]

Essayez-le en ligne!

wolfhammer
la source
0

C ++ (avec la bibliothèque multi-précision Gnu), 359 octets

Ceci sort la chaîne comme une ligne. Il utilise '1' pour 0 et '0' pour 1: /

Il lit simplement la chaîne incorporée en base 62 et l’imprime en base 2.

Utiliser g++ -g arecibo.cpp -lgmp -lgmpxxpour compiler et lier

#include<gmpxx.h>
main(){mpz_out_str(stdout,2,class_mpz("vuXXKBYAu1hPsJPbFSf49akyFd0bjJbMIV3upYndU8kYFPsXcpRUK6c9qnzLfORxkxGL7ZfoSwgSxFbCrydjHL603QcxexopAzoYAcAyEiENJJU2vQA2zM8NDbeY6nHgL8rfFoPJaclwxx6TeKeOEknEQHzp7C4la3o8xijBQLOVweFZ1CI9dXy2VQhgnuwF5FeW5mQ909pRMxhn6G3RJ1QEtkS7oGMZYHM03fh4fj391IoYLGVv3iUVuTrV2ghz9CUa9hfGYrdhGoVE2w1inYalYl",62).get_mpz_t());}
CSM
la source
Je ne pouvais pas obtenir ce travail jusqu'à ce que je l' ai remplacé class_mpzparmpz_class
ceilingcat
0

Perl 6 , 276 octets

:122[q{3tD!gLF['u#.K>'uCG8cvJZ[on1Z<D!	`Fhqq-_V'"qQn+n0h\:b,vXjo&1TMFaW;wvX;eUS
(ueelNSu,y93\kjGI&?UU/38 :ndi4Y5cyC+ME\g7LWaS;QLjtD^L+aVd(XW%gy\8'Eqk-+f72S5J?(r5!m^5px T[Z'3&jd0lZ'/x%#(}.ords].base(2)~~S/.//.say

Essayez-le en ligne!

Les sorties sont une série de 1679 0 et 1. Vous pouvez l'avoir sur différentes lignes en ajoutant .comb(23)>>avant lesay .

Explication:

:122["...".ords]                     # Convert the string from base 122
                .base(2)             # To base 2
                        ~~S/.//      # Remove the leading 1
                               .say  # And print

Je peux probablement économiser des octets en utilisant la sortie sous la forme d'un entier de 1679 bits ou en inversant la représentation des bits.

Jo King
la source
0

C ++ (gcc) , 748 octets

#define l(X,Y)if(z[i]==#X[0])z.replace(i,1,#Y);
void f(){std::string z = {"ab1eeedala1ebeeheal1mmma1fa1g1eeeeeeea1a1alddhgdbcdgdacedgdacedgdeeedgdndgddhgqiafbcag1dbfa1blceafafbcegcinnnlddhgmddegddhgb1ddelcidbnlddhgqqiafag1hedeblcebcaf1acegcinnnlddhgmhcdegdacdagb1bfda1lcibfhcildacdaga1d1d1almhcheagbqch1blhcmbqgdacachghcmbqgbqch1blmh1d1aga1hfd1aledcd1aledeheaga1heheblmdbqgbcdchga1af1efdga1hedbla1bndala1b1f1ea1fflh1aia1acccl1f1bibff1ldeebf1fla1h1ebfccla1h1ebfbla1bffdalddhgaibedblaieemeeeeelaideeeealdh1ehldcidalhcccidlbihf1hlafdafbgacedefblfachfacagemebeemagema1ma1magbememhgbeb1b1hgbedehghea1edalfcacieacca0"};for(int i=0;i<1751;i++){l(q,cb)l(n,fi)l(m,ae)l(i,c1)l(h,ba)l(g,0l)l(f,0c)l(e,01)l(d,bb)l(c,11)l(b,aa)l(a,00)l(l,\n)printf("%c",z[i]);}}

Essayez-le en ligne!

En remplaçant la sous-chaîne la plus utilisée par un nouveau caractère jusqu'à ce que cela n'en vaut plus la peine

r3dapple
la source
735 octets
ceilingcat
0

Python 3 , 331 octets

exit(''.join(bin(i)[3:]for i in b'`UP@JB`IDQKJjjd`@@@@@L@@Ah@@CP@@J`@@_@@@@@LNLLP@FPtXpu}}}|@@@@`@@`@@@A@@A~@@~@@@CCCcDA@DMCGM____@@@@HF@H@L@@PX@_`pO`A`@HA@HHF@`LLB@FHX@@s@@Xa`CC@`HD@``L@b@XAD@PDDA@PD@C@F@X@ck@A@P@BCx@DKi[@gI\x7f\\NC\\@TGY@hOrAPXDFp@@@@@\\D@@zbjipAU@@B`@Gp@@\x7fx@G@\\@X@LAh@lFXCLHhJHQHdPBJH@DHP@H@`@Dh@OOix')[1:])

Essayez-le en ligne!

Jitse
la source