Rat für Rubin


13

Wie kann ich kürzen:

p=gets.to_i
a=gets
b=gets.to_i

Wenn meine Eingabe eine Ganzzahl ist, gefolgt von einer Zeichenfolge, gefolgt von einer Ganzzahl?


4
Willkommen bei PPCG!
Martin Ender

Für die Leute, die sagen werden, dass dies kein Thema ist, lesen Sie Meta durch und schreiben Sie mir dann eine Nachricht.
Stan Strum

Antworten:


7

Verwenden Sie ARGV ($ *) und Massenzuweisung

(Haftungsausschluss: Ich kenne Ruby nicht, aber das funktioniert mit TIO )

p,a,b=$*
p=p.to_i
b=b.to_i

28 26 Bytes statt 30 (danke an Snack für den Hinweis auf den $ * Trick)


Auf ARGV kann auch mit $ * zugegriffen werden, wodurch zwei Bytes gespart werden
Snack

4
@ Snack Hehe, Golf ein Tipps beantworten :)
AdmBorkBork

6

Verwenden Sie ein Lambda

Antworten sind normalerweise als Lambda-Funktionen zulässig, wobei Ihre Eingabe / Ausgabe die Parameter / Rückgabewerte des Lambdas sind.

->p,a,b{...}

Wenn Sie dies einer Variablen zuweisen, wird fsie als aufgerufen

f[p,a,b]

Es ist im Allgemeinen in Ordnung, auch die Arten der Eingaben anzunehmen, aber um sicherzugehen, können Sie dies in Ihrer Antwort erwähnen.

Relevanter Metapost über akzeptable Eingabe- / Ausgabemethoden


6

Wenn Sie aus irgendeinem Grund ein vollständiges Programm mit stdin / stdout io benötigen, können Sie mit dem -nFlag in kürzester Zeit einen Aufruf von gets.to_ian verkürzen eval$_:

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

Das -nFlag umgibt Ihren Code mit while gets ... end, sodass das Programm eine Schleife ausführt, wenn mehr Eingaben bereitgestellt werden, als Ihr Programm verbraucht.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.