Dostęp do ARGV można również uzyskać jako $ *, co pozwala zaoszczędzić dwa bajty
Przekąska
4
@Snack Hehe, odpowiedź na wskazówki dotyczące gry w golfa :)
AdmBorkBork
6
Użyj lambda
Odpowiedzi są zazwyczaj dozwolone jako funkcje lambda, a dane wejściowe / wyjściowe są parametrami / zwracanymi wartościami lambda, więc możesz to zrobić:
->p,a,b{...}
Jeśli przypiszesz to zmiennej f, zostanie ona wywołana jako
f[p,a,b]
Zasadniczo można również przyjmować typy danych wejściowych, ale dla bezpieczeństwa można o tym wspomnieć w odpowiedzi.
Jeśli z jakiegoś powodu potrzebujesz pełnego programu ze stdin / stdout io, najkrótszą rzeczą, jaką możesz zrobić, to użyć -nflagi, aby skrócić jedno połączenie gets.to_iz eval$_:
p=eval$_
a=gets
b=gets.to_i
-nFlagę otacza swój kod z while gets ... endtak pętli program będzie bardziej jeśli wejście jest dostarczany niż swoimi zużywa programowych.
Odpowiedzi:
Użyj ARGV ($ *) i przydziału masy
(wyłączenie odpowiedzialności: Nie znam Ruby, ale działa na TIO )
2826 bajtów zamiast 30 (dzięki Snackowi za wskazanie sztuczki $ *)źródło
Użyj lambda
Odpowiedzi są zazwyczaj dozwolone jako funkcje lambda, a dane wejściowe / wyjściowe są parametrami / zwracanymi wartościami lambda, więc możesz to zrobić:
->p,a,b{...}
Jeśli przypiszesz to zmiennej
f
, zostanie ona wywołana jakof[p,a,b]
Zasadniczo można również przyjmować typy danych wejściowych, ale dla bezpieczeństwa można o tym wspomnieć w odpowiedzi.
Odpowiedni post na temat akceptowalnych metod wejścia / wyjścia
źródło
Jeśli z jakiegoś powodu potrzebujesz pełnego programu ze stdin / stdout io, najkrótszą rzeczą, jaką możesz zrobić, to użyć
-n
flagi, aby skrócić jedno połączeniegets.to_i
zeval$_
:-n
Flagę otacza swój kod zwhile gets ... end
tak pętli program będzie bardziej jeśli wejście jest dostarczany niż swoimi zużywa programowych.źródło