ネストしたループ
CoddyのRubyジャーニー「基礎」セクションの一部 — レッスン 46/88。
ループの中に別のループを配置して、入れ子(ネスト)になったループを作成することができます。内側のループは外側のループの各反復ごとに完全に実行されるため、このパターンはグリッド、テーブル、または組み合わせを扱う際に便利です。
for i in 1..2
for j in 1..3
puts "i=#{i}, j=#{j}"
end
endこれは6行出力します。i の各値に対して、内側のループは j のすべての値を走査します。
最初に i が 1 のとき、j は 1, 2, 3 と変化します。次に i が 2 になり、j は再び 1, 2, 3 と変化します。
実践的な例として、簡単な掛け算のパターンを作成してみましょう:
for row in 1..3
for col in 1..3
print "#{row * col} "
end
puts ""
endこれは3x3の積のグリッドを出力します。printは値を同じ行に保持し、puts ""は各行が完了した後に改行します。forループの中にtimesループを入れるように、異なる種類のループを組み合わせることもできます。
チャレンジ
簡単入力から2つの整数を読み取ります:
rows- 行数cols- 列数
入れ子になったループを使用して、指定されたサイズの星印(*)で構成される長方形を出力してください。各行にはスペースで区切られた cols 個の星印を含め、各行を新しい行に出力してください。
行内の星印には print を使用し、各行の後に puts を使用して改行してください。
例えば、入力が 3 と 4 の場合、出力は以下のようになります:
* * * *
* * * *
* * * *入力が 2 と 5 の場合、出力は以下のようになります:
* * * * *
* * * * *チートシート
入れ子になったループ(ネストされたループ)を使用すると、あるループの中に別のループを配置できます。外側のループが1回繰り返されるごとに、内側のループが完全に実行されます。
for i in 1..2
for j in 1..3
puts "i=#{i}, j=#{j}"
end
endこれにより、合計6行が出力されます。i=1 のとき、j は 1, 2, 3 と繰り返されます。次に i=2 のとき、j は再び 1, 2, 3 と繰り返されます。
出力を同じ行に保つには print を使い、改行するには puts "" を使用します:
for row in 1..3
for col in 1..3
print "#{row * col} "
end
puts ""
endfor ループの中で times ループを使用するなど、異なる種類のループを組み合わせることもできます。
自分で試してみよう
# 入力を読み込む
rows = gets.to_i
cols = gets.to_i
# TODO: 以下にコードを記述してください
# 入れ子になったループを使用して、アスタリスクの長方形を出力します
# 行内のアスタリスクには print を使用し、次の行に移動するには puts を使用しますこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。