ARGV также доступен как $ *, что экономит два байта
Закуска
4
@ Снэк Хе-хе, игра в гольф с подсказками :)
AdmBorkBork
6
Используйте лямбду
Ответы, как правило, допускаются как лямбда-функции, а ваш ввод / вывод является параметрами / возвращаемым значением лямбда, так что вы можете сделать это:
->p,a,b{...}
Если бы вы присвоили это переменной, fто это будет называться как
f[p,a,b]
Как правило, хорошо также предполагать типы входов, но для большей безопасности вы можете упомянуть об этом в своем ответе.
Если по какой-то причине вам нужна полная программа с stdin / stdout io, самое короткое, что вы можете сделать, это использовать -nфлаг, чтобы сократить один вызов gets.to_ito eval$_:
p=eval$_
a=gets
b=gets.to_i
-nФлаг окружает ваш код с while gets ... end, так что цикл программа будет , если больше вход подается , чем ваша программа потребляет.
Ответы:
Используйте ARGV ($ *) и массовое назначение
(отказ от ответственности: я не знаю Ruby, но это работает на TIO )
2826 байт вместо 30 (спасибо Snack за указание на трюк $ *)источник
Используйте лямбду
Ответы, как правило, допускаются как лямбда-функции, а ваш ввод / вывод является параметрами / возвращаемым значением лямбда, так что вы можете сделать это:
->p,a,b{...}
Если бы вы присвоили это переменной,
f
то это будет называться какf[p,a,b]
Как правило, хорошо также предполагать типы входов, но для большей безопасности вы можете упомянуть об этом в своем ответе.
Соответствующий мета-пост о приемлемых методах ввода / вывода
источник
Если по какой-то причине вам нужна полная программа с stdin / stdout io, самое короткое, что вы можете сделать, это использовать
-n
флаг, чтобы сократить один вызовgets.to_i
toeval$_
:-n
Флаг окружает ваш код сwhile gets ... end
, так что цикл программа будет , если больше вход подается , чем ваша программа потребляет.источник