Rangeのメソッド
CoddyのRubyジャーニー「ロジックとフロー」セクションの一部 — レッスン 7/56。
範囲(Range)には、手動でループを書く手間を省いてくれる便利なメソッドが用意されています。
include? は、ある値が範囲内に含まれているかどうかをチェックします:
range = 1..10
puts range.include?(5) # true
puts range.include?(11) # falsemin、max、およびsizeは範囲に対して直接動作します:
puts (1..10).min # 1
puts (1..10).max # 10
puts (1..10).size # 10step は、一定の間隔で範囲内を反復処理します。すべての値が必要ない場合に便利です。
(0..10).step(2) do |n|
puts n
end
# 0, 2, 4, 6, 8, 10そして、each は配列の場合と同じように動作します:
(1..3).each { |n| puts n * n }
# 1
# 4
# 9チャレンジ
簡単含み(inclusive)の範囲と、推測値のリストが与えられます。推測値をスコア化し、その範囲を要約してください。
次の2行を読み込んでください:
- スペースで区切られた2つの整数:
startとend_value - カンマで区切られた整数の推測値リスト
範囲 start..end_value を使用して、以下を出力してください:
Hit: <n>:nは範囲内に含まれる推測値の数(include?を使用すること)Span: <n>:nは範囲のsizeMultiples of 3 sum: <n>:nは範囲内にあるすべての3の倍数の合計(start以降の最初の3の倍数からstepを使用すること)
1行目の入力が 1 10 で、2行目が 3,5,11,7,-2 の場合、出力は以下のようになります:
Hit: 3
Span: 10
Multiples of 3 sum: 18(ヒットした値:3, 5, 7。1..10 の範囲内の3の倍数:3+6+9 = 18)
チートシート
便利なRangeメソッド:
range = 1..10
range.include?(5) # true
range.min # 1
range.max # 10
range.size # 10step は、一定の間隔でジャンプしながら反復処理を行います:
(0..10).step(2) { |n| puts n }
# 0, 2, 4, 6, 8, 10each は、配列と同じように動作します:
(1..3).each { |n| puts n * n }自分で試してみよう
start, end_value = gets.chomp.split.map(&:to_i)
guesses = gets.chomp.split(",").map(&:to_i)
# TODO: include? によるヒット数、size によるスパン、step による3の倍数の合計
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。