ความท้าทายนี้คล้ายกับของเก่าแต่มีบางส่วนที่ไม่ชัดเจนของสเป็คที่ใช้ค้อนทุบและข้อกำหนด I / O ที่เข้มงวดน้อยกว่า
เมื่อกำหนดอินพุตของสตริงที่ประกอบด้วย ASCII ที่พิมพ์ได้และบรรทัดใหม่เท่านั้นให้เอาต์พุตเมทริกต่างๆ (ไบต์, คำ, การนับบรรทัด)
เมทริกที่คุณต้องแสดงผลมีดังนี้:
จำนวนไบต์ เนื่องจากสตริงอินพุตยังคงอยู่ภายใน ASCII นี่จึงเป็นจำนวนอักขระ
การนับจำนวนคำ. นี่คือ
wc
คำจำกัดความของคำว่า "word:" ลำดับใด ๆ ของ non-whitespace ตัวอย่างเช่นabc,def"ghi"
"word" หนึ่งคำการนับบรรทัด นี่คือการอธิบายตนเอง อินพุตจะมีการขึ้นบรรทัดใหม่ที่ต่อท้ายเสมอซึ่งหมายความว่าการนับบรรทัดนั้นมีความหมายเหมือนกันกับ "การนับบรรทัดใหม่" จะไม่มีบรรทัดขึ้นต่อท้ายมากกว่าหนึ่งบรรทัด
เอาท์พุทจะต้องทำซ้ำwc
เอาท์พุทเริ่มต้น(ยกเว้นชื่อไฟล์):
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
โปรดทราบว่าการนับบรรทัดนั้นมาก่อนจากนั้นนับจำนวนคำและในที่สุดก็นับไบต์ นอกจากนี้การนับแต่ละรายการจะต้องมีเบาะด้านซ้ายด้วยช่องว่างเพื่อให้มีความกว้างเท่ากัน ในตัวอย่างข้างต้น5501
คือหมายเลข "ยาวที่สุด" ที่มี 4 หลักดังนั้นจึง165
มีเบาะหนึ่งช่องว่างและ90
สอง ในที่สุดตัวเลขทั้งหมดต้องรวมเข้าด้วยกันเป็นสตริงเดียวโดยมีช่องว่างระหว่างแต่ละหมายเลข
เนื่องจากนี่คือcode-golfรหัสที่สั้นที่สุดเป็นไบต์จะเป็นผู้ชนะ
(โอ้และโดยวิธี ... คุณไม่สามารถใช้wc
คำสั่งในคำตอบของคุณในกรณีที่ยังไม่ชัดเจน)
กรณีทดสอบ ( \n
หมายถึงการขึ้นบรรทัดใหม่คุณอาจต้องเลือกการขึ้นบรรทัดใหม่ที่ต่อท้ายเช่นกัน):
"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"