diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-11-18 07:47:43 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-18 07:47:43 +0000 |
| commit | 4ca3a2d61d6951f77f612e60ddc787caaa20fbd4 (patch) | |
| tree | e45d062fabe2021505fefc8a6b837b07eea80f90 | |
| parent | 951ff6dd2914d8107e43cc9fc0d62fd431f2b9e5 (diff) | |
| parent | 187c9b5231a17aaa4cbfd44b5c53f4c52ecf2d8c (diff) | |
| download | perlweeklychallenge-club-4ca3a2d61d6951f77f612e60ddc787caaa20fbd4.tar.gz perlweeklychallenge-club-4ca3a2d61d6951f77f612e60ddc787caaa20fbd4.tar.bz2 perlweeklychallenge-club-4ca3a2d61d6951f77f612e60ddc787caaa20fbd4.zip | |
Merge pull request #7102 from polettix/polettix/pwc191
Add polettix's solution to challenge-191
| -rw-r--r-- | challenge-191/polettix/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-191/polettix/blog1.txt | 1 | ||||
| -rw-r--r-- | challenge-191/polettix/perl/ch-1.pl | 14 | ||||
| -rw-r--r-- | challenge-191/polettix/perl/ch-2.pl | 23 | ||||
| -rw-r--r-- | challenge-191/polettix/raku/ch-1.raku | 10 | ||||
| -rw-r--r-- | challenge-191/polettix/raku/ch-2.raku | 19 |
6 files changed, 68 insertions, 0 deletions
diff --git a/challenge-191/polettix/blog.txt b/challenge-191/polettix/blog.txt new file mode 100644 index 0000000000..862155c362 --- /dev/null +++ b/challenge-191/polettix/blog.txt @@ -0,0 +1 @@ +https://etoobusy.polettix.it/2022/11/17/pwc191-twice-largest/ diff --git a/challenge-191/polettix/blog1.txt b/challenge-191/polettix/blog1.txt new file mode 100644 index 0000000000..d60b27f9fc --- /dev/null +++ b/challenge-191/polettix/blog1.txt @@ -0,0 +1 @@ +https://etoobusy.polettix.it/2022/11/18/pwc191-cute-list/ diff --git a/challenge-191/polettix/perl/ch-1.pl b/challenge-191/polettix/perl/ch-1.pl new file mode 100644 index 0000000000..6cb6ab3c93 --- /dev/null +++ b/challenge-191/polettix/perl/ch-1.pl @@ -0,0 +1,14 @@ +#!/usr/bin/env perl +use v5.24; +use warnings; +use experimental 'signatures'; +no warnings 'experimental::signatures'; + +say twice_largest(@ARGV); + +sub twice_largest (@list) { + return -1 unless @list > 0; + return 1 unless @list > 1; + my ($top, $next) = reverse sort { $a <=> $b } @list; + return ($top >= 2 * $next) ? 1 : -1; +} diff --git a/challenge-191/polettix/perl/ch-2.pl b/challenge-191/polettix/perl/ch-2.pl new file mode 100644 index 0000000000..72b6fb1dd6 --- /dev/null +++ b/challenge-191/polettix/perl/ch-2.pl @@ -0,0 +1,23 @@ +#!/usr/bin/env perl +use v5.24; +use warnings; +use experimental 'signatures'; +no warnings 'experimental::signatures'; + +say cute_list(shift // 2); + +sub cute_list ($n) { + state sub cute_list_r ($count, $i, @items) { + ++$count unless @items; + my @pre = (); + while (@items) { + my $v = shift @items; + if (! ($v % $i && $i % $v)) { + $count = __SUB__->($count, $i + 1, @pre, @items); + } + push @pre, $v; + } + return $count; + }; + cute_list_r(0, 1, 1 .. $n); +} diff --git a/challenge-191/polettix/raku/ch-1.raku b/challenge-191/polettix/raku/ch-1.raku new file mode 100644 index 0000000000..24a18b373a --- /dev/null +++ b/challenge-191/polettix/raku/ch-1.raku @@ -0,0 +1,10 @@ +#!/usr/bin/env raku +use v6; +sub MAIN (*@list) { put twice-largest(@list) } + +sub twice-largest (@list) { + my ($top, $next) = @list.sort({ $^a <=> $^b }).reverse.flat; + return -1 unless defined $top; + return 1 unless defined $next; + return ($top >= 2 * $next) ?? 1 !! -1; +} diff --git a/challenge-191/polettix/raku/ch-2.raku b/challenge-191/polettix/raku/ch-2.raku new file mode 100644 index 0000000000..77d06c2178 --- /dev/null +++ b/challenge-191/polettix/raku/ch-2.raku @@ -0,0 +1,19 @@ +#!/usr/bin/env raku +use v6; +sub MAIN (Int $n where 0 < * <= 15 = 2) { put cute-list($n) } + +sub cute-list ($n) { + sub cute-list-r ($count is copy, $i, *@items) { + ++$count unless @items; + my @pre; + while @items { + my $v = @items.shift; + if ($v %% $i) || ($i %% $v) { + $count = cute-list-r($count, $i + 1, @pre.Slip, @items.Slip); + } + @pre.push: $v; + } + return $count; + }; + return cute-list-r(0, 1, 1 .. $n); +} |
