Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
21
Task/Visualize-a-tree/Sidef/visualize-a-tree.sidef
Normal file
21
Task/Visualize-a-tree/Sidef/visualize-a-tree.sidef
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
func visualize_tree(tree, label, children,
|
||||
indent = '',
|
||||
mids = ['├─', '│ '],
|
||||
ends = ['└─', ' '],
|
||||
) {
|
||||
func visit(node, pre) {
|
||||
gather {
|
||||
take(pre[0] + label(node))
|
||||
var chldn = children(node)
|
||||
var end = chldn.end
|
||||
chldn.each_kv { |i, child|
|
||||
if (i == end) { take(visit(child, [pre[1]] ~X+ ends)) }
|
||||
else { take(visit(child, [pre[1]] ~X+ mids)) }
|
||||
}
|
||||
}
|
||||
}
|
||||
visit(tree, [indent] * 2)
|
||||
}
|
||||
|
||||
var tree = 'root':['a':['a1':['a11':[]]],'b':['b1':['b11':[]],'b2':[],'b3':[]]]
|
||||
say visualize_tree(tree, { .first }, { .second }).flatten.join("\n")
|
||||
Loading…
Add table
Add a link
Reference in a new issue