diff options
| author | sangeet <sangeet.kar@gmail.com> | 2020-05-27 14:37:39 +0000 |
|---|---|---|
| committer | sangeet <sangeet.kar@gmail.com> | 2020-05-27 14:37:39 +0000 |
| commit | f753553d92534019a9b35c1e595396c0aeeb8f18 (patch) | |
| tree | bb0d8800a4e2059cfdeca5d4b972e5d2ff14e4a5 | |
| parent | 3a5332d7b344d554f481faa1da1486880d959fbc (diff) | |
| download | perlweeklychallenge-club-f753553d92534019a9b35c1e595396c0aeeb8f18.tar.gz perlweeklychallenge-club-f753553d92534019a9b35c1e595396c0aeeb8f18.tar.bz2 perlweeklychallenge-club-f753553d92534019a9b35c1e595396c0aeeb8f18.zip | |
First attempt
| -rw-r--r-- | challenge-062/sangeet-kar/raku/ch-1.1.sh | 1 | ||||
| -rw-r--r-- | challenge-062/sangeet-kar/raku/ch-1.2.sh | 1 | ||||
| -rwxr-xr-x | challenge-062/sangeet-kar/raku/ch-1.raku | 7 | ||||
| -rwxr-xr-x | challenge-062/sangeet-kar/raku/ch-2.raku | 35 | ||||
| -rw-r--r-- | challenge-062/sangeet-kar/raku/mails.txt | 5 | ||||
| -rw-r--r-- | challenge-062/sangeet-kar/raku/mails2.txt | 1 |
6 files changed, 50 insertions, 0 deletions
diff --git a/challenge-062/sangeet-kar/raku/ch-1.1.sh b/challenge-062/sangeet-kar/raku/ch-1.1.sh new file mode 100644 index 0000000000..fd94c10be9 --- /dev/null +++ b/challenge-062/sangeet-kar/raku/ch-1.1.sh @@ -0,0 +1 @@ +raku -e 'lines>>.split("@").sort({.[1].lc ~ .[0]})>>.join("@")>>.say' mails.txt mails2.txt diff --git a/challenge-062/sangeet-kar/raku/ch-1.2.sh b/challenge-062/sangeet-kar/raku/ch-1.2.sh new file mode 100644 index 0000000000..c5975bcb52 --- /dev/null +++ b/challenge-062/sangeet-kar/raku/ch-1.2.sh @@ -0,0 +1 @@ +raku -e 'lines>>.split("@").unique(as=>{.[0] ~ .[1].lc}).sort({.[1].lc ~ .[0]})>>.join("@")>>.say' mails.txt diff --git a/challenge-062/sangeet-kar/raku/ch-1.raku b/challenge-062/sangeet-kar/raku/ch-1.raku new file mode 100755 index 0000000000..bf5c4afd00 --- /dev/null +++ b/challenge-062/sangeet-kar/raku/ch-1.raku @@ -0,0 +1,7 @@ +#!/usr/bin/env raku + +sub MAIN(Bool :$u=False, *@files){ + my @mails = @files ?? @files.flatmap(*.IO.lines) + !! $*IN.lines; + @mails».split("@").&{$u ?? .unique(as => {$^a[0] ~ $^a[1].lc}) !! .self}.sort({.[1].lc ~ .[0]})».join("@")».say; +} diff --git a/challenge-062/sangeet-kar/raku/ch-2.raku b/challenge-062/sangeet-kar/raku/ch-2.raku new file mode 100755 index 0000000000..4a124254fb --- /dev/null +++ b/challenge-062/sangeet-kar/raku/ch-2.raku @@ -0,0 +1,35 @@ +#!/usr/bin/env raku + +sub n-queens-threeD($n = 2) { + my @solutions = []; + place-queen [^$n X ^$n X ^$n], [], @solutions; + return indices-to-array @solutions.max(+*), $n; +} + + +sub place-queen(@indices, @queens, @solutions) { + @solutions.push([@queens]) if not @indices; + for @indices -> $pos { + place-queen(@indices.grep({is-available($pos, $_)}), (|@queens, $pos), @solutions); + } +} + + +sub is-available($ref, $pos) { + my ($refx, $refy, $refz) = $ref; + my ($x, $y, $z) = $pos; + my $diff = ($ref »-« $pos)».abs.Set; + not (+$diff == 1 || (+$diff == 2 && 0 ∈ $diff)) +} + +sub indices-to-array(@indices, $n) { + my @array = [[[ 0 xx $n] xx $n] xx $n]; + for @indices -> ($x, $y, $z) { + @array[$x; $y; $z] = 1; + } + return @array; +} + +sub MAIN (Int :$n=2) { + say n-queens-threeD $n; +} diff --git a/challenge-062/sangeet-kar/raku/mails.txt b/challenge-062/sangeet-kar/raku/mails.txt new file mode 100644 index 0000000000..5dc3f2ceb0 --- /dev/null +++ b/challenge-062/sangeet-kar/raku/mails.txt @@ -0,0 +1,5 @@ +name@example.org +rjt@cpan.org +Name@example.org +rjt@CPAN.org +user@alpha.example.org diff --git a/challenge-062/sangeet-kar/raku/mails2.txt b/challenge-062/sangeet-kar/raku/mails2.txt new file mode 100644 index 0000000000..10ec915529 --- /dev/null +++ b/challenge-062/sangeet-kar/raku/mails2.txt @@ -0,0 +1 @@ +ssk@gmail.com |
