Frame anything as a poker problem and I'll probably bite.
YuckCall
#!/usr/bin/perl
use strict;
use Storable qw(dclone);
use Data::Dumper;
my $players = {
big_slicks => {
list => [qw(AsKs AhKh AdKd AcKc)],
},
big_hearts => {
list => [qw(AhKh KhQh QhJh JhTh)],
},
ace_ragman => {
list => [qw(As7c Ah6d Ac8s Ad9h)],
},
};
my $my_hand = 'AcAs';
for (1..10) {
my $hands = iterate($players, $my_hand);
$hands->{my_hand} = $my_hand;
print Dumper $hands;
}
#-----------------------------------------------------------
sub iterate {
my $players = shift;
my $my_hand = shift;
$players = dclone($players);
for my $card ($my_hand =~ /(.{2})/g) {
update($players, $card);
}
my $player_hands = {};
my @player_keys = keys(%$players);
while (@player_keys) {
my $player = splice(@player_keys, rand(@player_keys), 1);
my $hand_list = $players->{$player}{list};
my $pick = splice(@$hand_list, rand(@$hand_list), 1);
for my $card ($pick =~ /(.{2})/g) {
update($players, $card);
}
$player_hands->{$player} = $pick;
}
return $player_hands;
}
#-----------------------------------------------------------
sub update {
my $players = shift;
my $card = shift;
for my $player (keys(%$players)) {
my @new_list = grep { $_ !~ m/$card/ } @{$players->{$player}{list}
+};
$players->{$player}{list} = \@new_list;
}
}
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|