diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2023-03-19 07:37:11 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2023-03-19 07:37:11 +0000 |
| commit | e1c991f996d95156741bc2410a7b978526f1d478 (patch) | |
| tree | f126544f1d70591e30908e2de934ee4de6d9724b | |
| parent | 5a46973e2f1fed5547e0e4fb7f1adcf3a3ea525e (diff) | |
| parent | 0cbd2cab1314655f8baec5d1cdf456600f5c7846 (diff) | |
| download | perlweeklychallenge-club-e1c991f996d95156741bc2410a7b978526f1d478.tar.gz perlweeklychallenge-club-e1c991f996d95156741bc2410a7b978526f1d478.tar.bz2 perlweeklychallenge-club-e1c991f996d95156741bc2410a7b978526f1d478.zip | |
Merge branch 'master' of https://github.com/manwar/perlweeklychallenge-club
| -rw-r--r-- | challenge-208/carlos-oliveira/raku/ch-1.raku | 30 | ||||
| -rw-r--r-- | challenge-208/carlos-oliveira/raku/ch-2.raku | 14 |
2 files changed, 44 insertions, 0 deletions
diff --git a/challenge-208/carlos-oliveira/raku/ch-1.raku b/challenge-208/carlos-oliveira/raku/ch-1.raku new file mode 100644 index 0000000000..7eb011e6f8 --- /dev/null +++ b/challenge-208/carlos-oliveira/raku/ch-1.raku @@ -0,0 +1,30 @@ +use Test; + +sub minimum-index-sum (Str @array1, Str @array2 --> Hash(Seq)) { + return (@array1.pairs X @array2.pairs) + .grep({ @_[0].value eq @_[1].value }) + .map({ [ @_[0].value, @_[0].key + @_[1].key ] }) + .sort({ @^a[0] cmp @^b[0] || @^a[1] <=> @^b[1] }) + .squish(:as({ @_[0] })) + .map({ |@_ }); +} + +is-deeply minimum-index-sum( + (my Str @ = ["Perl", "Raku", "Love"]), + (my Str @ = ["Raku", "Perl", "Hate"]) +), { Raku => 1, Perl => 1 }; + +is-deeply minimum-index-sum( + (my Str @ = ["A", "B", "C"]), + (my Str @ = ["D", "E", "F"]) +), {}; + +is-deeply minimum-index-sum( + (my Str @ = ["A", "B", "C"]), + (my Str @ = ["C", "A", "B"]) +), { A => 1, B => 3, C => 2 }; + +is-deeply minimum-index-sum( + (my Str @ = ["A", "B", "C", "D"]), + (my Str @ = ["C", "D", "A", "B", "D"]) +), { A => 2, B => 4, C => 2, D => 4 };
\ No newline at end of file diff --git a/challenge-208/carlos-oliveira/raku/ch-2.raku b/challenge-208/carlos-oliveira/raku/ch-2.raku new file mode 100644 index 0000000000..f350ab2b4b --- /dev/null +++ b/challenge-208/carlos-oliveira/raku/ch-2.raku @@ -0,0 +1,14 @@ +use Test; + +sub find-duplicate-and-missing (Int @numbers) { + my @normalized = 1 .. @numbers.elems; + for zip(@numbers, @normalized) -> @pair { + return @pair if @pair[0] != @pair[1]; + } + return -1; +} + +is find-duplicate-and-missing(my Int @ = [ 1, 2, 2, 4 ]), [2, 3]; +is find-duplicate-and-missing(my Int @ = [ 1, 2, 3, 4 ]), -1; +is find-duplicate-and-missing(my Int @ = [ 1, 2, 3, 3 ]), [3, 4]; +is find-duplicate-and-missing(my Int @ = [ 1, 2, 3, 4, 5, 7, 7 ]), [7, 6]; |
