aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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