aboutsummaryrefslogtreecommitdiff
path: root/challenge-121
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-07-17 13:32:23 +0100
committerGitHub <noreply@github.com>2021-07-17 13:32:23 +0100
commit3ec4905fdc0ef268ba8417a12eb681f6854535a3 (patch)
treea9e5be037c26006b99e8aaa6d1c01a619bf975fa /challenge-121
parent3606c67cb6457cd4a1e1ebda6128e358e333e332 (diff)
parent365e3e8df414002c8a42dde3fe8e394c6e4b58e1 (diff)
downloadperlweeklychallenge-club-3ec4905fdc0ef268ba8417a12eb681f6854535a3.tar.gz
perlweeklychallenge-club-3ec4905fdc0ef268ba8417a12eb681f6854535a3.tar.bz2
perlweeklychallenge-club-3ec4905fdc0ef268ba8417a12eb681f6854535a3.zip
Merge pull request #4539 from wambash/challenge-week-121
solutions week 121
Diffstat (limited to 'challenge-121')
-rw-r--r--challenge-121/wambash/raku/ch-1.raku16
-rw-r--r--challenge-121/wambash/raku/ch-2.raku28
2 files changed, 44 insertions, 0 deletions
diff --git a/challenge-121/wambash/raku/ch-1.raku b/challenge-121/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..6772d1f0be
--- /dev/null
+++ b/challenge-121/wambash/raku/ch-1.raku
@@ -0,0 +1,16 @@
+#!/usr/bin/env raku
+
+sub invert-bit ($m, $n) {
+ $m +^ 2**($n-1)
+}
+
+multi MAIN ($m, $n) {
+ say invert-bit $m, $n
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is invert-bit(12,3), 8;
+ is invert-bit(18,4), 26;
+ done-testing;
+}
diff --git a/challenge-121/wambash/raku/ch-2.raku b/challenge-121/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..66402c9825
--- /dev/null
+++ b/challenge-121/wambash/raku/ch-2.raku
@@ -0,0 +1,28 @@
+#!/usr/bin/env raku
+
+sub the-traveling-salesman (@n) {
+ permutations(@n.end)
+ andthen .race
+ andthen .map: { @n.end, |$_, @n.end }\
+ andthen .map: { .rotor(2=>- 1) => $_ }\
+ andthen .map: { .key.map( -> ($x,$y){@n[$x;$y]}).sum => .value }\
+ andthen .min
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ my @n := [
+ [0, 5, 2, 7],
+ [5, 0, 5, 3],
+ [3, 1, 0, 6],
+ [4, 5, 4, 0],
+ ];
+ is-deeply the-traveling-salesman(@n), 10 => (3,0,2,1,3);
+ done-testing;
+}
+
+multi MAIN ($n) {
+ my @n=(1 ..^ 100).roll($n) xx $n;
+ say @n.fmt: '%2d',"\n";
+ say the-traveling-salesman(@n);
+}