aboutsummaryrefslogtreecommitdiff
path: root/challenge-077
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-09-09 09:32:40 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-09-09 09:32:40 +0100
commit2ae010a110aa5329b3966acdb1a397fe3cde4921 (patch)
treedeac7bad831aadcac837cab4743f3b4bb5600b43 /challenge-077
parent36968880d10099d539974498c9057412d5206684 (diff)
downloadperlweeklychallenge-club-2ae010a110aa5329b3966acdb1a397fe3cde4921.tar.gz
perlweeklychallenge-club-2ae010a110aa5329b3966acdb1a397fe3cde4921.tar.bz2
perlweeklychallenge-club-2ae010a110aa5329b3966acdb1a397fe3cde4921.zip
- Added solutions by Ulrich Rieke.
Diffstat (limited to 'challenge-077')
-rw-r--r--challenge-077/ulrich-rieke/perl/ch-2.pl73
-rw-r--r--challenge-077/ulrich-rieke/raku/ch-1.raku15
2 files changed, 88 insertions, 0 deletions
diff --git a/challenge-077/ulrich-rieke/perl/ch-2.pl b/challenge-077/ulrich-rieke/perl/ch-2.pl
new file mode 100644
index 0000000000..8779f517fa
--- /dev/null
+++ b/challenge-077/ulrich-rieke/perl/ch-2.pl
@@ -0,0 +1,73 @@
+#!/usr/bin/perl ;
+use strict ;
+use warnings ;
+use feature 'say' ;
+
+sub enterArray {
+ my $m = shift ;
+ my $n = shift ;
+ my @array ;
+ say "Please enter $n lines consisting of o and x only!" ;
+ while ( scalar @array < $n ) {
+ say "Next line : " ;
+ my $line = <STDIN> ;
+ chomp $line ;
+ if ( length $line == $m ) {
+ push( @array , $line ) ;
+ }
+ else {
+ say "line should be $m characters long!" ;
+ }
+ }
+ return @array ;
+}
+
+my $m = $ARGV[ 0 ] ;
+my $n = $ARGV[ 1 ] ;
+my @allIndices ; #contains the indices of all x'es
+my @array = enterArray( $m , $n ) ;
+for my $line ( @array ) {
+ my @xindices ; #holds the indices of x'es per line
+ for my $i (0..$m - 1 ) {
+ if ( substr( $line , $i , 1 ) eq 'x' ) {
+ push ( @xindices, $i ) ;
+ }
+ }
+ push( @allIndices, \@xindices ) ;
+}
+my @allNeighbours ;
+for my $row ( 0..$n - 1 ) {
+ my $rowstring = $array[ $row ] ;
+ my @indices = @{$allIndices[ $row ]} ;
+ if ( @indices ) {
+ for my $xcolumn ( @indices ) {
+ my $neighbours ;
+ if ( $xcolumn > 0 ) {#left
+ $neighbours .= substr( $rowstring , $xcolumn - 1 , 1 ) ;
+ }
+ if ( $xcolumn < $m - 1 ) {#right
+ $neighbours .= substr( $rowstring , $xcolumn + 1 , 1 ) ;
+ }
+ if ( $row > 0 ) { #above
+ $neighbours .= substr( $array[ $row - 1 ] , $xcolumn, 1 ) ;
+ }
+ if ( $row < $n - 1 ) { #below
+ $neighbours .= substr( $array[ $row + 1 ] , $xcolumn , 1 ) ;
+ }
+ if ( $row > 0 && $xcolumn > 0 ) {#diagonally left up
+ $neighbours .= substr( $array[ $row - 1 ] , $xcolumn - 1 , 1 ) ;
+ }
+ if ( $row > 0 && $xcolumn < $m - 1 ) {#diagonally right up
+ $neighbours .= substr( $array[ $row - 1 ] , $xcolumn + 1 , 1 ) ;
+ }
+ if ( $row < $n - 1 && $xcolumn > 0 ) {#diagonally left down
+ $neighbours .= substr( $array[ $row + 1 ] , $xcolumn - 1 , 1 ) ;
+ }
+ if ( $row < $n - 1 && $xcolumn < $m - 1 ) {#diagonally right down
+ $neighbours .= substr( $array[ $row + 1 ] , $xcolumn + 1 , 1 ) ;
+ }
+ push ( @allNeighbours, $neighbours ) ;
+ }
+ }
+}
+say scalar grep { $_ !~ /x/ } @allNeighbours ;
diff --git a/challenge-077/ulrich-rieke/raku/ch-1.raku b/challenge-077/ulrich-rieke/raku/ch-1.raku
new file mode 100644
index 0000000000..b93209052e
--- /dev/null
+++ b/challenge-077/ulrich-rieke/raku/ch-1.raku
@@ -0,0 +1,15 @@
+use v6 ;
+
+sub MAIN( Int $n ) {
+ my @fibos = ( 1 , 2 ) ;
+ while ( @fibos[*-1] < $n ) {
+ @fibos.push( @fibos[*-1] + @fibos[*-2] ) ;
+ }
+ for @fibos.combinations -> $combi {
+ if ( ([+] $combi) == $n ) {
+ my $line = $combi.join( " + " ) ;
+ $line ~= " = $n!" ;
+ say $line ;
+ }
+ }
+}