aboutsummaryrefslogtreecommitdiff
path: root/challenge-241
diff options
context:
space:
mode:
authorlibrasteve <librasteve@furnival.net>2023-11-02 12:14:42 +0000
committerlibrasteve <librasteve@furnival.net>2023-11-02 12:14:42 +0000
commitde32900bf3ebed4c3a5cffc9f09e3f55bcee5cda (patch)
tree6868209c90411b6d4a7ac60e3351cce553a891a9 /challenge-241
parent4080d3b82992cbcb1745f45428669413cc80861d (diff)
downloadperlweeklychallenge-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.raku41
-rw-r--r--challenge-241/librasteve/raku/ch2.raku33
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