Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
38
Task/Set-consolidation/Wren/set-consolidation.wren
Normal file
38
Task/Set-consolidation/Wren/set-consolidation.wren
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
import "/set" for Set
|
||||
|
||||
var consolidateSets = Fn.new { |sets|
|
||||
var size = sets.count
|
||||
var consolidated = List.filled(size, false)
|
||||
var i = 0
|
||||
while (i < size - 1) {
|
||||
if (!consolidated[i]) {
|
||||
while (true) {
|
||||
var intersects = 0
|
||||
for (j in i+1...size) {
|
||||
if (!consolidated[j]) {
|
||||
if (!sets[i].intersect(sets[j]).isEmpty) {
|
||||
sets[i].addAll(sets[j])
|
||||
consolidated[j] = true
|
||||
intersects = intersects + 1
|
||||
}
|
||||
}
|
||||
}
|
||||
if (intersects == 0) break
|
||||
}
|
||||
}
|
||||
i = i + 1
|
||||
}
|
||||
return (0...size).where { |i| !consolidated[i] }.map { |i| sets[i] }.toList
|
||||
}
|
||||
|
||||
var unconsolidatedSets = [
|
||||
[Set.new(["A", "B"]), Set.new(["C", "D"])],
|
||||
[Set.new(["A", "B"]), Set.new(["B", "D"])],
|
||||
[Set.new(["A", "B"]), Set.new(["C", "D"]), Set.new(["D", "B"])],
|
||||
[Set.new(["H", "I", "K"]), Set.new(["A", "B"]), Set.new(["C", "D"]),
|
||||
Set.new(["D", "B"]), Set.new(["F", "G", "H"])]
|
||||
]
|
||||
for (sets in unconsolidatedSets) {
|
||||
System.print("Unconsolidated: %(sets)")
|
||||
System.print("Cosolidated : %(consolidateSets.call(sets))\n")
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue