diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-04-26 18:45:53 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-04-26 18:45:53 +0100 |
| commit | f9bcf8ac338ab7959abf52d10acaa3ee63cd9551 (patch) | |
| tree | 771c4de3bdb64acd8ef9a74450d2ef50f6a46acc | |
| parent | 44f8641353228262c26e481c2f0ffb563273af19 (diff) | |
| parent | bd74d28150c9aedc46984dd57d5daeef7349e174 (diff) | |
| download | perlweeklychallenge-club-f9bcf8ac338ab7959abf52d10acaa3ee63cd9551.tar.gz perlweeklychallenge-club-f9bcf8ac338ab7959abf52d10acaa3ee63cd9551.tar.bz2 perlweeklychallenge-club-f9bcf8ac338ab7959abf52d10acaa3ee63cd9551.zip | |
Merge pull request #6010 from fluca1978/pwc162b
Pwc162b
| -rwxr-xr-x | challenge-162/luca-ferrari/raku/ch-1.p6 | 6 | ||||
| -rwxr-xr-x | challenge-162/luca-ferrari/raku/ch-2.p6 | 96 |
2 files changed, 102 insertions, 0 deletions
diff --git a/challenge-162/luca-ferrari/raku/ch-1.p6 b/challenge-162/luca-ferrari/raku/ch-1.p6 new file mode 100755 index 0000000000..0c4ccef759 --- /dev/null +++ b/challenge-162/luca-ferrari/raku/ch-1.p6 @@ -0,0 +1,6 @@ +#!raku + +sub MAIN( Str $isbn where { $isbn.chars == 12 && $isbn.comb.grep( * ~~ / <[0 .. 9]> / ).elems == $isbn.chars } ) { + my $position = 0; + say 10 - ( $isbn.comb.map( { $_ * ( ++$position %% 2 ?? 3 !! 1 ) } ).sum % 10 ); +} diff --git a/challenge-162/luca-ferrari/raku/ch-2.p6 b/challenge-162/luca-ferrari/raku/ch-2.p6 new file mode 100755 index 0000000000..d3e3e6e2fe --- /dev/null +++ b/challenge-162/luca-ferrari/raku/ch-2.p6 @@ -0,0 +1,96 @@ +#!raku + +sub build-grid( Str $passprhase ) { + my @grid; + my $counter = 0; + for $passprhase.comb { + # skip existing letters + next if @grid.grep( $_ ); + next if $_ !~~ / <[ a .. z ]> /; + + # insert this letter + @grid.push: $_; + @grid.push: '|' if ++$counter %% 5; + } + + # add the other letters + unless ( @grid.grep( '|' ).elems == 5 ) { + for 'a' .. 'z' { + next if @grid.grep( $_ ); + next if $_ ~~ / i /; + next if $_ ~~ / j /; + + # insert this letter + @grid.push: $_; + @grid.push: '|' if ++$counter %% 5; + last if @grid.grep( '|' ).elems == 5; + } + } + + # now split the array into a matrix + my @matrix; + for @grid.join.split( '|' ) { + next if ! $_; + @matrix.push: [ $_.comb ]; + } + + say @matrix; + return @matrix; +} + + +sub build-pairs( Str $needle ) { + + my @mangled; + my @current; + for $needle.comb { + next if $_ ~~ / ' ' /; + + @current.push: $_ if ! @mangled.grep( $_ ); + @current.push: 'X' if @mangled.grep( $_ ); + + if @current.elems == 2 { + @mangled.push: [@current]; + @current = (); + } + } + + return @mangled; +} + + +sub MAIN() { + my @key-matrix = build-grid( 'playfair example' ); + my @pairs = build-pairs( 'hide the gold in the tree stump' ); + + + for @pairs -> @current-pair { + my @rectangle; + + for 0 ..^ @current-pair { + my $current_letter = @current-pair[ $_ ]; + my $found = False; + + for 0 ..^ @key-matrix.elems -> $row { + for 0 ..^ 5 -> $column { + if @key-matrix[ $row ][ $column ] ~~ $current_letter { + # found! + @rectangle.push: ( row => $row, col => $column ).Hash; + $found = True; + } + + last if $found; + } + + last if $found; + } + } + + say @current-pair.join; + say @rectangle; + + say @rectangle[ 0 ].^name; +# my $is-rectangle = @rectangle[ 0 ]{ row } != @rectangle[ 1 ]{ row } && @rectangle[ 0 ]{ col } != @rectangle[ 1 ]{ col }; +# say "rettangolo $is-rectangle"; + } +} |
