Saya telah berpartisipasi dalam sejumlah tantangan kode PHP golf baru-baru ini dan beberapa teknik yang digunakan untuk membaca data dari file seperti fopen()
dan fread()
atau file_get_contents()
benar - benar memberikan pemukulan kode saya pada hitungan char. Terutama metode yang disediakan untuk membaca di input baris perintah.
Pertanyaan saya adalah, apa cara tercepat (paling tidak menekan tombol) untuk membaca dan menulis ke isi file, dan apa cara tercepat (paling tidak menekan tombol) untuk membaca baris dari prompt?
(Catatan: Karena ini golf kode, saya tidak bisa menggunakan perpustakaan eksternal.)
sumber
Bergantung pada format input, fgetcsv dan fscanf juga dapat menjadi byte saver.
Misalnya, anggap setiap baris input Anda terdiri dari dua bilangan bulat yang dipisahkan spasi. Untuk membaca nilai-nilai ini ke dalam array, Anda bisa menggunakan salah satu dari:
Atau jika Anda ingin membacanya masing-masing ke dalam variabel yang berbeda:
sumber
Untuk membaca file non-fisik (baca input)
Jika Anda memiliki satu input baris, gunakan
-F
dan$argn
baca dari STDIN. Ini hanya 5 byte dan jauh lebih pendek dari metode lain.Contoh: Coba online!
Pada dasarnya
-F
jalankan kode Anda sekali untuk setiap baris input dan isi$argn
dengan string dari baris input tersebut. Informasi lebih lanjut: https://www.php.net/manual/en/features.commandline.options.phpJika Anda memiliki input multi jalur, gunakan
$argv
.$argv
adalah array yang dimulai dari indeks1
berisi semua argumen yang Anda berikan ke kode Anda. Jadi Anda bisa menggunakan$argv[1]
dan sebagainya, yang hanya 8 byte. Anda juga dapat melewati beberapa argumen dan mengulanginya denganfor(;$a=$argv[++$i];)
yang biasanya lebih pendek dari metode lain.Contoh 1: Cobalah online!
Contoh 2: Cobalah secara online!
Informasi lebih lanjut: https://www.php.net/manual/en/reserved.variables.argv.php
sumber