Durante il gioco del codice ci saranno momenti in cui hai bisogno di un dump esadecimale del tuo codice, di solito perché hai usato caratteri non stampabili. Quindi, perché non creare un programma che Hex Dumps stesso?
La sfida
Questa sfida è, dato nessun input, produrre un dump esadecimale del codice sorgente nella seguente formattazione:
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 ................
O, ad esempio, se il tuo programma lo era 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)
specifiche
Il dump esadecimale è suddiviso in righe di tre parti, ciascuna delle quali rappresenta 16 byte del codice sorgente.
La prima parte è l'indirizzo di memoria. Specifica dove inizia la riga corrente nel codice. Scritto come un numero esadecimale di 2 byte, seguito da un :
, quindi da uno spazio.
Il secondo, è lo stesso Hex Dump. Sono 16 byte del codice sorgente, scritti in forma esadecimale separati da spazi. Questa dovrebbe essere una rappresentazione in byte accurata usando la codifica del codice.
Infine, dopo uno spazio vuoto di due, è il codice stesso. Questo è semplicemente 16 caratteri del tuo codice, con caratteri non stampabili scritti come.
Appunti
- Questo è un Quine sfida, quindi Regole Quine standard si applicano.
- E questa è anche una sfida al golf del codice , quindi si applicano le scappatoie standard .
- Come mostrato nel secondo esempio, non scrivere byte dopo EOF, utilizzare invece gli spazi bianchi.
- Lo spazio bianco finale va bene.
- Gli incorporati alla discarica esadecimale, se ti capita di averne uno in questo formato specifico, non sono vietati ma sono disapprovati.
- I caratteri non stampabili si riferiscono a qualsiasi carattere che, rappresentato come un solo byte, non può essere rappresentato come un glifo a spaziatura singola. Per UTF-8, questo mezzo
0-31
,128-255
. Per la Jelly Codepage , poiché tutti i personaggi possono essere rappresentati come un glifo a spaziatura singola, non ci sono caratteri non stampabili.
xxd
vero?