2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Ruby】each_with_indexとsearchを組み合わせたプログラム・考え方

Last updated at Posted at 2020-08-24

アウトプット用に記します。
macOS Catalina10.15.6にインストールしたRuby 2.6.5を使用。
#やりたいこと#
数を探して何番目に含まれているか結果を返すメソッドをsearcheach_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です。

#さあ本題、どうやる?#

  1. なにはともあれsearchメソッドを自分で定義せいっちゅうことやね。
  2. 仮引数を2つ用意するノリやね。(tage_i,input)と、しとこうか。
  3. 配列inputeach_with_indexの使い方に当てはめて・・・。ブロック変数にも2つ引数を渡しす(なんとなく | i, index |にした)。
  4. 含まれてたら〜と、含まれてなかったら〜があるから、条件分岐if使うっしょ・・・?もしiと入力してtarget_numと等しければreturn前のputsを出力する。returnしとかんと、要素の数だけ繰り返しちゃうかんね!
  5. 配列並べて、ためしに一個呼び出してみる
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)

結果
スクリーンショット-2020-08-24-23.42.57.jpg

ちなみに当てはまってる数字も出力させてみる・・・

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) #「〜番目にあります!」の条件にあてはまる数字の追加

スクリーンショット-2020-08-24-23.42.57.jpg

#なにをともあれ#
ゆっくりじっくり考えればいける・・・?
まだ表面だけしか理解できてない感否めないから、いったんメモる。またアップデートすると思う。

2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?