aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-11-12 10:19:10 +0000
committerGitHub <noreply@github.com>2021-11-12 10:19:10 +0000
commit61c327587fc48142d9b1e804a686b633cc0207f5 (patch)
tree729f9eaf2b9fac8c865d82337725dae8c63c5a83
parent20a361a36c71a3ad89700748f3fe582718b80b89 (diff)
parentb9f9a60c68f612e76a168ad9187273afff61f22c (diff)
downloadperlweeklychallenge-club-61c327587fc48142d9b1e804a686b633cc0207f5.tar.gz
perlweeklychallenge-club-61c327587fc48142d9b1e804a686b633cc0207f5.tar.bz2
perlweeklychallenge-club-61c327587fc48142d9b1e804a686b633cc0207f5.zip
Merge pull request #5199 from jaldhar/challenge-126
Challenge 126 by Jaldhar H. Vyas.
-rw-r--r--challenge-126/jaldhar-h-vyas/blog.txt1
-rw-r--r--challenge-126/jaldhar-h-vyas/minesweeper.txt5
-rwxr-xr-xchallenge-126/jaldhar-h-vyas/perl/ch-1.sh3
-rwxr-xr-xchallenge-126/jaldhar-h-vyas/perl/ch-2.pl53
-rwxr-xr-xchallenge-126/jaldhar-h-vyas/raku/ch-1.sh3
-rwxr-xr-xchallenge-126/jaldhar-h-vyas/raku/ch-2.raku54
6 files changed, 119 insertions, 0 deletions
diff --git a/challenge-126/jaldhar-h-vyas/blog.txt b/challenge-126/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..6e497fa2ad
--- /dev/null
+++ b/challenge-126/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2021/11/perl_weekly_challenge_week_126.html
diff --git a/challenge-126/jaldhar-h-vyas/minesweeper.txt b/challenge-126/jaldhar-h-vyas/minesweeper.txt
new file mode 100644
index 0000000000..e451b4d36a
--- /dev/null
+++ b/challenge-126/jaldhar-h-vyas/minesweeper.txt
@@ -0,0 +1,5 @@
+x * * * x * x x x x
+* * * * * * * * * x
+* * * * x * x * x *
+* * * x x * * * * *
+x * * * x * * * * x \ No newline at end of file
diff --git a/challenge-126/jaldhar-h-vyas/perl/ch-1.sh b/challenge-126/jaldhar-h-vyas/perl/ch-1.sh
new file mode 100755
index 0000000000..cf7c003aa5
--- /dev/null
+++ b/challenge-126/jaldhar-h-vyas/perl/ch-1.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+perl -E 'say scalar grep { $_ !~ /1/ } 1 .. @ARGV[0];' $@
diff --git a/challenge-126/jaldhar-h-vyas/perl/ch-2.pl b/challenge-126/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..5683cd9087
--- /dev/null
+++ b/challenge-126/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,53 @@
+#!/usr/bin/perl
+use 5.020;
+use warnings;
+use English qw/ -no_match_vars /;
+
+sub search {
+ my ($board) = @_;
+
+ my $rowlast = scalar @{$board} - 1;
+ my $collast = scalar @{$board->[0]} - 1;
+
+ for my $row (0 .. $rowlast) {
+ for my $col (0 .. $collast) {
+ if ($board->[$row]->[$col] == -1) {
+ for my $y ($row - 1 .. $row + 1) {
+ for my $x ($col - 1 .. $col + 1) {
+ if ($y < 0 || $y > $rowlast || $x < 0 || $x > $collast) {
+ next;
+ }
+ if ($board->[$y]->[$x] != -1) {
+ $board->[$y]->[$x]++;
+ }
+ }
+ }
+ }
+ }
+ }
+ return $board;
+}
+
+sub output {
+ my ($board) = @_;
+
+ for my $row (0 .. scalar @{$board} - 1) {
+ for my $col (0 .. scalar @{$board->[$row]} - 1) {
+ print $board->[$row]->[$col] == -1 ? 'x' : $board->[$row]->[$col],
+ ' ';
+ }
+ print "\n";
+ }
+}
+
+my $filename = shift // die "Need filename\n";
+
+my @board;
+
+open my $fn, '<', $filename or die "$OS_ERROR\n";
+while (my $line = <$fn>) {
+ push @board, [ map { $_ eq '*' ? 0 : -1; } split q{ }, $line ];
+}
+close $fn;
+
+output(search(\@board));
diff --git a/challenge-126/jaldhar-h-vyas/raku/ch-1.sh b/challenge-126/jaldhar-h-vyas/raku/ch-1.sh
new file mode 100755
index 0000000000..631cda73c5
--- /dev/null
+++ b/challenge-126/jaldhar-h-vyas/raku/ch-1.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+raku -e '(1 .. @*ARGS[0]).grep({ $_ !~~ /1/ }).elems.say;' $@
diff --git a/challenge-126/jaldhar-h-vyas/raku/ch-2.raku b/challenge-126/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..16a1c6e683
--- /dev/null
+++ b/challenge-126/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,54 @@
+#!/usr/bin/raku
+
+sub search(@board) {
+ my $rowlast = @board.elems - 1;
+ my $collast = @board[0].elems - 1;
+
+ my @searched;
+ for 0 .. $rowlast -> $row {
+ for 0 .. $colmlast-> $col {
+ @searched[$row][$col] = @board[$row][$col];
+ }
+ }
+
+ for 0 .. $rowlast -> $row {
+ for 0 .. $colmlast-> $col {
+ if @board[$row][$col] == -1 {
+ for $row - 1 .. $row + 1 -> $y {
+ for $col - 1 .. $col + 1 -> $x {
+ if $y < 0 || $y > $rowlast || $x < 0 || $x > $colmlast{
+ next;
+ }
+
+ if @board[$y][$x] != -1 {
+ @searched[$y][$x]++;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return @searched;
+}
+
+sub output(@board) {
+ for 0 ..^ @board.elems -> $row {
+ for 0 ..^ @board[$row].elems -> $col {
+ print (@board[$row][$col] == -1 ?? 'x' !! @board[$row][$col]), ' ';
+ }
+ print "\n";
+ }
+}
+
+sub MAIN(
+ Str $filename
+) {
+ my @board;
+
+ for $filename.IO.lines -> $line {
+ @board.push($line.split(q{ }).map({ $_ eq '*' ?? 0 !! -1; }));
+ }
+
+ @board ==> search() ==> output();
+} \ No newline at end of file