2 flat logo on transparent 256
2018-06-03

Rubyの練習問題:配列編|初心者・独学者向け入門コンテンツ

Programming 09312311

初心者・独学者向けの入門コンテンツとしてRubyで配列を編集する際の練習問題を作成しました。

各問題の回答は内部リンクに設定しています。

Rubyの配列解説については下記を御覧ください

初心者・独学者向け|Rubyの配列処理の入門とよく使うメソッド

その他練習問題記事

Rubyの練習問題:文字列編|初心者・独学者向け入門コンテンツ

Rubyの練習問題:ハッシュ編|初心者・独学者向け入門コンテンツ

Rubyの練習問題:繰り返し処理編|初心者・独学者向け入門コンテンツ

Rubyで配列を処理する際の練習問題

1:rubyで配列のユニーク要素だけ出力する

[1, 2, 3, 1, 2, 1, 2, 6, 5, "ruby","python","ruby"]という配列から

配列内の重複要素を排除し、[1, 2, 3, 6, 5, "ruby", "python"]としてください。

1-1rubyでユニーク要素だけ出力するの回答

2:rubyで配列のnill要素を削除

["ruby", nil, "java", nil, nil, "python"]という配列からnillを削除して出力してください。

1-1rubyで配列のnill要素を削除するの回答

3:rubyで2次元配列の値を操作する

rubyの以下2次元配列で

[["php", "java", "ruby", "python"],["バージョン3","バージョン2","バージョン1","バージョン0.1"]]

[["php", "バージョン3"], ["java", "バージョン2"], ["ruby", "バージョン1"], ["python", "バージョン0.1"]]

に変換するにはどのように記載すればよいでしょうか?

1-3rubyで2次元配列の値を操作するの回答

4:rubyでzipメソッドを利用した場合の動作

以下を実行した場合の実行結果はどのように動作するか 選択肢から1つ選んでください。

array = ["ruby", "python", "java"]
num = [1, 2, 3]
p array.zip(num)

選択肢

1:[["ruby", 1], ["python", 2], ["java", 3]]

2:["ruby1"], ["python2"], ["java3"]

3:[["ruby", "python", "java"],[1, 2, 3]]

1-4rubyでzipメソッドを利用した場合の動作の回答

5:rubyでproductメソッドを利用した場合の動作

以下を実行した場合の実行結果はどのように動作するか 選択肢から1つ選んでください。

array1 = ["プログラミング言語"]
array2 = ["ruby", "python", "java"]
p sets = array1.product(array2)

選択肢

1:実行エラー

2:[["プログラミング言語", "ruby"], ["nil", "python"], ["nil", "java"]]

3:[["プログラミング言語", "ruby"], ["プログラミング言語", "python"], ["プログラミング言語", "java"]]

1-5rubyでproductメソッドを利用した場合の動作の回答

6:rubyで配列内の要素をソートする

[5,6,1,3,4] をソートして[1, 3, 4, 5, 6]と出力してください

1-6rubyで配列内をソートするの回答

7:rubyの配列内の要素をカウントする

["イシカワ","トウキョウ","アオモリ"]の配列内の要素数を出力して下さい。

1-7rubyの配列内の要素をカウントするの回答

8:rubyの配列内の要素を取得し、新しい配列で返す

["足立区","港区","豊島区","江東区"]を["足立区","港区","豊島区"]として出力して下さい。

1-8rubyの配列内の要素を取得し、新しい配列で返すの回答

9:rubyの配列内の要素を大文字で表示する

["python", "ruby", "java"]を["PYTHON", "RUBY", "JAVA"]として出力してください。

1-9rubyの配列内の要素を大文字で表示するの回答

10:rubyの配列へ繰り返し処理を実行する

出力結果が

"1:牛丼"
"2:豚丼"
"3:カツ丼"

となるように以下に処理を追加してください。

array =["牛丼","豚丼","カツ丼"]
array.each_with_index  do |array,i|
  #ここに処理を記載  
end

1-10rubyの配列へ繰り返し処理を実行するの回答

11:rubyの配列で真の値を取得する

以下配列から3で割り切れる値だけを抽出してください

array =[20, 21, 22, 23, 24, 25, 26]
## => [21, 24]

1-11rubyの配列で真の値を取得する の回答

12:rubyの配列で偽の値を取得する

11の問題で、3で割り切れる値以外を抽出してください

array =[20, 21, 22, 23, 24, 25, 26]
## => [20, 22, 23, 25, 26]

1-12rubyの配列で偽の値を取得する の回答

1-1:rubyユニーク要素だけ出力するの回答

設問

[1, 2, 3, 1, 2, 1, 2, 6, 5, "ruby","python","ruby"]という配列から 配列内の重複要素を排除し、 [1, 2, 3, 6, 5, "ruby", "python"]としてください。

回答

配列内の重複要素の削除は、配列.uniqメソッドを利用します。

array = [1, 2, 3, 1, 2, 1, 2, 6, 5, "ruby","python","ruby"]
p array.uniq

.uniqメソッドは数字だけでなく、配列内のテキストの重複要素も削除できます。

1-2:rubyで配列のnill要素を削除するの回答

設問

["ruby", nil, "java", nil, nil, "python"]という配列からnillを削除して出力してください。

回答

rubyで配列内のnill要素を削除するには.compactメソッドを利用します。

array = ["ruby", nil, "java", nil, nil, "python"]
p array.compact

1-3:rubyで2次元配列の値を操作するの回答

設問

rubyの以下2次元配列で

[["php", "java", "ruby", "python"],["バージョン3","バージョン2","バージョン1","バージョン0.1"]]

[["php", "バージョン3"], ["java", "バージョン2"], ["ruby", "バージョン1"], ["python", "バージョン0.1"]]

