Ce programme est plein de caractères non imprimables, alors voici un hexdump:
00000000: 2573 dc01 7e13 dcb6 1f                   %s..~....
Remarque: ceci utilise une routine de saisie numérique incapable de saisir des nombres négatifs. Cette soumission est donc limitée aux entiers non négatifs uniquement.
Un problème avec les problèmes des flics et des voleurs est que vous n'écrivez pas d'explication du code (pour le rendre plus difficile à résoudre). D'un autre côté, cela signifie que je n'ai pas à me préoccuper de la situation.
J'ai choisi 7 comme langage parce que, surtout dans sa notation comprimée, il est assez difficile à lire, et je ne vois pas pourquoi ce devrait être seulement moi qui dois prendre la peine de déplacer des morceaux de programmes 8 bits écrits en un encodage à 3 bits. Bonne chance!
Explication
Maintenant que le programme a été fissuré (par force brutale, malheureusement, cela reste toujours un danger pour ces solutions courtes), je pourrais aussi bien expliquer ce à quoi je voulais en venir. C'était en fait assez soluble en lisant le programme; J'aurais pu rendre les choses beaucoup plus difficiles, mais cela semblait être une mauvaise idée lorsqu'il existe des fissures par force brute.
Nous allons commencer par représenter le programme dans un encodage plus naturel. Comme d' habitude, les chiffres indiquent les commandes bolded maintenant (pas tous qui sont représentables dans un programme, 6et 7sont , mais 2à 5ne sont pas), le nombre unbolded représentent leurs équivalents échappées ( 0à 5, qui sont tous représentables dans le programme original; note c'est 0un évadé 6et 1un évadé 7):
112 7 1 7 34002 77 023 67 13303
L'ensemble des commandes disponibles dans une source de programme 7 signifie qu'il ne s'agit en fait que d'un littéral représentant la pile d'origine (vous ne pouvez rien faire d'autre avec des commandes échappées, 6et 7). Donc, la première chose qu'un programme fera est de mettre un tas de choses sur la pile. Voici à quoi ressemble la pile après l'exécution du programme ( |sépare les éléments de la pile, comme d'habitude dans 7):
772 | 7 | 34662 | 023 | 73363
Le dernier élément de la pile est ensuite copié pour devenir le code à exécuter (tout en restant sur la pile). En l’occurrence, c’est la seule partie du programme qui soit codée; tout le reste n'est que des données. Voici ce que cela traduit:
73363 
7       Poussez un élément vide sur la pile
  3      Sortez l'élément de pile supérieur, jetez l'élément inférieur à
 73      Effet combiné de ceux-ci: éliminez l'élément de pile supérieur
   3     Sortez l'élément de pile supérieur, jetez l'élément inférieur
    6    Échappez l'élément de pile supérieur, puis l'ajouter à l'élément ci-dessous
     3   Sortez l'élément de pile supérieur, supprimez l'élément ci-dessous
En d'autres termes, il ne s'agit généralement que d'un ensemble d'instructions d'E / S. Analysons cela en détail:
73élimine le 73363qui est toujours sur la pile. 
3sort le 023et jette le 34662. On voit donc qu'il 34662s'agit d'un commentaire qui a été utilisé pour stocker les octets nécessaires dans l'autre version du programme. Pour ce 023qui est de la sortie, il sélectionne le format d'E / S 0 (nombres entiers), puis 23une directive qui demande à l'implémentation de saisir un entier (en 7, vous saisissez via la sortie des codes spécifiques qui demandent une entrée). L’entrée est réalisée en faisant des copies de l’élément de pile ci-dessous, par exemple si le nombre entier saisi est 10, l’élément de pile suivant (actuellement 7) deviendra 7777777777. Ainsi, nous acceptons les entrées de l’utilisateur en décimal, mais elles sont stockées de manière unaire. 
6échappe à l'élément de pile supérieur (en changeant chaque instance de 7en 1; c'est comment les chaînes composées entièrement de 7s sont échappées), puis l'ajoute à l'élément de pile avant ( 772). Donc, nos données sont maintenant quelque chose comme 7721111111111. 
- Pour finir, 
3affiche l’élément de pile en question (et affiche un élément de pile vide faisant partie de la pile initiale par défaut). Sa valeur est calculée en prenant le nombre de 1s et 7s et en soustrayant le nombre de 0s et 6s. (Le 2dans le milieu est ignoré dans la plupart des cas; s'il se trouve à la fin de la chaîne, il deviendra un saut de ligne au lieu d'être ignoré, mais les règles PPCG ne s'en soucient pas.) Ainsi, la sortie est l'original. entrée plus 2. 
À ce stade, il n'y a rien d'utile sur la pile et rien dans le programme, donc le programme se ferme.
Comment inversons-nous cela? Il suffit de changer le 11pour 00, de sorte que nous ajoutons des caractères à l'entrée, ce qui le rend 2 plus bas, plutôt que 2 plus élevés. Il y a 00huit chiffres octaux cachés plus loin dans le programme (de manière à ce que les chiffres octaux et les octets soient alignés), afin que nous puissions simplement les échanger avec 11le début.