diff options
| author | jokraft <jan.ole.kraft@gmail.com> | 2020-01-27 00:20:51 +0100 |
|---|---|---|
| committer | jokraft <jan.ole.kraft@gmail.com> | 2020-01-27 00:20:51 +0100 |
| commit | b1e841b6a48034cb6ceec6453f32a803125a9657 (patch) | |
| tree | 24f08672e9eb3b614ad10959daf7920e493f3deb | |
| parent | 87a6af9725acf75343b1d590e224d9cfbd5f0cd8 (diff) | |
| download | perlweeklychallenge-club-b1e841b6a48034cb6ceec6453f32a803125a9657.tar.gz perlweeklychallenge-club-b1e841b6a48034cb6ceec6453f32a803125a9657.tar.bz2 perlweeklychallenge-club-b1e841b6a48034cb6ceec6453f32a803125a9657.zip | |
Solution for Challenge 44 by Jan Ole Kraft.
| -rw-r--r-- | challenge-044/jokraft/README | 1 | ||||
| -rw-r--r-- | challenge-044/jokraft/raku/ch-1.p6 | 25 | ||||
| -rw-r--r-- | challenge-044/jokraft/raku/ch-2.p6 | 12 |
3 files changed, 38 insertions, 0 deletions
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 {<INT> | <INT> <TOP>} + token INT {<[+-]>?\d+} +} + +class Calc { + method TOP ($/) {make ($<TOP>.made || 0) + $<INT>.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; |
