Consigli per il rubino


13

Come accorciare:

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

Se il mio input è un numero intero, seguito da una stringa, seguito da un numero intero?


4
Benvenuti in PPCG!
Martin Ender,

Per le persone che diranno che questo è fuori tema, se vuoi discuterne, leggi meta e poi inviami un messaggio.
Stan Strum,

Risposte:


7

Usa ARGV ($ *) e assegnazione di massa

(dichiarazione di non responsabilità: non conosco Ruby, ma funziona su TIO )

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

28 26 byte anziché 30 (grazie a Snack per aver sottolineato il trucco $ *)


È possibile accedere ad ARGV come $ * che consente di risparmiare due byte
Snack,

4
@Snack Hehe, il golf risponde a una
mancia

6

Usa una lambda

Le risposte sono in genere consentite come funzioni lambda con input / output come parametri / valore di ritorno di lambda, quindi puoi farlo:

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

Se lo si assegnasse a una variabile f, verrà chiamato come

f[p,a,b]

In genere va bene assumere anche i tipi di input, ma per sicurezza puoi menzionarlo nella tua risposta.

Meta post rilevanti sui metodi di input / output accettabili


6

Se hai bisogno di un programma completo con stdin / stdout io per qualche motivo, il più breve che puoi fare è usare il -nflag per abbreviare una chiamata gets.to_ia eval$_:

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

Il -nflag circonda il tuo codice while gets ... end, quindi il programma eseguirà il ciclo se viene fornito più input di quello che il programma consuma.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.