diff options
| author | Mark <53903062+andemark@users.noreply.github.com> | 2021-11-09 21:38:19 +0000 |
|---|---|---|
| committer | Mark <53903062+andemark@users.noreply.github.com> | 2021-11-09 21:38:19 +0000 |
| commit | 7f84f0b1330ecf5338e117596ed155d6c2a513cd (patch) | |
| tree | 72454b9c05014bd59aaf4cf2702921d3dbb5ae86 | |
| parent | 10e6a7aa2ac5c135eb1c6abb9c4409a9dc842b24 (diff) | |
| download | perlweeklychallenge-club-7f84f0b1330ecf5338e117596ed155d6c2a513cd.tar.gz perlweeklychallenge-club-7f84f0b1330ecf5338e117596ed155d6c2a513cd.tar.bz2 perlweeklychallenge-club-7f84f0b1330ecf5338e117596ed155d6c2a513cd.zip | |
Challenge 138 Solutions (Raku)
| -rw-r--r-- | challenge-138/mark-anderson/raku/ch-1.raku | 41 | ||||
| -rw-r--r-- | challenge-138/mark-anderson/raku/ch-2.raku | 24 |
2 files changed, 48 insertions, 17 deletions
diff --git a/challenge-138/mark-anderson/raku/ch-1.raku b/challenge-138/mark-anderson/raku/ch-1.raku index 192b2e7822..d5928ef653 100644 --- a/challenge-138/mark-anderson/raku/ch-1.raku +++ b/challenge-138/mark-anderson/raku/ch-1.raku @@ -1,17 +1,40 @@ #!/usr/bin/env raku -say workdays(2021); -say workdays(2020); +use Test; +plan 9; + +is workdays(2020), 262; +is workdays(2021), 261; +is workdays(2022), 260; +is workdays(2050), 260; +is workdays(2051), 260; +is workdays(2052), 262; +is workdays(2053), 261; +is workdays(2075), 261; +is workdays(2076), 262; sub workdays($year) { + my %h is Map = False => { + 6 => 260, + 7 => 260, + 1 => 261, + 2 => 261, + 3 => 261, + 4 => 261, + 5 => 261 + }, + True => { + 6 => 260, + 5 => 261, + 7 => 261, + 1 => 262, + 2 => 262, + 3 => 262, + 4 => 262 + } + my $dt = Date.new($year, 1, 1); - my $days = $dt.is-leap-year ?? 366 !! 365; - for 1..$days - { - state $wd++ if $dt.day-of-week ~~ 1..5; - $dt .= later(:1days); - LAST { return $wd } - } + %h{ $dt.is-leap-year }{ $dt.day-of-week } } diff --git a/challenge-138/mark-anderson/raku/ch-2.raku b/challenge-138/mark-anderson/raku/ch-2.raku index 0eced882d6..9b43a7edb6 100644 --- a/challenge-138/mark-anderson/raku/ch-2.raku +++ b/challenge-138/mark-anderson/raku/ch-2.raku @@ -1,8 +1,17 @@ #!/usr/bin/env raku -say split-number(81); -say split-number(9801); -say split-number(36); +use Test; +plan 9; + +isnt split-number(36), 1; +is split-number(81), 1, '9 = 8 + 1'; +is split-number(100), 1, '10 = 10 + 0'; +is split-number(9801), 1, '99 = 98 + 0 + 1'; +is split-number(55225), 1, '235 = 5 + 5 + 225'; +is split-number(136161), 1, '369 = 1 + 361 + 6 + 1'; +is split-number(11329956), 1, '3366 = 11 + 3299 + 56'; +is split-number(57562569), 1, '7587 = 5 + 7562 + 5 + 6 + 9'; +is split-number(100000000), 1, '10000 = 10000 + 0 + 0 + 0 + 0'; sub split-number($n) { @@ -10,15 +19,14 @@ sub split-number($n) { my @a = $n.comb.rotor($_); next if first { .elems > 1 and .head == 0 }, @a; - return 1 if @a>>.join.sum == $n.sqrt; + return 1 if @a.map(*.join).sum == $n.sqrt; } return 0; } -sub terms($u) +sub terms($n) { - map { - ((.fmt: '%0' ~ $u ~ 'b') ~~ m:g/(.)[$0+]?/).map(*.chars) - }, 1..2**($u-1)-1; + map { ((.fmt: '%0' ~ $n ~ 'b') ~~ m:g/ (.) [$0+]? /).map(*.chars) }, + 1..2**($n-1)-1; } |
