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> |
<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> |
||