Bayangkan file teks di mana setiap record csv mungkin memiliki jumlah bidang yang berbeda. Tugasnya adalah menulis kode untuk menampilkan berapa banyak bidang yang ada di setiap catatan file. Anda dapat menganggap tidak ada baris tajuk dalam file dan dapat membaca dari file atau input standar, seperti yang Anda pilih.
Anda dapat mengasumsikan versi rfc4180 untuk aturan csv yang akan saya jelaskan di bawah ini untuk definisi setiap baris file. Berikut ini adalah versi ringan dari bagian yang relevan dari spesifikasi:
Definisi Format CSV
Setiap catatan terletak pada jalur yang terpisah, dibatasi oleh pemutusan jalur (CRLF). Sebagai contoh:
aaa,bbb,ccc CRLF zzz,yyy,xxx CRLF
Catatan terakhir dalam file mungkin atau mungkin tidak memiliki jeda baris akhir. Sebagai contoh:
aaa,bbb,ccc CRLF zzz,yyy,xxx
(Aturan 3. tidak berlaku dalam tantangan ini)
Dalam setiap catatan, mungkin ada satu atau lebih bidang, dipisahkan dengan koma. Spasi dianggap sebagai bagian dari bidang dan tidak boleh diabaikan.
Setiap bidang mungkin atau mungkin tidak dilampirkan dalam tanda kutip ganda. Jika bidang tidak disertai dengan tanda kutip ganda, maka tanda kutip ganda mungkin tidak muncul di dalam bidang. Sebagai contoh:
"aaa","bbb","ccc" CRLF zzz,yyy,xxx
Bidang yang berisi penghentian baris (CRLF), tanda kutip ganda, dan koma harus dilampirkan dalam tanda kutip ganda. Sebagai contoh:
"aaa","b CRLF bb","ccc" CRLF zzz,yyy,xxx
Jika tanda kutip ganda digunakan untuk menyertakan bidang, maka tanda kutip ganda yang muncul di dalam bidang harus diloloskan dengan mendahului dengan tanda kutip ganda lainnya. Sebagai contoh:
"aaa","b""bb","ccc"
Contoh
Memasukkan:
,"Hello, World!"
"aaa","b""bb","ccc"
zzz,yyy,
"aaa","b
bb","ccc","fish",""
Harus memberikan output:
2, 3, 3, 5
Anda dapat memberikan nilai output dengan cara apa pun yang menurut Anda paling nyaman.
Perpustakaan
Anda dapat menggunakan perpustakaan apa pun yang Anda suka.
Sejauh ini jawaban yang luar biasa tetapi kami kehilangan jawaban baris perintah / bash yang akan sangat keren.
R , 40 byte
Cobalah online!
Per dokumentasi dari
count.fields
, bidang dengan jeda baris mendapatkan hitungan bidang NA untuk garis awal, jadi kami menyaring mereka keluar.sumber
JavaScript (ES2018),
4259 byteTampilkan cuplikan kode
sumber
s
bendera pada regex. Bukan berarti itu penting ;-) Dan penggunaannya bagus, btw!Jelly , 12 byte
Port jawaban Stax rekursif - pergi berikan kredit!
Cobalah online!
Bagaimana?
Mungkin Anda lebih suka
ṣ”"m2ẎỴċ€”,‘
-Ẏ
kencangkan danċ€
hitung koma di masing-masing.sumber
Python, 63 byte
Mengembalikan output dalam
map
objek yang dapat diubah .sumber
lambda
fungsi Anda bisa mendapatkan ini hingga 54 byteBahasa Wolfram (Mathematica) , 30 byte
Cobalah online!
sumber
Perl 5 .10.0,
5553 byteCobalah online!
Penjelasan:
sumber
Java 10, 101 byte
Cobalah online.
Penjelasan:
sumber
Jelly , 17 byte
Cobalah online!
-1 terima kasih kepada Jonathan Allan . duh duh duh ...
sumber