diff options
| -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 |
