aboutsummaryrefslogtreecommitdiff
path: root/challenge-052
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
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')
-rw-r--r--challenge-052/mohammad-anwar/perl/ch-2.pl10
-rw-r--r--challenge-052/mohammad-anwar/raku/ch-2.p662
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(", ") ~ ".";
+ }
+}