RosettaCodeData/Task/Set-consolidation/Julia/set-consolidation-1.julia
2015-11-18 06:14:39 +00:00

18 lines
414 B
Text

function consolidate{T}(a::Array{Set{T},1})
1 < length(a) || return a
b = copy(a)
c = Set{T}[]
while 1 < length(b)
x = shift!(b)
cme = true
for (i, y) in enumerate(b)
!isempty(intersect(x, y)) || continue
cme = false
b[i] = union(x, y)
break
end
!cme || push!(c, x)
end
push!(c, b[1])
return c
end