Jump to content

Tree from nesting levels: Difference between revisions

→‎Raku: Added Raku solution - string eval
(→‎{{header|Raku}}: Added Raku solution - iterative)
(→‎Raku: Added Raku solution - string eval)
Line 1,027:
3 3 3 1 1 3 3 3 => [[[3 3 3]] 1 1 [[3 3 3]]]
</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}}==
===Iterative===
256

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.