n は自然数とします。

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/10/10 08:18:42
  • 終了:--

回答(3件)

id:kensaito No.1

kensaito回答回数163ベストアンサー獲得回数42005/10/10 09:50:35

ポイント100pt

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

id:OkadaHiroshi

ありがとうございます。

2005/10/10 12:04:16
id:kensaito No.2

kensaito回答回数163ベストアンサー獲得回数42005/10/10 10:10:20

ポイント10pt

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です。

id:OkadaHiroshi

ありがとうございます。

2005/10/10 12:04:42
id:HOT No.3

HOT回答回数283ベストアンサー獲得回数32005/10/10 10:24:52

ポイント10pt

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


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

id:OkadaHiroshi

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

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

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

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

2005/10/10 12:10:20

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません