aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-07-14 23:06:29 +0100
committerGitHub <noreply@github.com>2021-07-14 23:06:29 +0100
commit88307e01dac55707d5cb0371076ffa002fcb5210 (patch)
tree9f884fc547bbd0b65600c8e497bb805c87fc3c3d
parentdbf2fff901c6c10835c11b40ccdd76ad77a567e8 (diff)
parenta40d6c311344ae6088fdedad8846cfe2a9533ece (diff)
downloadperlweeklychallenge-club-88307e01dac55707d5cb0371076ffa002fcb5210.tar.gz
perlweeklychallenge-club-88307e01dac55707d5cb0371076ffa002fcb5210.tar.bz2
perlweeklychallenge-club-88307e01dac55707d5cb0371076ffa002fcb5210.zip
Merge pull request #4522 from luc65r/121
Challenge 121
-rw-r--r--challenge-121/luc65r/input.txt4
-rwxr-xr-xchallenge-121/luc65r/raku/ch-1.raku5
-rwxr-xr-xchallenge-121/luc65r/raku/ch-2.raku28
3 files changed, 37 insertions, 0 deletions
diff --git a/challenge-121/luc65r/input.txt b/challenge-121/luc65r/input.txt
new file mode 100644
index 0000000000..a389324b02
--- /dev/null
+++ b/challenge-121/luc65r/input.txt
@@ -0,0 +1,4 @@
+0 5 2 7
+5 0 5 3
+3 1 0 6
+4 5 4 0
diff --git a/challenge-121/luc65r/raku/ch-1.raku b/challenge-121/luc65r/raku/ch-1.raku
new file mode 100755
index 0000000000..c85f9f2320
--- /dev/null
+++ b/challenge-121/luc65r/raku/ch-1.raku
@@ -0,0 +1,5 @@
+#!/usr/bin/env raku
+
+unit sub MAIN(UInt $m, UInt $n is copy where * > 0);
+
+say $m +^ 1 +< ($n - 1);
diff --git a/challenge-121/luc65r/raku/ch-2.raku b/challenge-121/luc65r/raku/ch-2.raku
new file mode 100755
index 0000000000..5279e84d3b
--- /dev/null
+++ b/challenge-121/luc65r/raku/ch-2.raku
@@ -0,0 +1,28 @@
+#!/usr/bin/env raku
+
+sub len(@mat, @tour --> Numeric) {
+ @tour.rotor(2 => -1).map({ @mat[.tail;.head] }).sum
+}
+
+proto MAIN(|) {
+ my @mat := {*};
+ my $n = @mat.shape[0];
+ say "matrix:\n", @mat, "\n";
+ my @m = |min :by({ len @mat, $_ }), map { |$_, $_[0] }, permutations ^$n;
+ say "tour: $@m";
+ say "length: {len @mat, @m}";
+}
+
+multi MAIN(UInt:D $n --> Array) {
+ my Numeric @mat[$n;$n];
+ for @mat <-> $v {
+ $v = (1 ..^ 10).rand.Int;
+ }
+ @mat[$_;$_] = 0 for 0 ..^ $n;
+ return @mat;
+}
+
+multi MAIN(Str:D $f = "-" --> Array) {
+ my @l = $f.IO.open.lines;
+ Array[Numeric].new: :shape(+@l, +@l), map { / [ (\d+) \s* ]+ /; |+« $/.list }, @l
+}