From 982b9b9ece56ad21599989f4a0a50822ec64555a Mon Sep 17 00:00:00 2001 From: Jan Krňávek Date: Sun, 30 Jan 2022 18:32:18 +0100 Subject: solutions week 149 --- challenge-149/wambash/raku/ch-1.raku | 25 +++++++++++++++++++++++++ challenge-149/wambash/raku/ch-2.raku | 25 +++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 challenge-149/wambash/raku/ch-1.raku create mode 100644 challenge-149/wambash/raku/ch-2.raku diff --git a/challenge-149/wambash/raku/ch-1.raku b/challenge-149/wambash/raku/ch-1.raku new file mode 100644 index 0000000000..b8d3eb9ac5 --- /dev/null +++ b/challenge-149/wambash/raku/ch-1.raku @@ -0,0 +1,25 @@ +#!/usr/bin/env raku + +constant @fibonacci = 0,1, * + * ... *; + +sub fibonacci-digit-sum ($n) { + $n + andthen .comb + andthen .sum + andthen { $_ == @fibonacci.first: * ≥ $_ }\ +} + +constant @fibonacci-digit-sum = ^Inf .grep: &fibonacci-digit-sum ; + +multi MAIN (Bool :test($)!) { + use Test; + is fibonacci-digit-sum(23), True; + is fibonacci-digit-sum(24), False; + is fibonacci-digit-sum(99111), True; + is @fibonacci-digit-sum.head(20) , [0, 1, 2, 3, 5, 8, 10, 11, 12, 14, 17, 20, 21, 23, 26, 30, 32, 35, 41, 44]; + done-testing; +} + +multi MAIN ($n=20) { + put @fibonacci-digit-sum.head: $n +} diff --git a/challenge-149/wambash/raku/ch-2.raku b/challenge-149/wambash/raku/ch-2.raku new file mode 100644 index 0000000000..8673ff5374 --- /dev/null +++ b/challenge-149/wambash/raku/ch-2.raku @@ -0,0 +1,25 @@ +#!/usr/bin/env raku + +constant @square = ^Inf .map: *² ; + +sub largest-square (:$base=10) { + @square + andthen .map: *.base: $base + andthen .toggle: { .chars ≤ $base }\ + andthen .first: !*.comb.repeated, :end +} + +multi MAIN (Bool :test($)!) { + use Test; + is largest-square(),9814072356; + is largest-square(:2base), '1'; + is largest-square(:4base), '3201'; + is largest-square(:11base), 'A8701245369'; + skip 'base 12 -- Too slow (cca 35s)'; + #is largest-square(:12base), 'B8750A649321', 'base 12'; + done-testing; +} + +multi MAIN ($base=10) { + say largest-square :$base +} -- cgit