Set consolidation: Difference between revisions
Content added Content deleted
(Replaced the "seq[set[char]]" by a "varargs[set[char]]". Removed useless "$" in "echo $consolidate...".) |
|||
Line 1,433: | Line 1,433: | ||
</pre> |
</pre> |
||
=={{header|Mathematica}}== |
=={{header|Mathematica}}/{{header|Wolfram Language}}== |
||
<lang Mathematica>reduce[x_] := |
<lang Mathematica>reduce[x_] := |
||
Block[{pairs, unique}, |
Block[{pairs, unique}, |
||
Line 1,442: | Line 1,442: | ||
unique = Complement[Range@Length@x, Flatten@pairs]; |
unique = Complement[Range@Length@x, Flatten@pairs]; |
||
Join[Union[Flatten[x[[#]]]] & /@ pairs, x[[unique]]]] |
Join[Union[Flatten[x[[#]]]] & /@ pairs, x[[unique]]]] |
||
consolidate[x__] := FixedPoint[reduce, {x}]</lang> |
consolidate[x__] := FixedPoint[reduce, {x}]</lang> |
||
<pre>consolidate[{a, b}, {c, d}] |
<pre>consolidate[{a, b}, {c, d}] |
||
-> {{a, b}, {c, d}} |
-> {{a, b}, {c, d}} |
||
consolidate[{a, b}, {b, d}] |
consolidate[{a, b}, {b, d}] |
||
-> {{a, b, d}} |
-> {{a, b, d}} |
||
consolidate[{a, b}, {c, d}, {d, b}] |
consolidate[{a, b}, {c, d}, {d, b}] |
||
-> {{a, b, c, d}} |
-> {{a, b, c, d}} |
||
consolidate[{h, i, k}, {a, b}, {c, d}, {d, b}, {f, g, h}] |
consolidate[{h, i, k}, {a, b}, {c, d}, {d, b}, {f, g, h}] |
||
-> {{a,b,c,d},{f,g,h,i,k}}</pre> |
-> {{a,b,c,d},{f,g,h,i,k}}</pre> |