Rubyで同値関係を求めるパズルやってみた。

Rubyで同値関係を求めるパズル - rubyco(るびこ)の日記
今回もid:sumimさんは既訳なわけですが気にせず。

#!ruby -Ku

require 'set'

text = "少女=リズ
少年=ペタ
楽天家=ゲルト
老人=モーリッツ
ジム=ジムゾン
アル=商人
村長=ヴァルター
木こり=トーマス
旅人=ニコラス
ならず者=ディーター
少女=リーザ
行商人=アルビン
ジムゾン=神父
女将=宿屋の女主人
ヴァルター=ヴァル
商人=行商人
少年=ペーター
翁=モーリッツ
羊飼い=カタリナ
パン屋=オットー
青年=ヨアヒム
村娘=パメラ
農夫=ヤコブ
宿屋の女主人=レジーナ
リー=少女
ならず者=ディー
ペー太=ペタ"

text = "a=b
A=D
b=c
A=B
B=C
a=A
"
group = []

text.split(/\n/).each{|line|
  left, right = *line.split(/=/)

  group.delete(set_a = group.find{|set| set.include?(left)} || Set.new)
  group.delete(set_b = group.find{|set| set.include?(right)} || Set.new)
  group << ((set_a+set_b) << left << right)
}

p group.map{|set| set.sort}

標準入力じゃないとか出力形式とかは見逃してください。
それよりもgroup.delete(a = group.find{cond})の部分はそういうメソッドってないんでしたっけ。
配列から条件にあった要素を取り出すイメージなんですけど。