diff options
| author | Flavio Poletti <flavio@polettix.it> | 2021-06-07 16:15:05 +0200 |
|---|---|---|
| committer | Flavio Poletti <flavio@polettix.it> | 2021-06-07 16:15:05 +0200 |
| commit | d37088228f3e174764863d386dafbbef5908d4fc (patch) | |
| tree | 4dd2db03468c0c497011d2e8d0a513cb424685cb /challenge-116 | |
| parent | 4830b1d50fd610eb2424fe284cb48a2795e0478c (diff) | |
| download | perlweeklychallenge-club-d37088228f3e174764863d386dafbbef5908d4fc.tar.gz perlweeklychallenge-club-d37088228f3e174764863d386dafbbef5908d4fc.tar.bz2 perlweeklychallenge-club-d37088228f3e174764863d386dafbbef5908d4fc.zip | |
Add polettix's solution to challenge-116
Diffstat (limited to 'challenge-116')
| -rw-r--r-- | challenge-116/polettix/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-116/polettix/blog1.txt | 1 | ||||
| -rw-r--r-- | challenge-116/polettix/perl/ch-1.pl | 27 | ||||
| -rw-r--r-- | challenge-116/polettix/perl/ch-2.pl | 15 | ||||
| -rw-r--r-- | challenge-116/polettix/raku/ch-1.raku | 26 | ||||
| -rw-r--r-- | challenge-116/polettix/raku/ch-2.raku | 16 |
6 files changed, 86 insertions, 0 deletions
diff --git a/challenge-116/polettix/blog.txt b/challenge-116/polettix/blog.txt new file mode 100644 index 0000000000..7659deb9b9 --- /dev/null +++ b/challenge-116/polettix/blog.txt @@ -0,0 +1 @@ +https://github.polettix.it/ETOOBUSY/2021/06/09/pwc116-number-sequence/ diff --git a/challenge-116/polettix/blog1.txt b/challenge-116/polettix/blog1.txt new file mode 100644 index 0000000000..2819f5199b --- /dev/null +++ b/challenge-116/polettix/blog1.txt @@ -0,0 +1 @@ +https://github.polettix.it/ETOOBUSY/2021/06/10/pwc116-sum-of-squares/ diff --git a/challenge-116/polettix/perl/ch-1.pl b/challenge-116/polettix/perl/ch-1.pl new file mode 100644 index 0000000000..7f9bfff4ff --- /dev/null +++ b/challenge-116/polettix/perl/ch-1.pl @@ -0,0 +1,27 @@ +#!/usr/bin/env perl +use 5.024; +use warnings; +use experimental qw< postderef signatures >; +no warnings qw< experimental::postderef experimental::signatures >; + +sub number_sequence ($N) { + my $length = length $N; + SIZE: + for my $l (1 .. $length / 2) { + my @retval = my $x = substr $N, 0, $l; + my $start = $l; + ++$x; + while ((my $available = $length - $start) > 0) { + my $xlen = length $x; + next SIZE if $xlen > $available || substr($N, $start, $xlen) ne $x; + push @retval, $x; + $start += $xlen; + ++$x; + } + return @retval; + } + return $N; +} + +my @inputs = @ARGV ? @ARGV : qw< 1234 91011 10203 >; +say join ',', number_sequence($_) for @inputs; diff --git a/challenge-116/polettix/perl/ch-2.pl b/challenge-116/polettix/perl/ch-2.pl new file mode 100644 index 0000000000..62e45f605e --- /dev/null +++ b/challenge-116/polettix/perl/ch-2.pl @@ -0,0 +1,15 @@ +#!/usr/bin/env perl +use 5.024; +use warnings; +use experimental qw< postderef signatures >; +no warnings qw< experimental::postderef experimental::signatures >; +use List::Util 'sum'; + +sub sum_of_squares ($N) { + my $M = sum map { $_ * $_ } split(m{}mxs, $N); + my $m = int sqrt $M; + return $m * $m == $M ? 1 : 0; +} + +my @inputs = @ARGV ? @ARGV : qw< 34 50 52 >; +say sum_of_squares($_) for @inputs; diff --git a/challenge-116/polettix/raku/ch-1.raku b/challenge-116/polettix/raku/ch-1.raku new file mode 100644 index 0000000000..0fbc9bd2e7 --- /dev/null +++ b/challenge-116/polettix/raku/ch-1.raku @@ -0,0 +1,26 @@ +#!/usr/bin/env raku +use v6; + +sub number-sequence (Int $N where * >= 10) { + my $Nlength = $N.chars; + SIZE: + for 1 .. ($Nlength / 2) -> $l { + my @retval = my $x = $N.substr(0, $l); + my $start = $l; + ++$x; + while (my $available = $Nlength - $start) > 0 { + my $xlen = $x.chars; + next SIZE if $xlen > $available || $N.substr($start, $xlen) ne $x; + @retval.push($x); + $start += $xlen; + ++$x; + } + return @retval; + } + return $N; +} + +sub MAIN (*@inputs) { + @inputs = < 1234 91011 10203 > unless @inputs.elems; + number-sequence($_).join(',').put for @inputs; +} diff --git a/challenge-116/polettix/raku/ch-2.raku b/challenge-116/polettix/raku/ch-2.raku new file mode 100644 index 0000000000..801ced0405 --- /dev/null +++ b/challenge-116/polettix/raku/ch-2.raku @@ -0,0 +1,16 @@ +#!/usr/bin/env raku +use v6; +use MONKEY-TYPING; + +augment class Int { + method is-square (--> Bool:D) { self == self.sqrt.Int ** 2 } +} + +sub sum-of-squares (Int $N where * >= 10 --> Int:D) { + $N.comb.map(* ** 2).sum.is-square ?? 1 !! 0; +} + +sub MAIN (*@inputs) { + @inputs = < 34 50 52 > unless @inputs.elems; + sum-of-squares($_).put for @inputs; +} |
