P17 - Split a list into two parts; the length of the first part is given.
Author: David Romano
Specification
P17 (*) Split a list into two parts; the length of the first part is given. Do not use any predefined predicates.
Example
> say bisect(<a b c d e f g h i k>, 3).perl (["a", "b", "c"], ["d", "e", "f", "g", "h", "i", "k"])
Source code: P17-unobe.pl
use v6; my @l = <a b c d e f g h i k>; sub prob17(@in, $n) { if @in.end < $n { return @in } else { my $beg = [gather { for 0...$n-1 { take @in[$_] } }]; my $end = [gather { for $n...@in.end { take @in[$_] } }]; return ($beg, $end); } } say @l.perl; say prob17(@l, 3).perl;