Card shuffles: Difference between revisions

Content added Content deleted
No edit summary
Line 2,000: Line 2,000:
(formerly Perl 6)
(formerly Perl 6)


<lang perl6>use v6;
<lang perl6>
use v6;

sub overhand ( @cards ) {
sub overhand ( @cards ) {
my @splits = roll 10, ^( @cards.elems div 5 )+1;
my @splits = roll 10, ^( @cards.elems div 5 )+1;
@cards.rotor( @splits ,:partial ).reverse.flat
@cards.rotor( @splits ,:partial ).reverse.flat
}
}

sub riffle ( @pile is copy ) {
sub riffle ( @pile is copy ) {
my @pile2 = @pile.splice: @pile.elems div 2 ;
my @pile2 = @pile.splice: @pile.elems div 2 ;

roundrobin(
roundrobin(
@pile.rotor( (1 .. 3).roll(7), :partial ),
@pile.rotor( (1 .. 3).roll(7), :partial ),
@pile2.rotor( (1 .. 3).roll(9), :partial ),
@pile2.rotor( (1 .. 3).roll(9), :partial ),
).flat
).flat
}
}

my @cards = ^20;
my @cards = ^20;
@cards.=&overhand for ^10;
@cards.=&overhand for ^10;
say @cards;
say @cards;

my @cards2 = ^20;
my @cards2 = ^20;
@cards2.=&riffle for ^10;
@cards2.=&riffle for ^10;
say @cards2;
say @cards2;

say (^20).pick(*);
say (^20).pick(*);
</lang>
</lang>