From d6a315af18d92c9c4ed3741af532555f5e6f5c0e Mon Sep 17 00:00:00 2001 From: Mark Anderson Date: Mon, 8 Jun 2020 13:35:23 -0600 Subject: Challenge 64 Solutions --- challenge-064/mark-anderson/raku/ch-1.raku | 38 ++++++++++++++++++++++++++++++ challenge-064/mark-anderson/raku/ch-2.raku | 19 +++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 challenge-064/mark-anderson/raku/ch-1.raku create mode 100644 challenge-064/mark-anderson/raku/ch-2.raku diff --git a/challenge-064/mark-anderson/raku/ch-1.raku b/challenge-064/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..9620f180a5 --- /dev/null +++ b/challenge-064/mark-anderson/raku/ch-1.raku @@ -0,0 +1,38 @@ +#!/usr/bin/env raku + +my @matrix = [ 1, 2, 3 ], + [ 4, 5, 6 ], + [ 7, 8, 9 ]; + +my $width = @matrix[0].elems; +my $height = @matrix.elems; +my $max-steps = $width-1 + $height-1; + +my @array = next-step([ ${ x => 0, y => 0, path => [@matrix[0;0]] } ]); + +my %sum; +%sum{.} = ..sum for @array; +.say for %sum.minpairs; + +sub next-step(@array) { + my @new; + state $steps++; + + for @array -> %hash { + if %hash+1 < $width { # go right + @new.push: { x => %hash+1, + y => %hash, + path => [|%hash, @matrix[%hash;%hash+1]] }; + } + + if %hash+1 < $height { #go down + @new.push: { x => %hash, + y => %hash+1, + path => [|%hash, @matrix[%hash+1;%hash]] }; + } + } + + return @new if $steps == $max-steps; + + next-step(@new); +} diff --git a/challenge-064/mark-anderson/raku/ch-2.raku b/challenge-064/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..3a4f28ec3e --- /dev/null +++ b/challenge-064/mark-anderson/raku/ch-2.raku @@ -0,0 +1,19 @@ +#!/usr/bin/env raku + +my $S = "perlweeklychallenge"; +my @W = ; +my %H; + +for @W -> $w { + if $S ~~ /$w/ { + %H{$/.from}.push: ~$/; + } +} + +if %H.keys == 0 { + say "0 as no matching word found"; +} + +else { + say %H.keys.sort(* <=> *).map({|%H{$_}.sort(*.chars)}).join(", "); +} -- cgit