25 lines
549 B
Text
25 lines
549 B
Text
func consolidate() { [] }
|
|
func consolidate(this, *those) {
|
|
gather {
|
|
consolidate(those...).each { |that|
|
|
if (this & that) { this |= that }
|
|
else { take that }
|
|
}
|
|
take this;
|
|
}
|
|
}
|
|
|
|
enum |A="A", B, C, D, _E, F, G, H, I, _J, K|;
|
|
|
|
func format(ss) {
|
|
ss.map{ '(' + .join(' ') + ')' }.join(' ')
|
|
}
|
|
|
|
[
|
|
[[A,B], [C,D]],
|
|
[[A,B], [B,D]],
|
|
[[A,B], [C,D], [D,B]],
|
|
[[H,I,K], [A,B], [C,D], [D,B], [F,G,H]]
|
|
].each { |ss|
|
|
say (format(ss), "\n\t==> ", format(consolidate(ss...)));
|
|
}
|