diff options
| author | Flavio Poletti <flavio@polettix.it> | 2022-07-13 22:15:38 +0200 |
|---|---|---|
| committer | Flavio Poletti <flavio@polettix.it> | 2022-07-13 22:15:38 +0200 |
| commit | 55efd0e3387d4d3ce39d18b08420b1cd8c9a84be (patch) | |
| tree | 9868e95016b6af05afc79829a102c8b7902ada55 /challenge-173 | |
| parent | 10f345b1d42afeed7d06cba5b013f683eca1e56a (diff) | |
| download | perlweeklychallenge-club-55efd0e3387d4d3ce39d18b08420b1cd8c9a84be.tar.gz perlweeklychallenge-club-55efd0e3387d4d3ce39d18b08420b1cd8c9a84be.tar.bz2 perlweeklychallenge-club-55efd0e3387d4d3ce39d18b08420b1cd8c9a84be.zip | |
Add polettix's solution to challenge-173
Diffstat (limited to 'challenge-173')
| -rw-r--r-- | challenge-173/polettix/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-173/polettix/blog1.txt | 1 | ||||
| -rw-r--r-- | challenge-173/polettix/perl/ch-1.pl | 22 | ||||
| -rw-r--r-- | challenge-173/polettix/perl/ch-2.pl | 14 | ||||
| -rw-r--r-- | challenge-173/polettix/raku/ch-1.raku | 18 | ||||
| -rw-r--r-- | challenge-173/polettix/raku/ch-2.raku | 13 |
6 files changed, 69 insertions, 0 deletions
diff --git a/challenge-173/polettix/blog.txt b/challenge-173/polettix/blog.txt new file mode 100644 index 0000000000..28e3719dbd --- /dev/null +++ b/challenge-173/polettix/blog.txt @@ -0,0 +1 @@ +https://etoobusy.polettix.it/2022/07/13/pwc173-esthetic-number/ diff --git a/challenge-173/polettix/blog1.txt b/challenge-173/polettix/blog1.txt new file mode 100644 index 0000000000..efc7719be3 --- /dev/null +++ b/challenge-173/polettix/blog1.txt @@ -0,0 +1 @@ +https://etoobusy.polettix.it/2022/07/14/pwc173-sylvester-s-sequence/ diff --git a/challenge-173/polettix/perl/ch-1.pl b/challenge-173/polettix/perl/ch-1.pl new file mode 100644 index 0000000000..df7531387f --- /dev/null +++ b/challenge-173/polettix/perl/ch-1.pl @@ -0,0 +1,22 @@ +#!/usr/bin/env perl +use v5.24; +use warnings; +use experimental 'signatures'; +no warnings 'experimental::signatures'; + +say is_esthetic($_) ? "$_ is esthetic" : "$_ is NOT esthetic" + for @ARGV; + +sub is_esthetic ($candidate) { + test_adjacents( + sub ($x, $y) { use integer; abs($x - $y) == 1 }, + split m{}mxs, $candidate + ); +} + +sub test_adjacents ($test, @input) { + for my $i (1 .. $#input) { + return 0 unless $test->(@input[$i - 1, $i]); + } + return 1; +} diff --git a/challenge-173/polettix/perl/ch-2.pl b/challenge-173/polettix/perl/ch-2.pl new file mode 100644 index 0000000000..d61aa0abaa --- /dev/null +++ b/challenge-173/polettix/perl/ch-2.pl @@ -0,0 +1,14 @@ +#!/usr/bin/env perl +use v5.24; +use warnings; +use experimental 'signatures'; +no warnings 'experimental::signatures'; +use Math::BigInt; + +my $it = sylvester_sequence_it(); +say $it->() for 1 .. shift // 10; + +sub sylvester_sequence_it { + my $n; + return sub { $n = $n ? 1 + $n * ($n - 1) : Math::BigInt->new(2) } +} diff --git a/challenge-173/polettix/raku/ch-1.raku b/challenge-173/polettix/raku/ch-1.raku new file mode 100644 index 0000000000..b3b01dad9b --- /dev/null +++ b/challenge-173/polettix/raku/ch-1.raku @@ -0,0 +1,18 @@ +#!/usr/bin/env raku +use v6; +sub MAIN (*@candidates) { + put is-esthetic($_) ?? "$_ is esthetic" !! "$_ is NOT esthetic" + for @candidates; + return 0; +} + +sub is-esthetic ($candidate) { + test-adjacents(-> $x, $y { abs($x - $y) == 1 }, $candidate.comb()); +} + +sub test-adjacents (&test, *@input) { + for 1 ..^ @input -> $i { + return False unless &test(|@input[$i - 1, $i]); + } + return True; +} diff --git a/challenge-173/polettix/raku/ch-2.raku b/challenge-173/polettix/raku/ch-2.raku new file mode 100644 index 0000000000..dde13582e7 --- /dev/null +++ b/challenge-173/polettix/raku/ch-2.raku @@ -0,0 +1,13 @@ +#!/usr/bin/env raku +use v6; + +class sylvester-sequence { ... }; +sub MAIN (Int:D $count = 10) { + my $ssq = sylvester-sequence.new(); + put $ssq.next for 1 .. $count; +} + +class sylvester-sequence { + has $!n; + method next { $!n = $!n ?? 1 + $!n * ($!n - 1) !! 2 } +} |
