アウトプット用に記します。
macOS Catalina10.15.6にインストールしたRuby 2.6.5を使用。
#やりたいこと#
数を探して何番目に含まれているか結果を返すメソッドをsearchとeach_with_indexを用いて作成したいんよね。
###まずこういう配列があるたいな###
input = [3, 5, 9 ,12, 15, 21, 29, 35, 42, 51, 62, 78, 81, 87, 92, 93]
###んで、こんな感じに使えるsearchにしたいわけたいな###
search(12, input)
=> 4番目にあります
search(7, input)
=> その数は含まれていません
###each_with_indexについて###
each_with_indexはRubyに標準で組み込まれているメソッドの1つたいね。要素の繰り返し処理と同時に、その要素が何番目に処理されたのかも表せるんよ。
#each_with_indexの使い方
配列名.each_with_index do |item, i|
end
さらに詳しいeach_with_indexの使用例
cigarettes = ["MEVIUS", "highlight", "LuckyStrike"]
cigarettes.each_with_index do |item, i|
puts "#{i}番目のタバコは、#{item}です。"
end
これ↑を実行すると、以下のような出力結果が得られるとよ。
0番目のタバコは、MEVIUSです。
1番目のタバコは、highlightです。
2番目のタバコは、LuckyStrikeです。
#さあ本題、どうやる?#
- なにはともあれsearchメソッドを自分で定義せいっちゅうことやね。
- 仮引数を2つ用意するノリやね。(tage_i,input)と、しとこうか。
- 配列inputをeach_with_indexの使い方に当てはめて・・・。ブロック変数にも2つ引数を渡しす(なんとなく | i, index |にした)。
- 含まれてたら〜と、含まれてなかったら〜があるから、条件分岐if使うっしょ・・・?もしiと入力してtarget_numと等しければreturn前のputsを出力する。returnしとかんと、要素の数だけ繰り返しちゃうかんね!
- 配列並べて、ためしに一個呼び出してみる
array.rb
def search(tage_i, input)
input.each_with_index do |i, index|
if i == tage_i
puts"#{index + 1}番目にあります!"
return
end
end
puts "その数は含まれていません"
end
input = [3, 5, 9 ,12, 15, 21, 29, 35, 42, 51, 62, 78, 81, 87, 92, 93]
search(11, input)
ちなみに当てはまってる数字も出力させてみる・・・
array.rb
def search(tage_i, input)
input.each_with_index do |i, index|
if i == tage_i
puts"#{index + 1}番目にあります!"
return
end
end
puts "その数は含まれていません"
end
input = [3, 5, 9 ,12, 15, 21, 29, 35, 42, 51, 62, 78, 81, 87, 92, 93]
search(11, input)
search(29, input) #「〜番目にあります!」の条件にあてはまる数字の追加
#なにをともあれ#
ゆっくりじっくり考えればいける・・・?
まだ表面だけしか理解できてない感否めないから、いったんメモる。またアップデートすると思う。