diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-08-22 13:28:56 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-08-22 13:28:56 +0100 |
| commit | 93bcb02165337c7bae1ed0d6d176248134a5d2c5 (patch) | |
| tree | 0edc566ef4545981f762c277e016924d1c29038c | |
| parent | 759922f92bfa88a1d407e4e820777d771989eb95 (diff) | |
| parent | 3b4a95bb128361481df130fe3d5ed4ef20ef8eb4 (diff) | |
| download | perlweeklychallenge-club-93bcb02165337c7bae1ed0d6d176248134a5d2c5.tar.gz perlweeklychallenge-club-93bcb02165337c7bae1ed0d6d176248134a5d2c5.tar.bz2 perlweeklychallenge-club-93bcb02165337c7bae1ed0d6d176248134a5d2c5.zip | |
Merge pull request #4758 from PerlBoy1967/branch-for-challenge-126
Task 1 & 2
| -rwxr-xr-x | challenge-126/perlboy1967/perl/ch-1.pl | 12 | ||||
| -rwxr-xr-x | challenge-126/perlboy1967/perl/ch-2.pl | 71 |
2 files changed, 83 insertions, 0 deletions
diff --git a/challenge-126/perlboy1967/perl/ch-1.pl b/challenge-126/perlboy1967/perl/ch-1.pl new file mode 100755 index 0000000000..c5aacfa370 --- /dev/null +++ b/challenge-126/perlboy1967/perl/ch-1.pl @@ -0,0 +1,12 @@ +#!/usr/bin/perl + +# Perl Weekly Challenge - 126 +# - https://perlweeklychallenge.org/blog/perl-weekly-challenge-126/#TASK1 +# +# Task 1 - Count Numbers +# +# Author: Niels 'PerlBoy' van Dijke + +use 5.16.0; + +say scalar grep !/1/,1..shift; diff --git a/challenge-126/perlboy1967/perl/ch-2.pl b/challenge-126/perlboy1967/perl/ch-2.pl new file mode 100755 index 0000000000..23c2a52037 --- /dev/null +++ b/challenge-126/perlboy1967/perl/ch-2.pl @@ -0,0 +1,71 @@ +#!/usr/bin/perl + +# Perl Weekly Challenge - 126 +# - https://perlweeklychallenge.org/blog/perl-weekly-challenge-126/#TASK2 +# +# Task 2 - Minesweeper Game +# +# Author: Niels 'PerlBoy' van Dijke + +use v5.16; +use strict; +use warnings; + +# Prototype(s) +sub generateBoard($$\@); +sub printBoard(\@); +sub solveBoard(\@); + +my @B; + +@ARGV = (8,8) unless scalar @ARGV; + +generateBoard(shift,shift,@B); +printBoard(@B); +solveBoard(@B); +printBoard(@B); + + +sub generateBoard($$\@) { + my ($w,$h,$arB) = @_; + + my @c = qw(X . . . .); # 1 in 5 chance of placing a bomb + + foreach my $y (1 .. $h) { + foreach my $x (1 .. $w) { + $arB->[$y][$x] = $c[int rand(scalar @c)]; + } + $arB->[$y+1] = []; + } +} + +sub printBoard(\@) { + my ($arB) = @_; + + print " ----[Board]----\n"; + foreach my $y (1 .. scalar(@$arB)-2) { + printf "%s\n", join(' ',map{$_//''} @{$arB->[$y]}); + } + print " ---------------\n"; +} + +sub solveBoard(\@) { + my ($arB) = @_; + + foreach my $y (1 .. scalar(@$arB)-2) { + foreach my $x (1 .. scalar(@{$arB->[1]})-1) { + next if $arB->[$y][$x] eq 'X'; + my $n = scalar grep /X/, + $arB->[$y-1][$x-1] // '', # NW + $arB->[$y-1][$x] // '', # N + $arB->[$y-1][$x+1] // '', # NE + $arB->[$y][$x-1] // '', # W + $arB->[$y][$x+1] // '', # E + $arB->[$y+1][$x-1] // '', # SW + $arB->[$y+1][$x] // '', # S + $arB->[$y+1][$x+1] // ''; # SE + $arB->[$y][$x] = ($n == 0 ? '.' : $n); + } + } +} + |
