diff options
| -rw-r--r-- | challenge-137/polettix/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-137/polettix/blog1.txt | 1 | ||||
| -rw-r--r-- | challenge-137/polettix/perl/ch-1.pl | 18 | ||||
| -rw-r--r-- | challenge-137/polettix/perl/ch-2.pl | 16 | ||||
| -rw-r--r-- | challenge-137/polettix/raku/ch-1.raku | 15 | ||||
| -rw-r--r-- | challenge-137/polettix/raku/ch-2.raku | 13 |
6 files changed, 64 insertions, 0 deletions
diff --git a/challenge-137/polettix/blog.txt b/challenge-137/polettix/blog.txt new file mode 100644 index 0000000000..c257c6d02b --- /dev/null +++ b/challenge-137/polettix/blog.txt @@ -0,0 +1 @@ +https://github.polettix.it/ETOOBUSY/2021/11/03/pwc137-long-year/ diff --git a/challenge-137/polettix/blog1.txt b/challenge-137/polettix/blog1.txt new file mode 100644 index 0000000000..7d8f2ccb0a --- /dev/null +++ b/challenge-137/polettix/blog1.txt @@ -0,0 +1 @@ +https://github.polettix.it/ETOOBUSY/2021/11/04/pwc137-lychrel-number/ diff --git a/challenge-137/polettix/perl/ch-1.pl b/challenge-137/polettix/perl/ch-1.pl new file mode 100644 index 0000000000..30f78bec0b --- /dev/null +++ b/challenge-137/polettix/perl/ch-1.pl @@ -0,0 +1,18 @@ +#!/usr/bin/env perl +use v5.24; +use warnings; +use experimental 'signatures'; +no warnings 'experimental::signatures'; +use Time::Local 'timegm'; + +sub dow ($y, $m, $d) { (gmtime(timegm(1, 1, 1, $d, --$m, $y)))[6] } +sub is_long_year ($y) { + my $dow = dow($y, 1, 1); + return $dow == 4 || $dow == 3 && dow($y, 12, 31) == 4; +} ## end sub is_long_year ($y) + +my @longs = grep { is_long_year($_) } (1900 .. 2100); +while (@longs > 0) { + my @slice = splice @longs, 0, 5; + say join ', ', @slice, (@slice == 5 ? '' : ()); +} diff --git a/challenge-137/polettix/perl/ch-2.pl b/challenge-137/polettix/perl/ch-2.pl new file mode 100644 index 0000000000..d987ef8d91 --- /dev/null +++ b/challenge-137/polettix/perl/ch-2.pl @@ -0,0 +1,16 @@ +#!/usr/bin/env perl +use v5.24; +use warnings; +use experimental 'signatures'; +no warnings 'experimental::signatures'; + +sub maybe_lychrel ($n) { + while ($n < 10_000_000) { + my $r = reverse $n; + return 0 if $n eq $r; + $n += $r; + } + return 1; +} + +say maybe_lychrel(shift || 196); diff --git a/challenge-137/polettix/raku/ch-1.raku b/challenge-137/polettix/raku/ch-1.raku new file mode 100644 index 0000000000..b89593d70d --- /dev/null +++ b/challenge-137/polettix/raku/ch-1.raku @@ -0,0 +1,15 @@ +#!/usr/bin/env raku +use v6; + +subset FullyGregorianYear of Int where * > 1582; +sub is-long-year (FullyGregorianYear:D $y) { + my $dow = Date.new($y, 1, 1).day-of-week; + return $dow == 4 || $dow == 3 && Date.new($y, 12, 31).day-of-week == 4; +} + +my @longs = (1900 .. 2100).grep({is-long-year($_)}); +while @longs > 0 { + my @slice = @longs.splice(0, 5); + @slice.push: '' if @slice == 5; + @slice.join(', ').put; +} diff --git a/challenge-137/polettix/raku/ch-2.raku b/challenge-137/polettix/raku/ch-2.raku new file mode 100644 index 0000000000..3eedb840bd --- /dev/null +++ b/challenge-137/polettix/raku/ch-2.raku @@ -0,0 +1,13 @@ +#!/usr/bin/env raku +use v6; + +sub MAIN (Int:D $x where 10 <= * <= 1000 = 196) { maybe-lychrel($x).put } + +sub maybe-lychrel (Int:D $n is copy where * > 0) { + while $n < 10000000 { + my $r = $n.flip; + return 0 if $n eq $r; + $n += $r; + } + return 1; +} |
