ARGV est également accessible en tant que $ *, ce qui permet d'économiser deux octets
Snack
4
@Snack Hehe, jouer au golf une réponse de conseils :)
AdmBorkBork
6
Utilisez un lambda
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, felle 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.
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' -nindicateur pour raccourcir un appel gets.to_ià eval$_:
p=eval$_
a=gets
b=gets.to_i
Le -ndrapeau 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.
Réponses:
Utiliser ARGV ($ *) et affectation en masse
(Avertissement: je ne connais pas Ruby, mais cela fonctionne sur TIO )
2826 octets au lieu de 30 (merci à Snack d'avoir souligné l'astuce $ *)la source
Utilisez un lambda
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 commef[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
la source
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 appelgets.to_i
àeval$_
:Le
-n
drapeau entoure votre codewhile gets ... end
, de sorte que le programme bouclera si plus d'entrée est fournie que votre programme n'en consomme.la source