Topological sort/Extracted top item: Difference between revisions

J: simplify
m (J: added top level)
(J: simplify)
Line 48:
depends=. (> =@i.@#) names e.S:1 (#names){.parsed
depends=. (+. +./ .*.~)^:_ depends
keepb=. +./depends (] , #~) names e. targets
names depends=(</.~ \: ~.@])&(keep&#keep#) +/"1 depends
r=.0 0$''
(b#names) (</.~ /: ~.@]) +/ }.+./ .*.~&(b#"1 b#depends)^:a: 1
while.#names=. keep#names do.
depends=. keep#keep#"1 depends
keep=. 0<+/"1 depends
r=.r,;:inv (-.keep)#names
end.
)
 
Line 60 ⟶ 56:
</lang>
 
The changes areinclude:
 
# Added an argument for the target(s) we wish to find dependencies for
Line 68 ⟶ 64:
# When ordering names by dependencies:
## only consider names and dependencies we want to keep
## repeat: extract names withgrouped by their nodependency remainingchain dependencieslength
 
Example:
Line 86 ⟶ 82:
top2
 
;:inv@> 'top1' compileOrder dependencies
extra1 ip1a ipcommon ip2a ip2b ip2c des1b des1a1 des1a2 des1c1
ip1 ip2 des1a des1c
Line 92 ⟶ 88:
top1
 
;:inv@> 'top2' compileOrder dependencies
ip3 extra1 ipcommon ip2a ip2b ip2c des1b des1a1 des1a2 des1c1
ip2 des1a des1c
Line 98 ⟶ 94:
top2
 
;:inv@> 'top1 top2' compileOrder dependencies
ip3 extra1 ip1a ipcommon ip2a ip2b ip2c des1b des1a1 des1a2 des1c1
ip1 ip2 des1a des1c
6,962

edits