diff options
| -rw-r--r-- | challenge-121/luc65r/input.txt | 4 | ||||
| -rwxr-xr-x | challenge-121/luc65r/raku/ch-1.raku | 5 | ||||
| -rwxr-xr-x | challenge-121/luc65r/raku/ch-2.raku | 28 |
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 +} |
