Here is yet another "slightly cleaner" version:
byLevel=: 4 :0
mask=. </~i.{:$y
reflect=. 0&< * ] -"1"1 2 x *"2 1 ]
keep=. (0 < ^&mask"2) >&(*./"1) =&0
weights=. currentLevel=.,:y
while.#currentLevel =. (keep #&(,/) ]) reflect currentLevel
do.weights=. weights, currentLevel
end.
)Usage: A =: 2-4|6<.|(-|:)i.4 4 A byLevel 1 1 1 1 -- Raul ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
