¿Cómo puedo acortar:
p=gets.to_i
a=gets
b=gets.to_i
Si mi entrada es un entero, seguido de una cadena, seguido de un entero?
¿Cómo puedo acortar:
p=gets.to_i
a=gets
b=gets.to_i
Si mi entrada es un entero, seguido de una cadena, seguido de un entero?
Respuestas:
(descargo de responsabilidad: no conozco a Ruby, pero esto funciona en TIO )
p,a,b=$*
p=p.to_i
b=b.to_i
28 26 bytes en lugar de 30 (gracias a Snack por señalar el truco de $ *)
Las respuestas generalmente se permiten como funciones lambda con su entrada / salida como los parámetros / valor de retorno de la lambda, por lo que puede hacer esto:
->p,a,b{...}
Si asignó esto a una variable, f
entonces se llamaría como
f[p,a,b]
En general, también está bien asumir los tipos de las entradas, pero para estar seguro, puede mencionarlo en su respuesta.
Meta publicación relevante sobre métodos de entrada / salida aceptables
Si necesita un programa completo con stdin / stdout io por alguna razón, lo más breve que puede hacer es usar el -n
indicador para acortar una llamada gets.to_i
a eval$_
:
p=eval$_
a=gets
b=gets.to_i
La -n
bandera rodea su código while gets ... end
, por lo que el programa se repetirá si se proporciona más entrada de la que consume su programa.