Tugas Anda adalah mengimplementasikan program yang mirip dengan nl
alat baris perintah dari utilitas inti GNU.
Celah standar dilarang.
Anda tidak boleh menggunakan fungsi, program, atau utilitas internal atau internal apa saja untuk memberi penomoran pada baris file atau string, seperti nl
itu sendiri atau =
perintah dalam GNU sed.
Spesifikasi
Memasukkan
Program menerima nama file sebagai argumen. Kode Anda tidak harus cross-platform; format nama file OS yang menjalankan kode harus digunakan, yaitu jika Anda kebetulan menggunakan Windows, pemisah direktori bisa \
atau /
.
Anda harus dapat mengambil 64 file input, termasuk -
jika ditentukan. Jika lebih dari 64 diberikan, hanya menangani 64 yang pertama.
Dalam daftar nama file, -
merupakan input standar.
Jika nama file diberikan, baca dari file sesuai urutannya dan gabungkan isinya, masukkan baris baru antara masing-masing dan di akhir. Jika Anda tidak dapat membaca dari satu atau beberapa nama file (karena file tersebut tidak ada atau Anda tidak memiliki izin untuk membacanya), abaikan saja. Jika semua nama file yang ditentukan tidak valid, tidak menghasilkan apa-apa.
Jika tidak ada nama file yang diberikan, baca dari input standar. Hanya baca dari input standar jika tidak ada nama file yang diberikan atau jika -
diberikan.
Keluaran
Program akan menampilkan, ke keluaran standar, input dengan garis-garis yang diberi nomor demikian (Anda dapat mengasumsikan bahwa input tersebut memiliki \n
, \r\n
atau \r
ujung garis; pilih mana yang sesuai untuk Anda, tetapi tentukan yang mana):
<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 karakter ruang dialokasikan untuk nomor baris, dan itu dimasukkan di akhir karakter ini; sisanya menjadi spasi (mis. 1
akan memiliki 5 ruang utama, 22
akan memiliki 4 ruang utama, ...). Jika input cukup panjang, Anda pada akhirnya akan kehabisan ruang untuk nomor baris, pada baris 999999
. Anda tidak boleh mengeluarkan apa pun setelah baris 999999.
Jika input kosong, tidak menghasilkan apa-apa.
Status keluar
Angka yang lebih rendah diprioritaskan: jika kesalahan 1 dan 2 ditemukan, keluar dengan status 1.
Keluar dengan status 0 jika input berhasil diterima, dan garis-garis berhasil diberi nomor dan keluaran.
Keluar dengan status 1 jika satu atau lebih file yang ditentukan pada baris perintah tidak ditemukan atau tidak dapat dibaca.
Keluar dengan status 2 jika terlalu banyak file (lebih dari 64) diberikan.
Keluar dengan status 3 jika inputnya terlalu panjang (lebih dari 999999 baris). \
Mencetak gol
Ini adalah kode-golf - program menang tercepat!
Saya dapat menambahkan bonus nanti untuk menerapkan opsi tertentu yang nl
dimiliki. Tidak ada bonus saat ini.
prompt()
untuk meniru program args dan stdin?