Bagaimana saya bisa mempersingkat:
p=gets.to_i
a=gets
b=gets.to_i
Jika input saya adalah integer, diikuti oleh string, diikuti oleh integer?
Bagaimana saya bisa mempersingkat:
p=gets.to_i
a=gets
b=gets.to_i
Jika input saya adalah integer, diikuti oleh string, diikuti oleh integer?
Jawaban:
(penafian: Saya tidak tahu Ruby, tetapi ini bekerja pada TIO )
p,a,b=$*
p=p.to_i
b=b.to_i
28 26 byte, bukan 30 (terima kasih kepada Snack untuk menunjukkan trik $ *)
Jawaban biasanya diizinkan sebagai fungsi lambda dengan input / output Anda menjadi parameter / nilai pengembalian lambda, sehingga Anda dapat melakukan ini:
->p,a,b{...}
Jika Anda menetapkan ini ke variabel f
maka itu akan disebut sebagai
f[p,a,b]
Biasanya tidak masalah untuk mengasumsikan jenis input juga, tetapi untuk amannya Anda dapat menyebutkannya dalam jawaban Anda.
Meta post yang relevan tentang metode input / output yang dapat diterima
Jika Anda memerlukan program lengkap dengan stdin / stdout io karena alasan tertentu, yang terpendek yang dapat Anda lakukan adalah menggunakan -n
bendera untuk mempersingkat satu panggilan gets.to_i
ke eval$_
:
p=eval$_
a=gets
b=gets.to_i
The -n
bendera mengelilingi kode Anda dengan while gets ... end
, sehingga program akan loop jika lebih masukan disuplai dari mengkonsumsi program anda.