Tree from nesting levels: Difference between revisions

→‎{{header|Raku}}: Added Raku solution - iterative
m (→‎iterative: doh mk 2)
(→‎{{header|Raku}}: Added Raku solution - iterative)
Line 996:
└─ Just 3</pre>
 
=={{header|Raku}}==
===Iterative===
{{trans|Python}}
<lang perl6>sub new_level ( @stack --> Nil ) {
my $e = [];
push @stack.tail, $e;
push @stack, $e;
}
sub to_tree_iterative ( @xs --> List ) {
my $nested = [];
my @stack = $nested;
 
for @xs -> Int $x {
new_level(@stack) while $x > @stack;
pop @stack while $x < @stack;
push @stack.tail, $x;
}
 
return $nested;
}
my @tests = (), (1, 2, 4), (3, 1, 3, 1), (1, 2, 3, 1), (3, 2, 1, 3), (3, 3, 3, 1, 1, 3, 3, 3);
say .Str.fmt( '%15s => ' ), .&to_tree_iterative for @tests;</lang>
{{out}}
<pre>
=> []
1 2 4 => [1 [2 [[4]]]]
3 1 3 1 => [[[3]] 1 [[3]] 1]
1 2 3 1 => [1 [2 [3]] 1]
3 2 1 3 => [[[3] 2] 1 [[3]]]
3 3 3 1 1 3 3 3 => [[[3 3 3]] 1 1 [[3 3 3]]]
</pre>
=={{header|Wren}}==
===Iterative===
256

edits