aboutsummaryrefslogtreecommitdiff
path: root/challenge-121
diff options
context:
space:
mode:
authorJan Krňávek <Jan.Krnavek@gmail.com>2021-07-17 14:26:43 +0200
committerJan Krňávek <Jan.Krnavek@gmail.com>2021-07-17 14:26:43 +0200
commit365e3e8df414002c8a42dde3fe8e394c6e4b58e1 (patch)
tree8281f865423dd3be0319781c93662d3306b9f73e /challenge-121
parent6bdc8180249407e9355661d9b74aa7af7ea30ee0 (diff)
downloadperlweeklychallenge-club-365e3e8df414002c8a42dde3fe8e394c6e4b58e1.tar.gz
perlweeklychallenge-club-365e3e8df414002c8a42dde3fe8e394c6e4b58e1.tar.bz2
perlweeklychallenge-club-365e3e8df414002c8a42dde3fe8e394c6e4b58e1.zip
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);
+}