Bu zorluk bu eskisine benziyor , ancak spekülasyonun belirsiz kısımları dövülmüş ve daha az katı G / Ç gereklilikleri var.
Yalnızca yazdırılabilir ASCII ve yeni satırlardan oluşan bir dizgenin girişi göz önüne alındığında, çeşitli metrikleri (bayt, sözcük, satır sayısı) çıktılar.
Çıkmanız gereken metrikler aşağıdaki gibidir:
Bayt sayısı Giriş dizesi ASCII içinde kaldığından, bu aynı zamanda karakter sayımıdır.
Sözcük sayısı. Bu,
wc
bir "kelimenin:" tanımı, boşluk olmayan herhangi bir dizilimdir. Örneğinabc,def"ghi"
, bir "kelime" dir.Satır sayısı Bu kendi kendini açıklayıcı. Girdi her zaman sonunda yeni bir satır içerecektir, bu da satır sayısının "yeni satır sayımı" ile eşanlamlı olduğu anlamına gelir. Asla tek bir son hattan daha fazlası olmayacak.
Çıktı tam olarak varsayılan wc
çıktıyı çoğaltmalıdır (dosya adı hariç):
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
Satır sayısı önce gelir sonra sözcük sayımı ve son olarak bayt sayılır. Ayrıca, her sayım, hepsi aynı genişlikte olacak şekilde boşluklarla bırakılmalıdır. Yukarıdaki örnekte, 5501
4 basamaklı "en uzun" sayıdır, 165
bir boşlukla ve 90
iki boşlukla doldurulur . Son olarak, sayıların tümü, her sayı arasında boşluk olan tek bir dizgede birleştirilmelidir.
Bu kod golf olduğundan, bayttaki en kısa kod kazanır.
(Oh, ve bu arada ... wc
cevabınızdaki komutu kullanamazsınız . Açıkçası bu durumda değildi.)
Test durumları ( \n
yeni bir satırı temsil eder; isteğe bağlı olarak ayrıca sondaki bir yeni satırı da isteyebilirsiniz):
"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"