From b1e841b6a48034cb6ceec6453f32a803125a9657 Mon Sep 17 00:00:00 2001 From: jokraft Date: Mon, 27 Jan 2020 00:20:51 +0100 Subject: Solution for Challenge 44 by Jan Ole Kraft. --- challenge-044/jokraft/README | 1 + challenge-044/jokraft/raku/ch-1.p6 | 25 +++++++++++++++++++++++++ challenge-044/jokraft/raku/ch-2.p6 | 12 ++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 challenge-044/jokraft/README create mode 100644 challenge-044/jokraft/raku/ch-1.p6 create mode 100644 challenge-044/jokraft/raku/ch-2.p6 diff --git a/challenge-044/jokraft/README b/challenge-044/jokraft/README new file mode 100644 index 0000000000..bfd88142ca --- /dev/null +++ b/challenge-044/jokraft/README @@ -0,0 +1 @@ +Solution by Jan Ole Kraft. diff --git a/challenge-044/jokraft/raku/ch-1.p6 b/challenge-044/jokraft/raku/ch-1.p6 new file mode 100644 index 0000000000..6eb1c484ee --- /dev/null +++ b/challenge-044/jokraft/raku/ch-1.p6 @@ -0,0 +1,25 @@ +my $digitstr = "123456789"; +my @digits = split("", $digitstr, :skip-empty); +my $n = @digits.elems; +my $target = 100; + +grammar Evaluate { + token TOP { | } + token INT {<[+-]>?\d+} +} + +class Calc { + method TOP ($/) {make ($.made || 0) + $.made} + method INT ($/) {make $/.Str.Num} +} + +sub infix:<~->(Str $x, Str $y){$y~$x}; + +my $c = -1; + +for ([X~] [$@(@digits[0])].Array.append($((@digits[1 .. $n-1])>>.Str X[~-] ("", "+", "-"))[++$c*3 .. $c*3 +2] xx $n-1)) -> $str { + if Evaluate.parse($str, actions => Calc).made == $target { + say $str; + #last; + } +} diff --git a/challenge-044/jokraft/raku/ch-2.p6 b/challenge-044/jokraft/raku/ch-2.p6 new file mode 100644 index 0000000000..c5d7c74811 --- /dev/null +++ b/challenge-044/jokraft/raku/ch-2.p6 @@ -0,0 +1,12 @@ +my $target = 200; +my %hit := {1 => 1}; +my $steps = 0; +repeat { + for (%hit.keys) -> $key { + %hit{$key+1} = $key; + %hit{$key*2} = $key; + } + $steps++; +} until %hit{$target}; + +say $steps; -- cgit