diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-03-20 00:01:34 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-03-20 00:01:34 +0000 |
| commit | 931e2e96c677bb3a35c775ab0dd1113517e03118 (patch) | |
| tree | 43efe4581daf13543ccc54b352229dec63f0c60a /challenge-052 | |
| parent | b74a552a4711ab1d3c7e7c6e7a1b5d7d64765cab (diff) | |
| download | perlweeklychallenge-club-931e2e96c677bb3a35c775ab0dd1113517e03118.tar.gz perlweeklychallenge-club-931e2e96c677bb3a35c775ab0dd1113517e03118.tar.bz2 perlweeklychallenge-club-931e2e96c677bb3a35c775ab0dd1113517e03118.zip | |
- Added Raku solution to Lucky Winner.
Diffstat (limited to 'challenge-052')
| -rw-r--r-- | challenge-052/mohammad-anwar/perl/ch-2.pl | 10 | ||||
| -rw-r--r-- | challenge-052/mohammad-anwar/raku/ch-2.p6 | 62 |
2 files changed, 67 insertions, 5 deletions
diff --git a/challenge-052/mohammad-anwar/perl/ch-2.pl b/challenge-052/mohammad-anwar/perl/ch-2.pl index 7db20234ac..1891055f4e 100644 --- a/challenge-052/mohammad-anwar/perl/ch-2.pl +++ b/challenge-052/mohammad-anwar/perl/ch-2.pl @@ -35,31 +35,31 @@ $coin = shift @$table; $players->{$current}->{bank} += $coin; push @{$players->{$current}->{coins}}, $coins->{$coin}; -_declare_winner($players); +_declare_lucky_winner($players); _show_coins($players); # # # METHODS -sub _declare_winner { +sub _declare_lucky_winner { my ($players) = @_; - print "The winner is "; + print "The lucky winner is "; if ($players->{0}->{bank} > $players->{1}->{bank}) { print $players->{0}->{name}; } else { print $players->{1}->{name}; } - print "\n"; + print ".\n"; } sub _show_coins { my ($players) = @_; foreach (0..1) { - print sprintf("%s picked coins %s\n", + print sprintf("%s picked coins %s.\n", $players->{$_}->{name}, join(", ", @{$players->{$_}->{coins}}) ); } } diff --git a/challenge-052/mohammad-anwar/raku/ch-2.p6 b/challenge-052/mohammad-anwar/raku/ch-2.p6 new file mode 100644 index 0000000000..b001e2b8ff --- /dev/null +++ b/challenge-052/mohammad-anwar/raku/ch-2.p6 @@ -0,0 +1,62 @@ +#!/usr/bin/env perl6 + +use v6.c; + +sub MAIN() { + # Setup coins with description + my %coins = + 100 => "£1", 50 => "50p", 1 => "1p", 10 => "10p", + 5 => "5p", 20 => "20p", 200 => "£2", 2 => "2p" + ; + + # Arrange coins on the table + my @table = (); + for %coins.keys -> $c { + push @table, $c; + } + @table = @table.pick(@table); + + # Setup players for the game + my %players = + 0 => { "name" => "Human", "bank" => 0, "coins" => [] }, + 1 => { "name" => "Machine", "bank" => 0, "coins" => [] }, + ; + + # Make machine the first player to pick the coin + my Int $current = 1; + + # Play the game now + my $coin; + while @table.elems { + if @table[0] > @table[*-1] { + $coin = @table.shift; + } + else { + $coin = @table.pop; + } + + %players{$current}<"bank"> += $coin; + %players{$current}<"coins">.append(%coins{$coin}); + + $current = ($current)??(0)!!(1); + } + + declare-lucky-winner(%players); + show-coins(%players); +} + +sub declare-lucky-winner(%players) { + if %players<0><bank> > %players<1><bank> { + say "The lucky winner is " ~ %players<0><name> ~ "."; + } + else { + say "The lucky winner is " ~ %players<1><name> ~ "."; + } +} + +sub show-coins(%players) { + for 0..1 -> $player { + say %players{$player}<name> ~ " picked coins " ~ + @(%players{$player}<"coins">).join(", ") ~ "."; + } +} |
