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/


Reply via email to