From 3884d453ec25a1a5a269d9d63bbac4772caa4786 Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Mon, 8 Nov 2021 13:09:51 +0000 Subject: initial --- challenge-138/mark-anderson/raku/ch-1.raku | 17 +++++++++++++++++ challenge-138/mark-anderson/raku/ch-2.raku | 24 ++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 challenge-138/mark-anderson/raku/ch-1.raku create mode 100644 challenge-138/mark-anderson/raku/ch-2.raku diff --git a/challenge-138/mark-anderson/raku/ch-1.raku b/challenge-138/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..2580a09cdd --- /dev/null +++ b/challenge-138/mark-anderson/raku/ch-1.raku @@ -0,0 +1,17 @@ +#!/usr/bin/env raku + +say workdays(2021); +say workdays(2020); + +sub workdays($year) +{ + my $dt = Date.new($year, 1, 1); + my $days = $dt.is-leap-year ?? 366 !! 365; + + for 1..$days + { + state $bd++ if $dt.day-of-week ~~ 1..5; + $dt .= later(:1days); + LAST { return $bd } + } +} diff --git a/challenge-138/mark-anderson/raku/ch-2.raku b/challenge-138/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..0eced882d6 --- /dev/null +++ b/challenge-138/mark-anderson/raku/ch-2.raku @@ -0,0 +1,24 @@ +#!/usr/bin/env raku + +say split-number(81); +say split-number(9801); +say split-number(36); + +sub split-number($n) +{ + for terms($n.chars) + { + my @a = $n.comb.rotor($_); + next if first { .elems > 1 and .head == 0 }, @a; + return 1 if @a>>.join.sum == $n.sqrt; + } + + return 0; +} + +sub terms($u) +{ + map { + ((.fmt: '%0' ~ $u ~ 'b') ~~ m:g/(.)[$0+]?/).map(*.chars) + }, 1..2**($u-1)-1; +} -- cgit From 10e6a7aa2ac5c135eb1c6abb9c4409a9dc842b24 Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Mon, 8 Nov 2021 13:15:30 +0000 Subject: initial --- challenge-138/mark-anderson/raku/ch-1.raku | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/challenge-138/mark-anderson/raku/ch-1.raku b/challenge-138/mark-anderson/raku/ch-1.raku index 2580a09cdd..192b2e7822 100644 --- a/challenge-138/mark-anderson/raku/ch-1.raku +++ b/challenge-138/mark-anderson/raku/ch-1.raku @@ -10,8 +10,8 @@ sub workdays($year) for 1..$days { - state $bd++ if $dt.day-of-week ~~ 1..5; + state $wd++ if $dt.day-of-week ~~ 1..5; $dt .= later(:1days); - LAST { return $bd } + LAST { return $wd } } } -- cgit