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 è
wcla 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' wcoutput 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 90con 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 wccomando nella tua risposta. Nel caso non fosse già ovvio.)
Casi di test ( \nrappresenta 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"