diff options
| author | Lucas Ransan <lucas@ransan.tk> | 2021-07-12 22:30:45 +0200 |
|---|---|---|
| committer | Lucas Ransan <lucas@ransan.tk> | 2021-07-15 00:03:28 +0200 |
| commit | a40d6c311344ae6088fdedad8846cfe2a9533ece (patch) | |
| tree | 9f884fc547bbd0b65600c8e497bb805c87fc3c3d | |
| parent | 7b1d834ac418744a7d30dd470d7f8db97fe2b801 (diff) | |
| download | perlweeklychallenge-club-a40d6c311344ae6088fdedad8846cfe2a9533ece.tar.gz perlweeklychallenge-club-a40d6c311344ae6088fdedad8846cfe2a9533ece.tar.bz2 perlweeklychallenge-club-a40d6c311344ae6088fdedad8846cfe2a9533ece.zip | |
Raku week 121 task 2
| -rw-r--r-- | challenge-121/luc65r/input.txt | 4 | ||||
| -rwxr-xr-x | challenge-121/luc65r/raku/ch-2.raku | 28 |
2 files changed, 32 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-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 +} |
