Tantangan ini mirip dengan yang lama ini , tetapi dengan beberapa bagian spesifikasi yang tidak jelas dipalu dan persyaratan I / O yang kurang ketat.
Diberikan input dari string yang hanya terdiri dari ASCII dan baris baru yang dapat dicetak, menampilkan berbagai metriknya (byte, kata, jumlah baris).
Metrik yang harus Anda keluarkan adalah sebagai berikut:
Hitungan Byte. Karena string input tetap berada dalam ASCII, ini juga merupakan jumlah karakter.
Jumlah kata. Ini adalah
wc
definisi dari "kata:" setiap urutan bukan spasi. Misalnya,abc,def"ghi"
adalah satu "kata."Jumlah baris. Ini cukup jelas. Input akan selalu berisi baris baru tambahan, yang berarti jumlah baris sama dengan "jumlah baris baru." Tidak akan ada lebih dari satu baris baru.
Output harus benar-benar mereplikasi wc
output default (kecuali untuk nama 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
Perhatikan bahwa jumlah baris lebih dulu, kemudian jumlah kata, dan akhirnya jumlah byte. Selanjutnya, setiap hitungan harus dibiarkan berlapis dengan spasi sedemikian sehingga semuanya memiliki lebar yang sama. Dalam contoh di atas, 5501
adalah angka "terpanjang" dengan 4 digit, jadi 165
diisi dengan satu spasi dan 90
dengan dua. Akhirnya, semua angka harus digabungkan menjadi satu string dengan spasi di antara setiap angka.
Karena ini adalah kode-golf , kode terpendek dalam byte akan menang.
(Oh, dan omong-omong ... Anda tidak dapat menggunakan wc
perintah dalam jawaban Anda. Seandainya itu belum jelas.)
Kasing uji ( \n
mewakili baris baru; Anda juga dapat juga memerlukan baris tambahan tambahan):
"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"