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/mohammad-anwar/raku | |
| 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/mohammad-anwar/raku')
| -rw-r--r-- | challenge-052/mohammad-anwar/raku/ch-2.p6 | 62 |
1 files changed, 62 insertions, 0 deletions
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(", ") ~ "."; + } +} |
