Topological sort/Extracted top item: Difference between revisions

J: merge equivalent grouping levels
(J: more examples)
(J: merge equivalent grouping levels)
Line 49:
depends=. (+. +./ .*.~)^:_ depends
keep=. +./depends (] , #~) names e. targets
r=.0 0$''
>names ((<@(;:inv)/.~ /: ~.@]) +/"1)&(keep&#) depends
while.#names=. keep#names do.
depends=. keep#keep#"1 depends
keep=. 0<+/"1 depends
r=.r,;:inv (-.keep)#names
end.
)</lang>
 
Line 60 ⟶ 65:
# When ordering names by dependencies:
## only consider names and dependencies we want to keep
## grouprepeat: extract names bywith howno manyremaining dependencies they have
## sort strings of names by how many dependencies they have
 
Example:
Line 75 ⟶ 79:
)
 
'top1' compileOrder dependencies
extra1 ip1a ipcommon ip2a ip2b ip2c des1b des1a1 des1a2 des1c1
ip1 ip2 des1a des1c
ip1
ip2
des1
ip1 top1
top1
 
'top2' compileOrder dependencies
ip3 extra1 ipcommon ip2a ip2b ip2c des1b des1a1 des1a2 des1c1
ip2 des1a des1c
ip2
des1
top2
Line 92 ⟶ 93:
'top1 top2' compileOrder dependencies
ip3 extra1 ip1a ipcommon ip2a ip2b ip2c des1b des1a1 des1a2 des1c1
ip1 ip2 des1a des1c
ip1
ip2
des1
top1 top2
top1
</lang>
 
6,962

edits