RubyのArrayクラスのメソッドをたくさん使ってみた <part 2>

part1に引き続きRubyのArrayクラスのメソッドを使っていきます。

[part1はこちら](https://qiita.com/Takatoshi_Hiki/items/24acdfb331213df96acf)
## 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が使いこなせそうです。