に変換するにはどのように記載すればよいでしょうか?

回答

rubyの配列で利用できるtransposeメソッドを利用します。

array = [["php", "java", "ruby", "python"],["バージョン3","バージョン2","バージョン1","バージョン0.1"]]
p array.transpose

1-4:rubyでzipメソッドを利用した場合の動作の回答

設問 以下を実行した場合の実行結果はどのように動作するか 選択肢から1つ選んでください。

選択肢

1:[["ruby", 1], ["python", 2], ["java", 3]]

2:["ruby1"], ["python2"], ["java3"]

3:[["ruby", "python", "java"],[1, 2, 3]]

array = ["ruby", "python", "java"]
num = [1, 2, 3]
p array.zip(num)

回答

実行結果は1となります。

rubyのzipメソッドは、配列の要素を引数の配列と結合して 新しい配列を生成し、行列を入れ替えた状態で値が帰ってきます。なお足りない要素はnilで返されます。

array = ["ruby", "python", "java"]
num = [1]
p array.zip(num)

#実行結果
#[["ruby", 1], ["python", nil], ["java", nil]]

1-5:rubyでproductメソッドを利用した場合の動作

設問

以下を実行した場合の実行結果はどのように動作するか 選択肢から1つ選んでください。

選択肢

1:実行エラー

2:[["プログラミング言語", "ruby"], ["nil", "python"], ["nil", "java"]]

3:[["プログラミング言語", "ruby"], ["プログラミング言語", "python"], ["プログラミング言語", "java"]]

array1 = ["プログラミング言語"]
array2 = ["ruby", "python", "java"]
p sets = array1.product(array2)

回答 実行結果は3となります。 productメソッドは、レシーバの配列の要素と引数で与えられた配列の要素の全ての組み合わせて値を返してくれます。

1-6:rubyで配列内をソートする

設問

[5,6,1,3,4] をソートして[1, 3, 4, 5, 6]と出力してください

回答

配列内をソートする場合は.sortメソッドを利用します。 sortは数字の他にひらがなやカタカナでも利用できます。

num = [5,6,1,3,4]
p num.sort
#実行結果
#[1, 3, 4, 5, 6]

1-7:rubyの配列内の要素をカウントするの回答

設問

["イシカワ","トウキョウ","アオモリ"]の配列内の要素数を出力して下さい。

回答

配列内の要素をカウントする場合は.countメソッドを利用します。

array = ["イシカワ","トウキョウ","アオモリ"]
p array.count

1-8:rubyの配列内の要素を取得し、新しい配列で返すの回答

設問

["足立区","港区","豊島区","江東区"]を["足立区","港区","豊島区"]として出力して下さい。

回答

.takeメソッドを利用します。 ※繰り返し処理などでも対応可能です。

array = ["足立区","港区","豊島区","江東区"]
p array.take(3)

1-9:rubyの配列内の要素を大文字で表示するの回答

設問

["python", "ruby", "java"]を["PYTHON", "RUBY", "JAVA"]として出力してください。

回答

.mapメソッドとupcaseメソッドを利用します。 .mapメソッドは要素の数だけ、指定処理を繰り返し処理を実行し戻り値の配列を返します。

upcaseメソッドはテキストの小文字を大文字にするメソッドになります。

※.mapを.collectで設定しても可能

p ["python", "ruby", "java"].map {|text| text.upcase }
#実行結果
#["PYTHON", "RUBY", "JAVA"]

1-10:rubyの配列へ繰り返し処理を実行するの回答

設問

出力結果が

"1:牛丼"
"2:豚丼"
"3:カツ丼"

となるように以下に処理を追加してください。

array =["牛丼","豚丼","カツ丼"]
array.each_with_index  do |array,i|
  #ここに処理を記載  
end

回答

each_with_index

は処理のカウントをしながら配列を繰り返し処理します。 処理のカウントは0から開始されるので1から開始する場合は +1を付与する必要があります。

array =["牛丼","豚丼","カツ丼"]
array.each_with_index  do |array,i|
  p "#{i+1}"+":" +"#{array}"
end

繰り返し処理については下記記事をご参照下さい

Rubyの繰り返し処理の解説|初心者・独学者向け

1-11:rubyの配列で真の値を取得するの回答

設問

以下配列から3で割り切れる値だけを抽出してください

array =[20, 21, 22, 23, 24, 25, 26]
## => [21, 24]

回答

selectメソッドもしくはfind_allメソッドを利用します。

この2つのメソッドは条件に合致する要素を集めて、新しい配列にして返します。

array =[20, 21, 22, 23, 24, 25, 26]
p array.select { |n| n % 3 == 0 }
## => [21, 24]

#以下でも可
#p array.find_all { |n| n % 3 == 0 }

1-12:rubyの配列で真の値を取得するの回答

設問

11の問題で、3で割り切れる値以外を抽出してください

array =[20, 21, 22, 23, 24, 25, 26]
## => [20, 22, 23, 25, 26]

回答

rejectメソッドを利用します。

rejectメソッドは条件に合致しない要素を集めて、新しい配列にして返します。

array =[20, 21, 22, 23, 24, 25, 26]
p array. reject { |n| n % 3 == 0 }
## => [20, 22, 23, 25, 26]

その他関連記事

Rubyの練習問題:ハッシュ編|初心者・独学者向け入門コンテンツ

Rubyの練習問題:文字列編|初心者・独学者向け入門コンテンツ

初心者・独学者向け|Rubyの配列処理の入門とよく使うメソッド

初心者・独学者向け|Rubyのハッシュ入門とよく使うメソッド

初心者・独学者向け|Rubyのinitializeメソッドとは

初心者・独学者向け|RubyのStringクラスとよく使うメソッド

前の記事
次の記事
人気記事
カテゴリーから記事を探す