Поради щодо рубіну


13

Як я можу скоротити:

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

Якщо моє введення - це ціле число, за ним - рядок, а за ним - ціле число?


4
Ласкаво просимо до PPCG!
Мартін Ендер

Для людей, які скажуть, що це поза темою, якщо ви хочете сперечатися, прочитайте мета, а потім надішліть мені повідомлення.
Стен Струм

Відповіді:


7

Використовуйте ARGV ($ *) та масове призначення

(відмова: Я не знаю Рубі, але це працює на TIO )

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

28 26 байт замість 30 (спасибі Snack за вказівку $ * трюку)


До ARGV можна також отримати $ *, що заощаджує два байти
Snack

4
@Snack Hehe, відповідь про гольф відповідь :)
AdmBorkBork

6

Використовуйте лямбда

Відповіді, як правило, дозволяються як функції лямбда, вхід / вивід яких є параметрами / значенням повернення лямбда, тому ви можете це зробити:

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

Якщо ви призначили цю змінну, fвона буде називатися як

f[p,a,b]

Зазвичай чудово вважати і типи вхідних даних, але для безпечності ви можете згадати це у своїй відповіді.

Відповідне мета-повідомлення про прийнятні методи введення / виводу


6

Якщо вам потрібна повна програма зі stdin / stdout io з якоїсь причини, найкоротшим ви можете це скористатися -nпрапором, щоб скоротити один дзвінок gets.to_iна eval$_:

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

-nПрапор оточує ваш код з while gets ... end, так що цикл програма буде , якщо більше вхід подається , ніж ваша програма споживає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.