ルビーへのアドバイス


13

どのように短縮できますか:

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

入力が整数で、その後に文字列が続き、その後に整数が続く場合


4
PPCGへようこそ!
マーティンエンダー

これが話題外であると言う人々のために、あなたがそれを議論したいなら、メタを読んで、それから私にメッセージを送ってください。
スタンストラム

回答:


7

ARGV($ *)と一括割り当てを使用する

(免責事項:Rubyを知りませんが、これはTIOで動作します

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

28 30バイトではなく26バイト($ *トリックを指摘してくれたSnackに感謝)


ARGVは、2バイトを節約する$ *としてアクセスすることもできます
スナック

4
@Snack Hehe、ゴルフのヒントの答え:)
AdmBorkBork

6

ラムダを使用する

回答は通常、入力/出力がラムダのパラメーター/戻り値であるラムダ関数として許可されているため、これを行うことができます。

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

これを変数に割り当てた場合、次のfように呼び出されます。

f[p,a,b]

入力のタイプも想定するのが一般的には問題ありませんが、安全のために、回答でそれを言及することができます。

許容される入力/出力メソッドに関する関連メタ投稿


6

何らかの理由でstdin / stdout ioを使用した完全なプログラムが必要な場合、できる限り-n短くするために、フラグを使用して1回の呼び出しを短縮しgets.to_ieval$_ください:

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

-nフラグはでコードを囲み、while gets ... end複数の入力は、あなたのプログラムが消費よりも供給されている場合、そのプログラムがループ。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.