Lorsque vous jouez au code, vous aurez parfois besoin d'un vidage hexadécimal de votre code, généralement parce que vous avez utilisé des caractères non imprimables. Alors, pourquoi ne pas créer un programme qui se décharge lui-même?
Le défi
Ce défi consiste, sans aucune entrée, à générer un vidage hexadécimal de votre code source dans le format suivant:
0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
Ou, par exemple, si votre programme était print("SomeString"):rep(123)
0000: 70 72 69 6e 74 28 5c 22 53 6f 6d 65 53 74 72 69 print("SomeStrin
0010: 6e 67 5c 22 29 3a 72 65 70 28 31 32 33 29 g"):rep(123)
Détails
Le vidage hexadécimal est divisé en lignes de trois parties, chaque ligne représentant 16 octets de votre code source.
La première partie est l'adresse mémoire. Il spécifie où la ligne actuelle commence dans votre code. Écrit sous la forme d'un nombre hexadécimal de 2 octets, suivi d'un:
, puis d'un espace.
Le deuxième est le vidage hexadécimal lui-même. Il s'agit de 16 octets de votre code source, écrits sous forme hexadécimale séparés par des espaces. Cela devrait être une représentation précise des octets en utilisant l'encodage de votre code.
Enfin, après un espace de deux espaces, c'est le code lui-même. Il s'agit simplement de 16 caractères de votre code, avec des caractères non imprimables écrits comme.
Remarques
- Ceci est un défi quine , donc standard Quine règles applicables.
- Et c'est aussi un défi de code-golf , donc les échappatoires standard s'appliquent.
- Comme indiqué dans le deuxième exemple, n'écrivez pas d'octets après EOF, utilisez plutôt des espaces.
- La fin des espaces blancs est très bien.
- Les intégrations au vidage hexadécimal, si vous en avez un dans ce format spécifique, ne sont pas interdites mais sont mal vues.
- Les caractères non imprimables font référence à tout caractère qui, représenté comme un seul octet, ne peut pas être représenté comme un glyphe à simple espacement. Pour UTF-8, ce moyen
0-31
,128-255
. Pour la Jelly Codepage , comme tous les caractères peuvent être représentés comme un glyphe à simple espacement, il n'y a pas de caractères non imprimables.
xxd
ça?