2

私はこの問題で立ち往生しています。Rubyで解決してみました。

私の答えは

4.times{|i| puts "#{i}"} && 5.upon(7){|i| puts "#{i}}

しかし、それが正しいかどうかはわかりません。

4

2 に答える 2

5

これはあなたのために働くはずです

result = (0..3).to_a.product((5..7).to_a)
puts result.inspect
#=> [[0, 5], [0, 6], [0, 7], [1, 5], [1, 6], [1, 7], [2, 5], [2, 6], [2, 7], [3, 5], [3, 6], [3, 7]]
于 2012-11-21T05:23:07.610 に答える
2

それが正しいかどうかわからない

通常、このような場合、コードを実行しようとします。そうすれば、引用符が欠落していること、Fixnum#upon(実行uptoしたはずの) のようなメソッドがないこと、コードが一度に 1 桁しか出力せず、ペアを出力しないことに (段階的に) 気付くはずです。 2 番目のループが実行されないこと ( がtimes返されnil、評価されないnil && xため短絡されるため)。x

あなたの質問に関しては、表示ではなく数字のペアのシーケンスを要求するため、puts必要ありません。また、ペアが必要なため、2 つのループを次々にネストするのではなく、ネストする必要があります。

(0..3).flat_map { |x| (4..7).map { |y| [x, y] } }

それを書くための1つの簡単な方法になります。

編集:flat_mapよりもクールですmap.flatten。それでも、macek の回答はより具体的な +1 です。

于 2012-11-21T05:22:39.553 に答える