part1に引き続きRubyのArrayクラスのメソッドを使っていきます。
29.repeated_permutation
配列の要素から引数n個を選んだときの重複順列(順序あり、重複を許す組合せ)を数え上げる。
array = [1,2,3]
array.repeated_permutation(2) do |first, second|
printf("(%d, %d) ", first, second)
end
(1, 1) (1, 2) (1, 3) (2, 1) (2, 2) (2, 3) (3, 1) (3, 2) (3, 3)
30.first
配列の最初の要素を返す。
array = [1,2,3]
p array.first
1
31.any?
ブロック引数itemに要素を入れながらブロックを繰り返し実行し、ブロックが真が返したときは繰り返しを中断してtrueを返す。
array = [1,2,3]
result = array.any? do |item|
item > 4
end
p result
false
array = [1,2,3]
result = array.any? do |item|
item > 1
end
p result
true
32.zip
配列の要素を引数の配列other_arrayの要素と組み合わせ、配列の配列を作成して返す。
array = [1,2,3]
array_2 = [4,5,6]
array_3 = [7,8,9]
p array.zip(array_2, array_3)
[[1, 4, 6], [2, 5, 7], [3, nil, 8]]
33.take
配列の先頭から引数n個の要素を取り出して、新しい配列を作成して返す。
array = [1,2,3,4,5,6]
p array.take(3)
[1, 2, 3]
34.take_while
ブロックの戻り値が真である要素を配列の先頭から取り出し、新しい配列に入れて返す。ブロック引数itemに要素を入れながら、ブロックの戻り値が真である間はブロックを繰り返す。ブロックが偽を返すと繰り返しを中断して、それより前の要素からなる配列を作成する。
array = [1,2,10,11,5,6]
new_array = array.take_while do |item|
item < 7
end
p new_array
[1, 2]
35.drop
配列の先頭から引数n個の要素を取り除き、残りで新しい配列を作成して返す。
array = [1,2,10,11,5,6]
p array.drop(4)
[5, 6]
36.drop_while
ブロックの戻り値が真である要素を配列の先頭から取り除き、残りの要素を集めた新しい配列を返す。ブロック引数itemに要素を入れながらブロックを繰り返し実行し、ブロックが偽を返すと繰り返しを中断して、それ以降の要素からなる配列を作成する。
array = [100,2,10,11,5,6]
new_array = array.drop_while do |item|
item % 2 == 0
end
p new_array
[11, 5, 6]
37.cycle
配列の要素の数だけブロックを繰り返し実行し、その繰り返しを引数n回続ける。
array = [1,2,3,4,5,6]
new_array = array.cycle(3) do |item|
print "#{item} "
end
1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6
38.uniq
配列の中で重複する要素を削除した新しい配列を返す。
array = [1,5,3,4,5,4]
p array.uniq
[1, 5, 3, 4]
39.|
2つの配列の和集合を作る。
array = [1,5,3,4,5,4]
array_2 = [34,67,89,5,1]
p array | array_2
[1, 5, 3, 4, 34, 67, 89]
40.insert
引数indexで指定した位置に引数objを要素として挿入する。
array = [1,2,3,4,5,6]
p array.insert(3, 1000)
1, 2, 3, 1000, 4, 5, 6]
41.index
配列から引数objと同じ要素を探し、その位置を整数で返す。
array = [1,2,3,4,5,6]
p array.index(6)
5
42.clear
要素をすべて削除し、配列を空にする。
array = [1,2,3,4,5,6]
p array.clear
[]
43.rindex
配列の末尾から順に引数objと同じ要素を探し、その位置(インデックス)を整数で返す。
array = [1,2,6,3,4,5,6]
p array.rindex(6)
6
44.replace
配列の内容を引数other_arrayのもので置き換える。
array = [1,2,6,3,4,5,6]
p array.replace(["cat","dog"])
["cat", "dog"]
45.empty?
配列が空であればtrue、1つ以上の要素があればfalseを返す。
array = [1,2,6,3,4,5,6]
array_2 = []
p array.empty?
p array_2.empty?
false
true
46.reverse
配列の要素の順番を反転させた新しい配列を返す。
array = [1,2,6,3,4,5,6]
p array.reverse
[6, 5, 4, 3, 6, 2, 1]
47.concat
配列arrayの末尾に引数の配列other_arrayを結合する。
array = [1,2,6,3,4,5,6]
array_2 = ["dog","cat"]
p array.concat(array_2)
[1, 2, 6, 3, 4, 5, 6, "dog", "cat"]
48.max
要素の最大値を調べる。
array = [1,2,6,3,4,5,6]
p array.max
6
49.delete
配列から引数objと同じ要素を探して、すべて削除する。
array = [1,2,6,3,4,5,6]
array.delete(6)
p array
[1, 2, 3, 4, 5]
50.slice
配列から引数で指定した位置の要素を取り出して返す。
array = [1,2,6,3,4,5,6]
p array.slice(1)
p array.slice(2..4)
p array.slice(1, 4)
2
[6, 3, 4]
[2, 6, 3, 4]
まとめ
50個で終了にします。意外と細かいものまであり、かっこよくArrayが使いこなせそうです。