aboutsummaryrefslogtreecommitdiff
path: root/challenge-052/mohammad-anwar/raku
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-03-20 00:01:34 +0000
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-03-20 00:01:34 +0000
commit931e2e96c677bb3a35c775ab0dd1113517e03118 (patch)
tree43efe4581daf13543ccc54b352229dec63f0c60a /challenge-052/mohammad-anwar/raku
parentb74a552a4711ab1d3c7e7c6e7a1b5d7d64765cab (diff)
downloadperlweeklychallenge-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.p662
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(", ") ~ ".";
+ }
+}