人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

n は自然数とします。
for( i=-n; i<=n; i+=2){
アブラカダブラ
}
という構造を Ruby で
i = - n
while i <= n do
アブラカダブラ
i += 2
end
と書くよりスマートに(可読性も含めて)記述する方法をご存じでしたら教えてください。

●質問者: hiroshi
●カテゴリ:コンピュータ
✍キーワード:Ruby アブラ スマート 構造 自然数
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● kensaito
●100ポイント

http://www.ruby-lang.org/ja/man/?cmd=view;name=Numeric

Rubyリファレンスマニュアル - Numeric

Numericクラスにある step メソッドを使います。

実行例です:

irb(main):003:0> 0.step(10, 2) {|i| p i}

0

2

4

6

8

10

◎質問者からの返答

ありがとうございます。


2 ● kensaito
●10ポイント

http://www.hatena.ne.jp/1128899922

人力検索はてな - n は自然数とします。 for( i=-n; i<=n; i+=2){ アブラカダブラ } という構造を Ruby で i = - n while i <= n do アブラカダブラ i += 2 end と書くよりスマートに..

あっ、実行例が適切じゃなかったです。

質問の例で実行した場合です。

irb(main):001:0> n=4

=> 4

irb(main):002:0> (-n).step(n,2) {|i| p i}

-4

-2

0

2

4

=> -4

実行したバージョンは、1.8.2です。

◎質問者からの返答

ありがとうございます。


3 ● HOT
●10ポイント

http://www.hatena.ne.jp/1128899922#

人力検索はてな - n は自然数とします。 for( i=-n; i<=n; i+=2){ アブラカダブラ } という構造を Ruby で i = - n while i <= n do アブラカダブラ i += 2 end と書くよりスマートに..

n=10

x=2

for i in -n..n

next unless (i%x)==0

puts i

end


こんな感じでは、どうでしょうか。

◎質問者からの返答

僕としては、while を使った方が未だ可読性が高いと思います。

ありがとうございました。

1,2 番の方法で満足しましたので、質問は終了とさせていただきます。

Ruby は2年ほど使っていましたが、知りませんでした、聞いてみるもんですね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