Suffix tree: Difference between revisions
J: partial bugfix
(J) |
(J: partial bugfix) |
||
Line 127:
<lang J>classify=: {.@> </. ]
root=: ,:__;_;''▼
build_tree=:3 :0
if. 0=#y do. i.0 3 return.end.
if. 1=#y do. root,(#;y);0;y return.end.
tree=. root
for_box.classify y do.
if. 1=#ndx do.
counts=. 1 + 0&{::"1 subtree
else.▼
parents=. (0>.n-1) (+**&*) 1&{::"1 subtree
tree=. tree, counts;"0 1 parents;"0 edges
end.▼
tree=. tree,(__;0;,char),(1;n;0) + ::]&.>"1 subtree
end.
)
suffix_tree=:3 :0
assert. -.({:e.}:)y
Line 155 ⟶ 157:
Task example:
<lang J> suffix_tree 'banana$'
┌──┬───────┬─┬──┬───┬─┬─┬──┬───┬─┬─┐
├──┼───────┼─┼──┼───┼─┼─┼──┼───┼─┼─┤
├──┼───────┼─┼──┼───┼─┼─┼──┼───┼─┼─┤
│ │banana$│a│na│na$│$│$│na│na$│$│$│
└──┴───────┴─┴──┴───┴─┴─┴──┴───┴─┴─┘</lang>
The first row is the leaf number (_ for internal nodes).
|