Here's a version that is a bit cleaner:
byLevel=: 3 :0
'w A maxLevel'=. y
weights=. currentLevel=.,:w
mask=. -. +./\ =i.{:$w
reflect=. 0&< * ] -"1"1 2 A *"2 1 ]
keep=. (0 < ^&mask"2) >&(*./"1) =&0
for.i.maxLevel do.
currentLevel=. (keep #&(,/) ]) reflect currentLevel
weights=. weights, currentLevel
end.
)
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
