Tree from nesting levels: Difference between revisions

Content added Content deleted
(→‎{{header|Raku}}: Added Raku solution - iterative)
(→‎Raku: Added Raku solution - string eval)
Line 1,027: Line 1,027:
3 3 3 1 1 3 3 3 => [[[3 3 3]] 1 1 [[3 3 3]]]
3 3 3 1 1 3 3 3 => [[[3 3 3]] 1 1 [[3 3 3]]]
</pre>
</pre>
===String Eval===
{{trans|Perl}}
<lang perl6>use MONKEY-SEE-NO-EVAL;
sub to_tree_string_eval ( @xs --> Array ) {
my @gap = [ |@xs, 0 ] Z- [ 0, |@xs ];

my @open = @gap.map( '[' x * );
my @close = @gap.map( ']' x -* );

my @wrapped = [Z~] @open, @xs, @close.skip;

return EVAL @wrapped.join(',').subst(:g, ']]', '],]') || '[]';
}
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_string_eval 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}}==
=={{header|Wren}}==
===Iterative===
===Iterative===