All'inizio di questa settimana, abbiamo imparato come formattare le lingue esoteriche per i commenti. Oggi faremo il contrario. Ho bisogno che tu scriva un programma o una funzione che analizzi un codice esoterico ben commentato e analizzi i commenti, restituendo solo il codice. Utilizzando alcuni esempi della sfida precedente, ecco come appare un codice ben commentato:
a #Explanation of what 'a' does
bc #Bc
d #d
e #Explanation of e
fgh #foobar
ij #hello world
k #etc.
l #so on
mn #and
op #so forth
Ecco cosa devi fare per estrarre il codice. Innanzitutto, rimuovi il carattere di commento ( #
), lo spazio prima di esso e tutto dopo il carattere di commento.
a
bc
d
e
fgh
ij
k
l
mn
op
Quindi, comprimi ciascuna riga verso l'alto in una singola riga. Ad esempio, poiché si b
trova nella seconda colonna della riga due, una volta compresso, sarà nella seconda colonna della riga uno . Allo stesso modo, c
verrà inserito nella terza colonna della riga uno e d
verrà inserito nella quarta. Ripeti questo per ogni personaggio e ottieni questo:
abcdefghijklmnop
Nota importante: sembra che la banale soluzione sia semplicemente rimuovere i commenti, rimuovere ogni spazio e unire ogni riga. Questo non è un approccio valido! Poiché il codice originale potrebbe contenere spazi, questi verranno eliminati con questo approccio. Ad esempio, questo è un input perfettamente valido:
hello #Line one
#Line two
world! #Line three
E l'output corrispondente dovrebbe essere:
hello world!
La sfida:
Scrivi un programma o una funzione che accetta il codice commentato come input e genera o restituisce il codice con tutti i commenti analizzati. È necessario generare il codice senza spazi finali, sebbene sia consentita una nuova riga finale. Il carattere del commento sarà sempre #
e ci sarà sempre uno spazio extra prima dell'inizio dei commenti. #
sarà non visualizzato nella sezione commento dell'ingresso. Per semplificare la sfida, ecco alcuni input che non devi gestire:
Puoi presumere che il codice non avrà due caratteri nella stessa colonna. Ad esempio, questo è un input che viola questa regola:
a #A character in column one bc #Characters in columns one and two
Puoi anche supporre che tutti i caratteri di commento vengano visualizzati nella stessa colonna. Ad esempio, questo input:
short #this is a short line long #This is a long line
viola questa regola. Questo significa anche che
#
non sarà nella sezione del codice.Infine, non è necessario gestire sezioni di codice con spazi iniziali o finali. Per esempio,
Hello, # World! #
Si può anche supporre che l'input contenga solo caratteri ASCII stampabili.
Esempi:
Input:
hello #Line one
#Line two
world! #Line three
Output:
hello world!
Input:
E #This comment intentionally left blank
ac #
h s #
ecti #
on is #
one c #
haracte #
r longer #
than the #
last! #
Output:
Each section is one character longer than the last!
Input:
4 #This number is 7
8 #
15 #That last comment is wrong.
16 #
23 #
42 #
Output:
4815162342
Input:
Hello #Comment 1
world #Comment 2
, #Comment 3
how #Comment 4
are #Comment 5
you? #Comment 6
Output:
Hello world, how are you?
Input:
Prepare #
for... #
extra spaces! #
Output:
Prepare for... extra spaces!
Puoi inserire input in qualsiasi formato ragionevole che ti piace, ad esempio un elenco di stringhe, una singola stringa con newline, un secondo elenco di caratteri, ecc. Vince la risposta più breve in byte!
hello world!
che hai mostrato)? Inoltre, dichiari: " #
non verrà visualizzato nella sezione dei commenti dell'input ", ma può verificarsi nello snippet di codice stesso?
do {stuff} while (condition);
con la spiegazione in ordine do while (condition); #Explainything
quindi {stuff} #Explainything
.