Skip to content

Instantly share code, notes, and snippets.

@Xliff
Last active January 26, 2018 11:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Xliff/daae42a5ca02e695ac8710e528fab297 to your computer and use it in GitHub Desktop.
Save Xliff/daae42a5ca02e695ac8710e528fab297 to your computer and use it in GitHub Desktop.
Array.transpose, anyone?
use v6.c;
sub transpose(@a) {
my @ar;
if @a.all ~~ List {
my $maxdim = @a.map( *.elems ).max;
@ar = @a.map( *.Array );
for @ar -> $a {
$a.push: |(Nil xx ($maxdim - $a.elems)) if $a.elems < $maxdim;
}
@ar = [Z] @ar;
} else {
@ar = @a.map( { [$_] });
}
@ar;
}
sub MAIN {
my @t;
@t = (<A B C>,<D E F>,<G H I>);
say @t;
say transpose(@t);
@t = <X Y Z>;
say @t;
say transpose(@t);
@t = (<A B C>,<D E>, ['G']);
say @t;
say @t = transpose(@t);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment