RosettaCodeData/Task/Topological-sort/11l/topological-sort.11l
2023-07-01 13:44:08 -04:00

49 lines
1.7 KiB
Text
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

V data = [
des_system_lib = Set(std synopsys std_cell_lib des_system_lib dw02 dw01 ramlib ieee.split( )),
dw01 = Set(ieee dw01 dware gtech.split( )),
dw02 = Set(ieee dw02 dware.split( )),
dw03 = Set(std synopsys dware dw03 dw02 dw01 ieee gtech.split( )),
dw04 = Set(dw04 ieee dw01 dware gtech.split( )),
dw05 = Set(dw05 ieee dware.split( )),
dw06 = Set(dw06 ieee dware.split( )),
dw07 = Set(ieee dware.split( )),
dware = Set(ieee dware.split( )),
gtech = Set(ieee gtech.split( )),
ramlib = Set(std ieee.split( )),
std_cell_lib = Set(ieee std_cell_lib.split( )),
synopsys = Set[String]()
]
F toposort2(&data)
L(k, v) data
v.discard(k)
Set[String] extra_items_in_deps
L(v) data.values()
extra_items_in_deps.update(v)
extra_items_in_deps = extra_items_in_deps - Set(data.keys())
L(item) extra_items_in_deps
data[item] = Set[String]()
[String] r
L
Set[String] ordered
L(item, dep) data
I dep.empty
ordered.add(item)
I ordered.empty
L.break
r.append(sorted(Array(ordered)).join( ))
[String = Set[String]] new_data
L(item, dep) data
I item !C ordered
new_data[item] = dep - ordered
data = move(new_data)
assert(data.empty, A cyclic dependency exists)
R r
print(toposort2(&data).join("\n"))