Beim Code-Golfen wird es Zeiten geben, in denen Sie einen Hex-Dump Ihres Codes benötigen, normalerweise, weil Sie nicht druckbare Zeichen verwendet haben. Warum also nicht ein Programm machen, das Hex Dumps selbst erstellt?
Die Herausforderung
Diese Herausforderung besteht darin, bei fehlender Eingabe einen Hex-Dump Ihres Quellcodes in der folgenden Formatierung auszugeben:
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 ................
Oder zum Beispiel, wenn Ihr Programm war 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)
Besonderheiten
Der hexadezimale Speicherauszug ist in Zeilen mit drei Teilen aufgeteilt, wobei jede Zeile 16 Byte Ihres Quellcodes darstellt.
Der erste Teil ist die Speicheradresse. Es gibt an, wo die aktuelle Zeile in Ihrem Code beginnt. Geschrieben als 2-Byte-Hexadezimalzahl, gefolgt von einem :
, dann einem Leerzeichen.
Der zweite ist der Hex Dump. Dies sind 16 Bytes Ihres Quellcodes, die in hexadezimaler Form geschrieben und durch Leerzeichen getrennt sind. Dies sollte eine genaue Bytedarstellung unter Verwendung der Codierung Ihres Codes sein.
Nach einer Lücke von zwei Leerzeichen ist schließlich der Code selbst. Dies sind einfach 16 Zeichen Ihres Codes, wobei nicht druckbare Zeichen wie folgt geschrieben werden.
Anmerkungen
- Dies ist eine Herausforderung für Quines , daher gelten die Standard-Quine-Regeln .
- Und dies ist auch eine Code-Golf- Herausforderung, daher gelten Standard-Regelungslücken .
- Schreiben Sie, wie im zweiten Beispiel gezeigt, keine Bytes nach EOF, sondern verwenden Sie stattdessen Leerzeichen.
- Nachgestellte Leerzeichen sind in Ordnung.
- Inbuilts to Hex Dump, falls Sie eines in diesem speziellen Format haben, werden nicht gebannt, sondern verpönt.
- Nicht druckbare Zeichen beziehen sich auf alle Zeichen, die nur als ein einzelnes Byte dargestellt werden und nicht als einzelne Glyphen mit Abstand voneinander dargestellt werden können. Für UTF-8, bedeutet dies
0-31
,128-255
. Für die Jelly-Codepage gibt es keine nicht druckbaren Zeichen, da alle Zeichen als einzelne Glyphen dargestellt werden können.
xxd
es nicht lesen ?