Set consolidation: Difference between revisions
Content added Content deleted
(→{{header|Factor}}: Simplify.) |
|||
Line 1,357: | Line 1,357: | ||
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> |
||
=={{header|Nim}}== |
|||
{{trans|Python}} |
|||
<lang nim>proc consolidate(sets: seq[set[char]]): seq[set[char]] = |
|||
if len(sets) < 2: |
|||
return sets |
|||
var (r, b) = (@[sets[0]], consolidate(sets[1..^1])) |
|||
for x in b: |
|||
if len(r[0] * x) != 0: |
|||
r[0] = r[0] + x |
|||
else: |
|||
r.add(x) |
|||
r |
|||
echo $consolidate(@[{'A', 'B'}, {'C', 'D'}]) |
|||
echo $consolidate(@[{'A', 'B'}, {'B', 'D'}]) |
|||
echo $consolidate(@[{'A', 'B'}, {'C', 'D'}, {'D', 'B'}]) |
|||
echo $consolidate(@[{'H', 'I', 'K'}, {'A', 'B'}, {'C', 'D'}, {'D', 'B'}, {'F', 'G', 'H'}])</lang> |
|||
{{out}} |
|||
<pre> |
|||
@[{'A', 'B'}, {'C', 'D'}] |
|||
@[{'A', 'B', 'D'}] |
|||
@[{'A', 'B', 'C', 'D'}] |
|||
@[{'F', 'G', 'H', 'I', 'K'}, {'A', 'B', 'C', 'D'}] |
|||
</pre> |
|||
=={{header|OCaml}}== |
=={{header|OCaml}}== |