Raul Ruiz Jr. wrote:
Here is a basic card shuffling program I wrote.
Perl already provides you with a shuffling function:
perldoc List::Util
I am learning about developing perl libraries. How do I remove my code
that does the shuffling and include it as another function in a lib.pl.
After the first "hand" is dealt, call the
shuffling function again before dealing another, different hand.
perldoc perlmod
perldoc perlmodlib
perldoc perlmodstyle
perldoc perlnewmod
I figured out how to make a shuffling script but not sure how
to make this work in a separate lib.pl script? Can some one point me in
the right direction?
Thanks for your time.
Here's my code:
#!/usr/bin/perl
my @startingdeck = ("A H","2 H","3 H","4 H","5 H","6 H","7 H","8 H",
"9 H","10 H","J H","Q H","K H",
"A D","2 D","3 D","4 D","5 D","6 D","7 D","8 D",
"9 D","10 D","J D","Q D","K D",
"A C","2 C","3 C","4 C","5 C","6 C","7 C","8
C",
"9 C","10 C","J C","Q C","K C",
"A S","2 S","3 S","4 S","5 S","6 S","7 S","8 S",
"9 S","10 S","J S","Q S","K S");
my @right;
my @left;
SHUFFLE:
unshift @left, pop @startingdeck for 1..26;
@right = @startingdeck;
@startingdeck = ();
while(@left or @right){
if (rand() < 0.5){
@left and push @startingdeck, shift @left
}else{
@right and push @startingdeck, shift @right
}
};
rand() < 0.9 and goto SHUFFLE;
That's more "perlish" as:
my @right;
my @left;
{ @right = splice @startingdeck, @startingdeck / 2;
@left = splice @startingdeck;
while ( @left or @right ) {
if ( rand() < 0.5 ) {
@left and push @startingdeck, shift @left
}
else {
@right and push @startingdeck, shift @right
}
}
rand() < 0.9 and redo;
}
Although you should really use List::Util::shuffle:
use List::Util 'shuffle';
@startingdeck = shuffle @startingdeck;
print "the top five cards are @startingdeck[0..4]\n";
John
--
Perl isn't a toolbox, but a small machine shop where you
can special-order certain sorts of tools at low cost and
in short order. -- Larry Wall
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/