インデックスによる配列のスライス
CoddyのRubyジャーニー「基礎」セクションの一部 — レッスン 70/88。
Rubyは、開始インデックスと長さを使用して配列をスライスする別の方法を提供しています。範囲を指定する代わりに、開始位置と取り出す要素の数の2つの数値を指定します。
この構文では、開始インデックスと要素数をカンマで区切ります:
numbers = [10, 20, 30, 40, 50]
slice = numbers[1, 3]
puts slice # 出力: 20, 30, 40これはインデックス1から3つの要素を抽出します。最初の数値は開始位置で、2番目の数値は取得したい要素の数です。
このアプローチは、必要な要素の数が正確にわかっている場合に特に便利です。
letters = ["a", "b", "c", "d", "e"]
first_two = letters[0, 2]
puts first_two # 出力: a, b負のインデックスもここで機能します。配列の末尾から開始できます:
colors = ["red", "green", "blue", "yellow"]
last_two = colors[-2, 2]
puts last_two # 出力: blue, yellow利用可能な要素数よりも多くの要素をリクエストした場合、Rubyはエラーを発生させることなく、存在する分だけを返します:
nums = [1, 2, 3]
slice = nums[1, 10]
puts slice # 出力: 2, 3必要な要素の数がわかっている場合はこのメソッドを選択し、正確な位置がわかっている場合は範囲を使用してください。
チャレンジ
簡単3つの入力を読み込みます:
- カンマで区切られた整数の1行(例:
5,10,15,20,25,30,35,40) - 開始インデックス(整数)
- 抽出する要素の数(整数)
最初の入力を整数の配列に分割します。開始インデックスと要素数を使用して、インデックスと長さ(index-and-length)の構文で配列をスライスし、スライスされた部分の各要素をそれぞれの行に出力してください。
例えば、入力が 5,10,15,20,25,30,35,40、2、4 の場合、出力は以下のようになります:
15
20
25
30入力が 100,200,300,400,500、0、2 の場合、出力は以下のようになります:
100
200入力が a,b,c,d,e,f,g、-3、2 の場合、出力は以下のようになります:
e
f入力が 10,20,30、1、10 の場合、出力は以下のようになります:
20
30チートシート
Rubyでは、開始インデックスと長さを指定して配列をスライスできます。この構文では、カンマを使用して開始インデックスと要素数を区切ります:
array[start_index, length]基本的な例:
numbers = [10, 20, 30, 40, 50]
slice = numbers[1, 3]
puts slice # 出力: 20, 30, 40最初の数値は開始位置で、2番目の数値は抽出する要素の数です。
この構文では負のインデックスも使用でき、配列の末尾から開始することができます:
colors = ["red", "green", "blue", "yellow"]
last_two = colors[-2, 2]
puts last_two # 出力: blue, yellow利用可能な要素数よりも多くの要素を要求した場合、Rubyはエラーを発生させずに存在する分だけを返します:
nums = [1, 2, 3]
slice = nums[1, 10]
puts slice # 出力: 2, 3自分で試してみよう
# 入力を読み込む
input_line = gets.chomp
start_index = gets.chomp.to_i
count = gets.chomp.to_i
# 入力を配列に分割する
arr = input_line.split(',')
# TODO: 以下に、インデックスと長さの構文を使用して配列をスライスするコードを記述してください
# そして、各要素をそれぞれの行に出力してくださいこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。