in reply to 52 Perl Pickup
- Milleruse List::Util qw(shuffle); use strict; # Ordered least to greatest my @suit = qw(C D H S); my @rank = ( 2 .. 10, qw(J Q K A) ); # Construct a standard deck my @card = map { my $suit = $_; map { "$_$suit" } @rank } @suit; # Shuffle 4 piles of cards. my @pile = shuffle( (@card) x 4 ); print "Pile\n\t@pile\n\n"; # Sort my %ord_suit = map { $suit[$_] => $_ } ( 0 .. $#suit ); my %ord_rank = map { $rank[$_] => $_ } ( 0 .. $#rank ); my @pile_sorted = map { $_->[0] } sort { $ord_suit{ $a->[1][1] } <=> $ord_suit{ $b->[1][1] } || $ord_rank{ $a->[1][0] } <=> $ord_rank{ $b->[1][0] } } map { [ $_, [m/(.*)(.)/] ] } @pile; # Group Cards into Decks my @deck; my $lastcard = ''; my $index; for my $card (@pile_sorted) { if ( $card ne $lastcard ) { $index = 0; } else { $index++; } push @{ $deck[$index] }, $card; $lastcard = $card; } print "Decks\n"; foreach (@deck) { print "\t@$_\n"; }
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: 52 Perl Pickup
by wind (Priest) on Aug 04, 2007 at 01:37 UTC | |
Re^2: 52 Perl Pickup
by Upstairs (Novice) on Aug 26, 2007 at 14:57 UTC | |
by Upstairs (Novice) on Aug 27, 2007 at 11:59 UTC |