Perl 6のroundrobin

1300 ワード

定義
multi roundrobin(List:D: --> Seq)

使用法
roundrobin LISTS

Round-Robin Merge Two Lists of Different Length
roundrobinはzipに似ています.異なる点は、roundrobinは光要素のリストで停止するのではなく、定義されていない値をスキップするだけです.
my @a = 1;
my @b = 1..2;
my @c = 1..3;

for flat roundrobin(@a, @b, @c) -> $x { $x.say } # 1,1,1,2,2,3

最も長いリストの要素がなくなるまで、未定の値をスキップしただけです.
my @list1 = 'a' .. 'h';
my @list2 = ;
say flat roundrobin @list1, @list2; # a x b y c d e f g h

roundrobinはSeqの列を返すのでflatを使用して展開します.
my @list1 = 'a' .. 'h';
my @list2 = ;
my $n = 3;
say flat roundrobin @list1.rotor($n - 1, :partial), @list2;

# >>>
# OUTPUT«a b x c d y e f g h»
.rotorメソッドは、1つのリストをサブリストに分解します.
2つの文字列を交差する文字
#Given:
u = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
l = 'abcdefghijklmnopqrstuvwxyz'

#Wanted:
'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'

方法1:
say join '', (u.comb Z l.comb);

方法2:
say [~] (u.comb Z l.comb);

方法3
say [~] flat (u.comb Z l.comb);