Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
23
Task/Visualize-a-tree/Raku/visualize-a-tree.raku
Normal file
23
Task/Visualize-a-tree/Raku/visualize-a-tree.raku
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
sub visualize-tree($tree, &label, &children,
|
||||
:$indent = '',
|
||||
:@mid = ('├─', '│ '),
|
||||
:@end = ('└─', ' '),
|
||||
) {
|
||||
sub visit($node, *@pre) {
|
||||
| gather {
|
||||
take @pre[0] ~ label($node);
|
||||
my @children := children($node);
|
||||
my $end = @children.end;
|
||||
for @children.kv -> $_, $child {
|
||||
when $end { take visit($child, (@pre[1] X~ @end)) }
|
||||
default { take visit($child, (@pre[1] X~ @mid)) }
|
||||
}
|
||||
}
|
||||
}
|
||||
visit($tree, $indent xx 2);
|
||||
}
|
||||
|
||||
# example tree built up of pairs
|
||||
my $tree = root=>[a=>[a1=>[a11=>[]]],b=>[b1=>[b11=>[]],b2=>[],b3=>[]]];
|
||||
|
||||
.map({.join("\n")}).join("\n").say for visualize-tree($tree, *.key, *.value.list);
|
||||
Loading…
Add table
Add a link
Reference in a new issue