Consejos para rubí


13

¿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?


44
Bienvenido a PPCG!
Martin Ender

Para las personas que dirán que esto está fuera de tema, si quieres discutirlo, lee el meta y luego envíame un mensaje.
Stan Strum

Respuestas:


7

Use ARGV ($ *) y asignación masiva

(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 $ *)


También se puede acceder a ARGV como $ *, lo que ahorra dos bytes
Snack

44
@Snack Hehe, jugando al golf una respuesta de consejos :)
AdmBorkBork

6

Usa una lambda

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, fentonces 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


6

Si necesita un programa completo con stdin / stdout io por alguna razón, lo más breve que puede hacer es usar el -nindicador para acortar una llamada gets.to_ia eval$_:

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

La -nbandera 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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.