diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-11-12 10:19:10 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-12 10:19:10 +0000 |
| commit | 61c327587fc48142d9b1e804a686b633cc0207f5 (patch) | |
| tree | 729f9eaf2b9fac8c865d82337725dae8c63c5a83 | |
| parent | 20a361a36c71a3ad89700748f3fe582718b80b89 (diff) | |
| parent | b9f9a60c68f612e76a168ad9187273afff61f22c (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rw-r--r-- | challenge-126/jaldhar-h-vyas/minesweeper.txt | 5 | ||||
| -rwxr-xr-x | challenge-126/jaldhar-h-vyas/perl/ch-1.sh | 3 | ||||
| -rwxr-xr-x | challenge-126/jaldhar-h-vyas/perl/ch-2.pl | 53 | ||||
| -rwxr-xr-x | challenge-126/jaldhar-h-vyas/raku/ch-1.sh | 3 | ||||
| -rwxr-xr-x | challenge-126/jaldhar-h-vyas/raku/ch-2.raku | 54 |
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 |
