🌊

【Ruby学習記録】配列の基本的な使い方

2022/09/11に公開

お題1:以下の通りに、配列への操作を実装せよ

  1. sports という変数に配列で"野球", "サッカー", "テニス", "水泳"を代入
  2. 変数 sports から"サッカー"を出力
  3. 要素の"水泳"を"ラグビー"に書き換え
  4. 要素の"野球"を削除して、新しい要素の"柔道"を"テニス"の後ろに追加
# 1.
sports = ['野球','サッカー','テニス','水泳']

# 2.
puts sports[1]

# 3.
sports[3] = 'ラグビー'

# 4.
sports.delete_at 0
sports.insert(2, '柔道')

1.では配列へのデータの代入を行なっている。Ruby では配列は [] で囲んで表記し、要素は , で区切る。

2.では配列から任意の要素を取り出している。Ruby で配列の任意の要素にアクセスしたい場合、配列名[n]
と表記する。
n は配列の何番目に当たるかの数値(=添字)を記載するが、0 から始まるので、今回は 2 番目に当たる"サッカー"の文字列を取り出す為、sports[1]となっている。

3.も配列の任意の要素へのアクセス。4 番目にある"水泳"というテキストを"ラグビー"に書き換えよ、ということなので、sports[3] = 'ラグビー'と記述し、配列の 4 番目への代入を行なっている。

4.は配列の持つメソッドを利用し、削除と挿入をおこなっている。
配列からの削除はdelete_atメソッドを利用する。引数は削除したい要素の番号を指定する。

配列名.delete_at [要素番号]

配列への挿入はinsertメソッドを利用する。引数は追加位置を示す番号(n 番目になる位置に追加)と、追加したいデータ。

配列名.insert([追加位置を示す番号] , [追加するデータ])

お題2:下記の様に変数 numbers にはいくつかの整数が配列で代入されている。 配列の中で重複している数字を取り除いた数の合計を出力せよ

numbers = [3, 8, 1, 18, 124, 10, 8, 5, 53, 10]

解答

answer.rb
numbers = [3,8,1,18,124,10,8,5,53,10]

puts numbers.uniq.sum
===
$ ruby answer.rb
222

配列の持つメソッドとして、uniqというメソッドがあり、それを使うと重複を取り除いた配列を受け取ることが出来る。
さらにsumというメソッドで配列の要素の数値を全て足し合わせた結果を受け取ることが出来る。

この流れを分解して書くとこんな感じになる。

[3,8,1,18,124,10,8,5,53,10].uniq => [3,8,1,18,124,10,5,53]
[3,8,1,18,124,10,5,53].sum => 3 + 8 + 1 + 18 + 124 + 10 + 5 + 53 => 222

お題3:プログラムを実行した際、下記の if 文が真の結果になるように、以下の条件を満たしたうえで、プログラムにコードを追加せよ

【条件】

  1. 変数 man を使用して、変数 names の配列の中に名前が存在するかを確認する
  2. # コードを追加以外の部分にはコードを付け足さないこと
example.rb
names = ["聡", "剛士", "霞", "小次郎", "武蔵"]

man = "小次郎"

# コードを追加

if result
  puts "名前が含まれています"
else
  puts "名前が見つかりませんでした"
end
answer.rb
names = ["聡","剛士","霞","小次郎","武蔵"]

man = "武蔵"

result = names.include?(man)

if result
  puts '名前が含まれています'
else
  puts '名前がみつかりませんでした'
end

配列の持つメソッドにinclude?というのがあり、配列の中に該当するものがあるかを調べることができる。

配列名.include?([検索値]) => 存在すればtrue、なければfalse
GitHubで編集を提案

Discussion

ログインするとコメントできます