Thử thách này tương tự như thử thách cũ này , nhưng với một số phần không rõ ràng của thông số kỹ thuật được đưa ra và các yêu cầu I / O ít nghiêm ngặt hơn.
Đưa ra một đầu vào của một chuỗi chỉ bao gồm ASCII có thể in và các dòng mới, xuất ra các số liệu khác nhau của nó (byte, từ, số dòng).
Các số liệu mà bạn phải xuất ra như sau:
Số byte. Vì chuỗi đầu vào nằm trong ASCII, đây cũng là số ký tự.
Số từ. Đây là
wc
định nghĩa của một "từ:" bất kỳ chuỗi không khoảng trắng nào. Ví dụ:abc,def"ghi"
là một "từ".Số dòng. Điều này là tự giải thích. Đầu vào sẽ luôn chứa một dòng mới, có nghĩa là số dòng đồng nghĩa với "số dòng mới". Sẽ không bao giờ có nhiều hơn một dòng mới.
Đầu ra phải sao chép chính xác wc
đầu ra mặc định (ngoại trừ tên tệp):
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
Lưu ý rằng số dòng xuất hiện trước, sau đó đếm từ và cuối cùng là đếm byte. Hơn nữa, mỗi số phải được đệm trái với các khoảng trống sao cho chúng có cùng chiều rộng. Trong ví dụ trên, 5501
là số "dài nhất" có 4 chữ số, do đó, 165
được đệm bằng một khoảng trắng và 90
có hai. Cuối cùng, tất cả các số phải được nối thành một chuỗi có khoảng cách giữa mỗi số.
Vì đây là môn đánh gôn , mã ngắn nhất tính bằng byte sẽ thắng.
(Ồ, và nhân tiện ... bạn không thể sử dụng wc
lệnh trong câu trả lời của mình. Trong trường hợp điều đó chưa rõ ràng.)
Các trường hợp thử nghiệm ( \n
đại diện cho một dòng mới; bạn cũng có thể yêu cầu thêm một dòng mới theo dõi):
"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"