Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: Poker problem

by YuckFoo (Abbot)
on Dec 02, 2008 at 21:31 UTC ( #727495=note: print w/ replies, xml ) Need Help??


in reply to Poker problem

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


Comment on Re: Poker problem
Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://727495]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (12)
As of 2015-07-30 10:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (271 votes), past polls