Nhiệm vụ của bạn là triển khai một chương trình tương tự như nl
công cụ dòng lệnh từ các tiện ích lõi GNU.
Sơ hở tiêu chuẩn bị cấm.
Bạn không được sử dụng bất kỳ chức năng, chương trình hoặc tiện ích tích hợp hoặc bên ngoài nào để đánh số các dòng của tệp hoặc chuỗi, chẳng hạn như nl
chính nó hoặc =
lệnh trong GNU sed.
Sự chỉ rõ
Đầu vào
Chương trình chấp nhận tên tệp làm đối số. Mã của bạn không phải là đa nền tảng; định dạng tên tệp của HĐH chạy mã nên được sử dụng, tức là nếu bạn tình cờ ở trên Windows, dấu phân cách thư mục có thể \
hoặc /
.
Bạn phải có thể lấy 64 tệp đầu vào, bao gồm -
nếu nó được chỉ định. Nếu trên 64 được đưa ra, chỉ xử lý 64 đầu tiên.
Trong danh sách tên tệp, -
thể hiện đầu vào tiêu chuẩn.
Nếu tên tệp được đưa ra, hãy đọc từ các tệp theo thứ tự chúng được cung cấp và nối các nội dung của chúng, chèn một dòng mới giữa mỗi tệp và ở cuối. Nếu bạn không thể đọc từ một hoặc nhiều tên tệp (vì tệp không tồn tại hoặc bạn không có quyền đọc cho nó), hãy bỏ qua chúng. Nếu tất cả tên tệp được chỉ định là không hợp lệ, đầu ra không có gì.
Nếu không có tên tệp nào được đưa ra, hãy đọc từ đầu vào tiêu chuẩn. Chỉ đọc từ đầu vào tiêu chuẩn nếu không có tên tệp nào được đưa ra hoặc nếu -
được cung cấp.
Đầu ra
Chương trình sẽ đầu ra, để đầu ra tiêu chuẩn, đầu vào với dòng đánh số như vậy (Bạn có thể giả định rằng các đầu vào có \n
, \r\n
hoặc \r
kết thúc dòng; chọn nào thuận tiện cho bạn, nhưng xác định cái nào):
<5 spaces>1<tab><content of line 1 of input>
<5 spaces>2<tab><content of line 2 of input>
...
<4 spaces>10<tab><content of line 10 of input>
...
<3 spaces>100<tab><content of line 100 of input>
...
...
6 ký tự của không gian được phân bổ cho số dòng và nó được chèn vào cuối các ký tự này; phần còn lại trở thành không gian (ví dụ: 1
sẽ có 5 không gian hàng đầu, 22
sẽ có 4 không gian hàng đầu, ...). Nếu đầu vào đủ dài, cuối cùng bạn sẽ hết dung lượng cho số dòng, tại dòng 999999
. Bạn không được xuất bất cứ thứ gì sau dòng 999999.
Nếu đầu vào trống, đầu ra không có gì.
Trạng thái thoát
Các số thấp hơn được ưu tiên: nếu gặp lỗi 1 và 2, thoát với trạng thái 1.
Thoát với trạng thái 0 nếu đầu vào được nhận thành công và các dòng được đánh số và đầu ra thành công.
Thoát với trạng thái 1 nếu không tìm thấy một hoặc nhiều tệp được chỉ định trên dòng lệnh hoặc không thể đọc được.
Thoát với trạng thái 2 nếu có quá nhiều tệp (hơn 64) được đưa ra.
Thoát với trạng thái 3 nếu đầu vào quá dài (hơn 999999 dòng). \
Chấm điểm
Đây là mã golf - chương trình chiến thắng ngắn nhất!
Tôi có thể thêm tiền thưởng sau này để thực hiện các tùy chọn nhất định nl
có. Không có tiền thưởng tại thời điểm này.
prompt()
để mô phỏng chương trình args và stdin?