diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2023-01-14 22:45:57 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-14 22:45:57 +0000 |
| commit | 0c676bb01724a46f4adad3b3830e7ac0eafc7407 (patch) | |
| tree | 12dd0c1b024f910bc9b0562e771bd3ad257e11d4 | |
| parent | bb230659e3c91fda4c81fb141210ca111a2a5970 (diff) | |
| parent | b3b746a6b9797b88260332df5dfafb952bab2faf (diff) | |
| download | perlweeklychallenge-club-0c676bb01724a46f4adad3b3830e7ac0eafc7407.tar.gz perlweeklychallenge-club-0c676bb01724a46f4adad3b3830e7ac0eafc7407.tar.bz2 perlweeklychallenge-club-0c676bb01724a46f4adad3b3830e7ac0eafc7407.zip | |
Merge pull request #7410 from carlos157oliveira/challenge-199
solution to challenge 199
| -rw-r--r-- | challenge-199/carlos-oliveira/raku/ch-1.raku | 18 | ||||
| -rw-r--r-- | challenge-199/carlos-oliveira/raku/ch-2.raku | 23 |
2 files changed, 41 insertions, 0 deletions
diff --git a/challenge-199/carlos-oliveira/raku/ch-1.raku b/challenge-199/carlos-oliveira/raku/ch-1.raku new file mode 100644 index 0000000000..1146a7aa1f --- /dev/null +++ b/challenge-199/carlos-oliveira/raku/ch-1.raku @@ -0,0 +1,18 @@ +use Test; + + +sub good-pairs (Int:D @integers --> List:D[Int:D]) { + my $list-end = @integers.end; + my @pairs; + for (0..$list-end X 0..$list-end).grep: { @_[0] < @_[1] } -> ($i, $j) { + if @integers[$i] == @integers[$j] { + @pairs.push: ($i, $j) + } + } + return @pairs; +} + + +is good-pairs(my Int @ = 1,2,3,1,1,3), [(0, 3), (0, 4), (2, 5), (3, 4)], 'Test 1'; +is good-pairs(my Int @ = 1,2,3), [], 'Test 2'; +is good-pairs(my Int @ = 1,1,1,1), [(0,1),(0,2),(0,3),(1,2),(1,3),(2,3)], 'Test 3'; diff --git a/challenge-199/carlos-oliveira/raku/ch-2.raku b/challenge-199/carlos-oliveira/raku/ch-2.raku new file mode 100644 index 0000000000..97a4d664a0 --- /dev/null +++ b/challenge-199/carlos-oliveira/raku/ch-2.raku @@ -0,0 +1,23 @@ +use Test; + + +sub good-triplets (Int:D @integers, Int:D :$x!, Int:D :$y!, Int:D :$z! --> List:D[Int:D]) { + my $end = @integers.end; + my @triplets; + for (0..$end X 0..$end X 0..$end).grep: { @_[0] < @_[1] < @_[2] } -> ($i, $j, $k) { + ($x, $y, $z) + ==> zip ( + abs(@integers[$i] - @integers[$j]), + abs(@integers[$j] - @integers[$k]), + abs(@integers[$i] - @integers[$k]) + ) + ==> map({ @_[0] <= @_[1] }) + ==> my @result; + @triplets.push: (@integers[$i], @integers[$j], @integers[$k]) if all(@result); + } + return @triplets; +} + + +is good-triplets(Array[Int].new(3,0,1,1,9,7), :x(7), :y(2), :z(3)), [<3 0 1>, <3 0 1>, <3 1 1>, <0 1 1>]; +is good-triplets(Array[Int].new(1,1,2,2,3), :x(0), :y(0), :z(1)), []; |
