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