Jak mogę skrócić:
p=gets.to_i
a=gets
b=gets.to_i
Jeśli moje dane wejściowe to liczba całkowita, po której następuje ciąg znaków, a po nim liczba całkowita?
Jak mogę skrócić:
p=gets.to_i
a=gets
b=gets.to_i
Jeśli moje dane wejściowe to liczba całkowita, po której następuje ciąg znaków, a po nim liczba całkowita?
Odpowiedzi:
(wyłączenie odpowiedzialności: Nie znam Ruby, ale działa na TIO )
p,a,b=$*
p=p.to_i
b=b.to_i
28 26 bajtów zamiast 30 (dzięki Snackowi za wskazanie sztuczki $ *)
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.
Odpowiedni post na temat akceptowalnych metod wejścia / wyjścia
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łączenie gets.to_i
z eval$_
:
p=eval$_
a=gets
b=gets.to_i
-n
Flagę otacza swój kod z while gets ... end
tak pętli program będzie bardziej jeśli wejście jest dostarczany niż swoimi zużywa programowych.