partition

Enumerable#partitionは、与えられたブロックが真を返す要素と偽を返す要素の2つのグループに分け、配列にして返します。

p (1..10).partition { |n| n % 2 == 1 }

p <<"EOD".partition { |s| /^R/ =~ s }
I'm Rubyco.
Ruby is cool.
Is Ruby cool?
EOD

実行結果です。前者は奇数と偶数に分け、後者はRで始まる行とそれ以外の行に分けています。

[[1, 3, 5, 7, 9], [2, 4, 6, 8, 10]]
[["Ruby is cool.\n"], ["I'm Rubyco.\n", "Is Ruby cool?\n"]]