Set consolidation: Difference between revisions
Content added Content deleted
m (→{{header|jq}}: simplify) |
(→{{header|Ruby}}: change data(String->Symbol), correction of the control structure.) |
||
Line 1,448: | Line 1,448: | ||
<lang ruby>require 'set' |
<lang ruby>require 'set' |
||
tests = [[[ |
tests = [[[: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]]] |
||
tests.map!{|sets| sets.map(&:to_set)} |
|||
tests. |
tests.each do |sets| |
||
until sets.combination(2).none?{|a,b| a.merge(b) && sets.delete(b) if a.intersect?(b)} |
|||
if a.intersect?(b) then |
|||
a.merge(b) |
|||
sets.delete(b) |
|||
end |
|||
end |
end |
||
p sets |
p sets |
||
end |
end</lang> |
||
{{out}} |
|||
</lang> |
|||
{{Output}} |
|||
<pre> |
<pre> |
||
[#<Set: { |
[#<Set: {:A, :B}>, #<Set: {:C, :D}>] |
||
[#<Set: { |
[#<Set: {:A, :B, :D}>] |
||
[#<Set: { |
[#<Set: {:A, :B, :D, :C}>] |
||
[#<Set: { |
[#<Set: {:H, :I, :K, :F, :G}>, #<Set: {:A, :B, :D, :C}>] |
||
</pre> |
</pre> |
||
Note: After execution, the contents of tests are exchanged. |
|||
=={{header|Scala}}== |
=={{header|Scala}}== |
||
<lang Scala>object SetConsolidation extends App { |
<lang Scala>object SetConsolidation extends App { |