Ruby için tavsiyeler


13

Nasıl kısaltabilirim:

p=gets.to_i
a=gets
b=gets.to_i

Girişim bir tamsayı, ardından bir dize ve bir tamsayı ise?


4
PPCG'ye Hoşgeldiniz!
Martin Ender

Bunun konu dışı olduğunu söyleyecek insanlar için, tartışmak isterseniz meta aracılığıyla okuyun ve bana mesaj atın.
Stan Strum

Yanıtlar:


7

ARGV ($ *) ve toplu atama kullanma

(sorumluluk reddi: Ruby'yi bilmiyorum, ama bu TIO'da çalışıyor )

p,a,b=$*
p=p.to_i
b=b.to_i

28 30 yerine 26 bayt ($ * numarasına işaret ettiği için Snack'e teşekkürler)


ARGV'ye iki bayt tasarruf sağlayan $ * olarak da erişilebilir
Snack

4
@Snack Hehe, golf ipuçları bir
golfçü

6

Bir lambda kullanın

Yanıtlara genellikle lambda işlevleri olarak giriş / çıkışınız lambda'nın parametreleri / dönüş değeri olarak izin verilir, böylece şunları yapabilirsiniz:

->p,a,b{...}

Bunu bir değişkene atadıysanız f,

f[p,a,b]

Girişlerin türlerini de varsaymak genellikle iyidir, ancak güvenli olmak için cevabınızdan bahsedebilirsiniz.

Kabul edilebilir giriş / çıkış yöntemleri hakkında ilgili meta yayın


6

Tam bir programa ihtiyacınız varsa ile Stdin / stdout'u io nedense, yapabileceğiniz en kısa kullanmaktır -nbir çağrı kısaltmak için bayrak gets.to_iiçin eval$_:

p=eval$_
a=gets
b=gets.to_i

-nBayrak kodunuzu çevreleyen while gets ... endfazla giriş program tükettiğinden verilir, program irade döngü böylece.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.