diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-09-09 09:32:40 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-09-09 09:32:40 +0100 |
| commit | 2ae010a110aa5329b3966acdb1a397fe3cde4921 (patch) | |
| tree | deac7bad831aadcac837cab4743f3b4bb5600b43 /challenge-077 | |
| parent | 36968880d10099d539974498c9057412d5206684 (diff) | |
| download | perlweeklychallenge-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.pl | 73 | ||||
| -rw-r--r-- | challenge-077/ulrich-rieke/raku/ch-1.raku | 15 |
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 ; + } + } +} |
