Questa sfida è simile a questa vecchia , ma con alcune parti poco chiare delle specifiche eliminate e requisiti di I / O meno rigidi.
Dato un input di una stringa composta solo da ASCII e newline stampabili, emette le sue varie metriche (byte, word, line count).
Le metriche che devi produrre sono le seguenti:
Conteggio byte. Poiché la stringa di input rimane all'interno di ASCII, questo è anche il conteggio dei caratteri.
Conteggio parole. Questa è
wc
la definizione di "parola:" qualsiasi sequenza di spazi non bianchi. Ad esempio,abc,def"ghi"
è una "parola".Conteggio righe. Questo si spiega da sé. L'input conterrà sempre una nuova riga finale, il che significa che il conteggio delle linee è sinonimo di "conteggio nuove righe". Non ci sarà mai più di una sola nuova riga finale.
L'output deve replicare esattamente l' wc
output predefinito (ad eccezione del nome del file):
llama@llama:~$ cat /dev/urandom | tr -cd 'A-Za-z \n' | head -90 > example.txt
llama@llama:~$ wc example.txt
90 165 5501 example.txt
Si noti che il conteggio delle righe viene prima, quindi conteggio delle parole e infine conteggio dei byte. Inoltre, ogni conteggio deve essere imbottito a sinistra con spazi tali da avere tutti la stessa larghezza. Nell'esempio sopra, 5501
è il numero "più lungo" con 4 cifre, quindi 165
è riempito con uno spazio e 90
con due. Infine, tutti i numeri devono essere uniti in un'unica stringa con uno spazio tra ciascun numero.
Dato che si tratta di code-golf , vincerà il codice più breve in byte.
(Oh, e comunque ... non puoi usare il wc
comando nella tua risposta. Nel caso non fosse già ovvio.)
Casi di test ( \n
rappresenta una nuova riga; potresti facoltativamente richiedere anche una nuova riga finale):
"a b c d\n" -> "1 4 8"
"a b c d e f\n" -> " 1 6 12"
" a b c d e f \n" -> " 1 6 16"
"a\nb\nc\nd\n" -> "4 4 8"
"a\n\n\nb\nc\nd\n" -> " 6 4 10"
"abc123{}[]()...\n" -> " 1 1 16
"\n" -> "1 0 1"
" \n" -> "1 0 4"
"\n\n\n\n\n" -> "5 0 5"
"\n\n\na\nb\n" -> "5 2 7"