##
((0 1 2 3)
(4 5 6)
##
##
use Set::Scalar;
for $i ( 0 .. 4) {$cluster[$i] = Set::Scalar->new;}
$cluster[0]->insert(0);
$cluster[1]->insert(0,1);
$cluster[2]->insert(0,1,2);
$cluster[3]->insert(1,2,3);
$cluster[4]->insert(5,6,4);
for $i ( 0 .. 4) {
for $j ( $i+1 .. 4) {
if ($cluster[$i]->is_properly_intersecting($cluster[$j])) {$cluster[$i]=$cluster[$i]+$cluster[$j];$cluster[$j]->clear;}
}}
##
##
(0)
(0 1 2 3)
(0 1 2)
()
(4 5 6)