diff options
| author | librasteve <librasteve@furnival.net> | 2023-11-02 12:14:42 +0000 |
|---|---|---|
| committer | librasteve <librasteve@furnival.net> | 2023-11-02 12:14:42 +0000 |
| commit | de32900bf3ebed4c3a5cffc9f09e3f55bcee5cda (patch) | |
| tree | 6868209c90411b6d4a7ac60e3351cce553a891a9 /challenge-241 | |
| parent | 4080d3b82992cbcb1745f45428669413cc80861d (diff) | |
| download | perlweeklychallenge-club-de32900bf3ebed4c3a5cffc9f09e3f55bcee5cda.tar.gz perlweeklychallenge-club-de32900bf3ebed4c3a5cffc9f09e3f55bcee5cda.tar.bz2 perlweeklychallenge-club-de32900bf3ebed4c3a5cffc9f09e3f55bcee5cda.zip | |
challenge answers
Diffstat (limited to 'challenge-241')
| -rw-r--r-- | challenge-241/librasteve/raku/ch1.raku | 41 | ||||
| -rw-r--r-- | challenge-241/librasteve/raku/ch2.raku | 33 |
2 files changed, 74 insertions, 0 deletions
diff --git a/challenge-241/librasteve/raku/ch1.raku b/challenge-241/librasteve/raku/ch1.raku new file mode 100644 index 0000000000..33908f3151 --- /dev/null +++ b/challenge-241/librasteve/raku/ch1.raku @@ -0,0 +1,41 @@ +use Data::Dump::Tree; +use Test; + + + +my @tests = [ + %( + nums => (0, 1, 4, 6, 7, 10), + diff => 3, + ), + %( + nums => (4, 5, 6, 7, 8, 9), + diff => 2, + ), + %( + nums => [5..7], + diff => 1, + ), + %( + nums => [5,7], + diff => 1, + ), +]; + +sub run( \nums, \diff) { + + sub check( \i, \j, \k ) { + i < j < k && # always true + nums[j] - nums[i] == diff && + nums[k] - nums[j] == diff + } + + gather { + for ^nums .combinations(3) { + take if check(|@^a) + } + } + +} + +say run(.<nums>, .<diff>) for @tests; diff --git a/challenge-241/librasteve/raku/ch2.raku b/challenge-241/librasteve/raku/ch2.raku new file mode 100644 index 0000000000..1f6af95c50 --- /dev/null +++ b/challenge-241/librasteve/raku/ch2.raku @@ -0,0 +1,33 @@ +use Data::Dump::Tree; +use Test; + + +my @tests = [ + %( + int => (11, 8, 27, 4), + ), +]; + +sub run( \int ) { + + sub prime-factors(Int $n is copy) { + my $f = 2; + + gather { + while $n > 1 { + if $n %% $f { + $n div= $f; take $f + } else { + $f++ + } + } + } + } + + sub pf-count($n) { +prime-factors($n) } + + int.sort: *.&pf-count + +} + +say .<int>, " => ", run(.<int>) for @tests |
