diff options
| author | Util <bruce.gray@acm.org> | 2021-11-07 17:05:45 -0600 |
|---|---|---|
| committer | Util <bruce.gray@acm.org> | 2021-11-07 17:05:45 -0600 |
| commit | b7f5f2199f8537be23dabd09459f98914e436c5c (patch) | |
| tree | 5e6628e891fbd8333f9322c34642763fa2311bf1 /challenge-137 | |
| parent | 350a7ebb4eee4a4636674e14431d195e68b49f27 (diff) | |
| download | perlweeklychallenge-club-b7f5f2199f8537be23dabd09459f98914e436c5c.tar.gz perlweeklychallenge-club-b7f5f2199f8537be23dabd09459f98914e436c5c.tar.bz2 perlweeklychallenge-club-b7f5f2199f8537be23dabd09459f98914e436c5c.zip | |
Add Raku and Perl solutions for #137 by Bruce Gray
Diffstat (limited to 'challenge-137')
| -rw-r--r-- | challenge-137/bruce-gray/raku/ch-1.raku | 18 | ||||
| -rw-r--r-- | challenge-137/bruce-gray/raku/ch-2.raku | 28 |
2 files changed, 46 insertions, 0 deletions
diff --git a/challenge-137/bruce-gray/raku/ch-1.raku b/challenge-137/bruce-gray/raku/ch-1.raku new file mode 100644 index 0000000000..7acbafd81f --- /dev/null +++ b/challenge-137/bruce-gray/raku/ch-1.raku @@ -0,0 +1,18 @@ +sub is-long ( Int $year --> Bool ) { + return Date.new("$year-12-31").week-number == 53; +} + +use Test; plan 1; +my @expected = + 1903, 1908, 1914, 1920, 1925, + 1931, 1936, 1942, 1948, 1953, + 1959, 1964, 1970, 1976, 1981, + 1987, 1992, 1998, 2004, 2009, + 2015, 2020, 2026, 2032, 2037, + 2043, 2048, 2054, 2060, 2065, + 2071, 2076, 2082, 2088, 2093, + 2099 +; + +my @got = grep &is-long, 1900 .. 2100; +is-deeply @got, @expected; diff --git a/challenge-137/bruce-gray/raku/ch-2.raku b/challenge-137/bruce-gray/raku/ch-2.raku new file mode 100644 index 0000000000..2137e879f1 --- /dev/null +++ b/challenge-137/bruce-gray/raku/ch-2.raku @@ -0,0 +1,28 @@ +sub is-Lychrel-number ( Int $n is copy --> Bool ) { + my $iterations; + loop { + $n += $n.flip; + + return False if $n eq $n.flip; + return True if $n >= 10_000_000 + or $iterations++ > 500; + } +} + +use Test; +my @tests = + # From the task description: + 56 => False, + 57 => False, + 59 => False, + + # Added: + 464 => True, # Should be False, but not shown to be False inside the 10_000_000 limit, so True. + 196 => True, # Famously huge +; +plan +@tests; + +for @tests -> ( :key($input), :value($expected) ) { + is is-Lychrel-number($input), $expected, + "is-Lychrel-number {$input.fmt('%3d')} == $expected"; +} |
