n は自然数とします。

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:kensaito No.1

回答回数163ベストアンサー獲得回数4

ポイント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

回答回数163ベストアンサー獲得回数4

ポイント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

回答回数283ベストアンサー獲得回数3

ポイント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

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

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

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

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

回答リクエストを送信したユーザーはいません