aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark A <andemark@a-iot1t.uch.ad.pvt>2021-08-16 05:35:20 -0600
committerMark A <andemark@a-iot1t.uch.ad.pvt>2021-08-16 05:35:20 -0600
commitbaa2c51105dd5d038a7f6ec0fdb4d721c97b7dc1 (patch)
tree02797c4288d500f363104c76b08ecf83802ab037
parent6efb25dc769e9d974cc90950bb7b75213dab3124 (diff)
downloadperlweeklychallenge-club-baa2c51105dd5d038a7f6ec0fdb4d721c97b7dc1.tar.gz
perlweeklychallenge-club-baa2c51105dd5d038a7f6ec0fdb4d721c97b7dc1.tar.bz2
perlweeklychallenge-club-baa2c51105dd5d038a7f6ec0fdb4d721c97b7dc1.zip
Challenge 126 (Raku)
-rw-r--r--challenge-126/mark-anderson/raku/ch-1.raku12
-rw-r--r--challenge-126/mark-anderson/raku/ch-2.raku41
2 files changed, 53 insertions, 0 deletions
diff --git a/challenge-126/mark-anderson/raku/ch-1.raku b/challenge-126/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..277b3fbc11
--- /dev/null
+++ b/challenge-126/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,12 @@
+#!/usr/bin/env raku
+
+use Test;
+plan 2;
+
+is count-numbers(15), 8;
+is count-numbers(25), 13;
+
+sub count-numbers($N)
+{
+ + grep { not .contains: 1 }, 1..$N;
+}
diff --git a/challenge-126/mark-anderson/raku/ch-2.raku b/challenge-126/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..75b2856b4c
--- /dev/null
+++ b/challenge-126/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,41 @@
+#!/usr/bin/env raku
+
+#| rows, columns, percent of mines
+sub MAIN($r, $c, $p)
+{
+ my $n = $r * $c;
+ my $mines = ($p / 100 * $n).floor;
+ my @m = ('*' x $n - $mines ~ 'x' x $mines).comb
+ .pick($n)
+ .rotor($c)
+ .map(*.Array);
+
+ .say for @m;
+ say ' ';
+ .say for minesweeper(@m);
+}
+
+sub minesweeper(@m)
+{
+ my $rows = + @m;
+ my $cols = + @m.head;
+
+ for ^$rows X ^$cols -> ($r, $c)
+ {
+ next if @m[$r;$c] eq 'x';
+
+ @m[$r;$c] = + .comb('x') given gather
+ {
+ take @m[$r-1;$c] // '*'; # N
+ take @m[$r-1;$c+1] // '*'; # NE
+ take @m[$r;$c+1] // '*'; # E
+ take @m[$r+1;$c+1] // '*'; # SE
+ take @m[$r+1;$c] // '*'; # S
+ take @m[$r+1;$c-1] // '*'; # SW
+ take @m[$r;$c-1] // '*'; # W
+ take @m[$r-1;$c-1] // '*'; # NW
+ }
+ }
+
+ @m
+}