diff options
| author | Mark A <andemark@a-iot1t.uch.ad.pvt> | 2021-08-16 05:35:20 -0600 |
|---|---|---|
| committer | Mark A <andemark@a-iot1t.uch.ad.pvt> | 2021-08-16 05:35:20 -0600 |
| commit | baa2c51105dd5d038a7f6ec0fdb4d721c97b7dc1 (patch) | |
| tree | 02797c4288d500f363104c76b08ecf83802ab037 | |
| parent | 6efb25dc769e9d974cc90950bb7b75213dab3124 (diff) | |
| download | perlweeklychallenge-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.raku | 12 | ||||
| -rw-r--r-- | challenge-126/mark-anderson/raku/ch-2.raku | 41 |
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 +} |
