Termina le schede contro la guerra spaziale
Pertanto, si è discusso molto sull'opportunità di utilizzare schede o spazi per indentare / formattare il codice. Puoi aiutare l'università a risolvere la controversia, adottando un metodo di formattazione unico incredibilmente pazzo .
Il tuo compito è scrivere un programma o una funzione completa che espanda tutte le schede in quattro spazi. Quindi sostituisce una sequenza di n spazi iniziali con "/ (n - due stelle qui) /". Riceverai input su più righe in qualsiasi formato ragionevole (array di stringhe a stringa singola per ogni nuova riga. Array a colonne ecc.)
Input del campione rubato senza vergogna . Si noti che poiché le schede si espandono automagicamente in quattro spazi su SE, lo rappresento come il carattere "^", ma è necessario gestire anche le schede (punto di codice 0x09). Tutti i caratteri "^" rappresentano una tabulazione.
Calculate the value 256 and test if it's zero
If the interpreter errors on overflow this is where it'll happen
++++++++[>++++++++<-]>[<++++>-]
+<[>-<
Not zero so multiply by 256 again to get 65536
[>++++<-]>[<++++++++>-]<[>++++++++<-]
+>[>
# Print "32"
++++++++++[>+++++<-]>+.-.[-]<
<[-]<->] <[>>
# Print "16"
+++++++[>+++++++<-]>.+++++.[-]<
<<-]] >[>
# Print "8"
++++++++[>+++++++<-]>.[-]<
<-]<
# Print " bit cells\n"
+++++++++++[>+++>+++++++++>+++++++++>+<<<<-]>-.>-.+++++++.+++++++++++.<.
>>.++.+++++++..<-.>>-
Clean up used cells.
[[-]<]l
^this is preceded by a tab
^^two tabs
^^^three tabs etcetera!
Uscita campione
Calculate the value 256 and test if it's zero
If the interpreter errors on overflow this is where it'll happen
++++++++[>++++++++<-]>[<++++>-]
+<[>-<
/**/Not zero so multiply by 256 again to get 65536
/**/[>++++<-]>[<++++++++>-]<[>++++++++<-]
/**/+>[>
/******/# Print "32"
/******/++++++++++[>+++++<-]>+.-.[-]<
/**/<[-]<->] <[>>
/******/# Print "16"
/******/+++++++[>+++++++<-]>.+++++.[-]<
<<-]] >[>
/**/# Print "8"
/**/++++++++[>+++++++<-]>.[-]<
<-]<
# Print " bit cells\n"
+++++++++++[>+++>+++++++++>+++++++++>+<<<<-]>-.>-.+++++++.+++++++++++.<.
>>.++.+++++++..<-.>>-
Clean up used cells.
[[-]<]l
/**/this is preceded by a tab
/******/two tabs
/**********/three tabs etcetera!
Poiché l'università ha bisogno di spazio per scaricare sia Vim che Emacs, ti è concesso pochissimo spazio di archiviazione per il tuo codice. Quindi questo è code-golf e vince il codice più corto. Si può presumere che l'input sia ben formato e che le linee con meno di quattro spazi (dopo la sostituzione delle schede) possano comportare un comportamento indefinito.
disconoscimento
Questa "eccellente" strategia di formattazione è stata gentilmente concessa da Geobits ed è riprodotta con il suo permesso. Nessun programmatore è stato danneggiato durante la produzione di questa sfida.
/*
, o può essere assunto come un "input ben formato"? Un file sorgente C ++ sarebbe stato un test migliore, perché il suo commento su più /* */
righe potrebbe spezzare alcune risposte che sostituiscono il primo e l'ultimo degli spazi iniziali con un /
, e quindi procedere con il riempimento degli spazi *
.
/* */
codice C ++, ma questa volta all'inizio della riga. Secondo le vostre specifiche dovrebbe essere lasciato così com'è. Qui la trappola è, e ha già individuato risposte sbagliate, che una regex come dire /\** /
usata per riempire quegli spazi tra // con asterischi trasformerebbe la linea in /***/
. Ho visto anche questa conversione /*//*/
. Presumo che entrambi siano errati.