Comment puis-je raccourcir:
p=gets.to_i
a=gets
b=gets.to_i
Si mon entrée est un entier, suivi d'une chaîne, suivi d'un entier?
Comment puis-je raccourcir:
p=gets.to_i
a=gets
b=gets.to_i
Si mon entrée est un entier, suivi d'une chaîne, suivi d'un entier?
Réponses:
(Avertissement: je ne connais pas Ruby, mais cela fonctionne sur TIO )
p,a,b=$*
p=p.to_i
b=b.to_i
28 26 octets au lieu de 30 (merci à Snack d'avoir souligné l'astuce $ *)
Les réponses sont généralement autorisées en tant que fonctions lambda, votre entrée / sortie étant les paramètres / valeur de retour du lambda, vous pouvez donc le faire:
->p,a,b{...}
Si vous l'attribuez à une variable, f
elle sera appelée comme
f[p,a,b]
Il est généralement bien de supposer également les types d'entrées, mais pour être sûr, vous pouvez le mentionner dans votre réponse.
Meta post pertinent sur les méthodes d'entrée / sortie acceptables
Si vous avez besoin d'un programme complet avec stdin / stdout io pour une raison quelconque, le plus court que vous pouvez faire est d'utiliser l' -n
indicateur pour raccourcir un appel gets.to_i
à eval$_
:
p=eval$_
a=gets
b=gets.to_i
Le -n
drapeau entoure votre code while gets ... end
, de sorte que le programme bouclera si plus d'entrée est fournie que votre programme n'en consomme.