😸
Grow.rbのmy_partition問題を解いてみる
Grow.rbとは:
Ruby力を高めたいRubyistたちが、コードを書いたりちょっとマニアックな内容を学んだりするコミュニティです。
オリジナルのmy_partition
メソッドを作ってみようというテーマです。
Enumerable#partition
とは:
各要素を、ブロックの条件を満たす要素と満たさない要素に分割します。各要素に対してブロックを評価して、その値が真であった要素の配列と、偽であった要素の配列の 2 つを配列に入れて返します。
https://docs.ruby-lang.org/ja/latest/method/Enumerable/i/partition.html
テストコードはこちら。
書いた回答がこちら。each
のみを使う縛り。
module Enumerable
def my_partition
result = []
true_array = []
false_array = []
each do |i|
if yield(i)
true_array << i
else
false_array << i
end
end
result.push(true_array, false_array)
end
end
each_with_object
を使うと変数を減らせる。
module Enumerable
def my_partition
each_with_object([[], []]) do |i, (true_array, false_array)|
if yield(i)
true_array << i
else
false_array << i
end
end
end
end
実務でpartition
を使ったことがないので面白かった。
Discussion