aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-11-18 07:47:43 +0000
committerGitHub <noreply@github.com>2022-11-18 07:47:43 +0000
commit4ca3a2d61d6951f77f612e60ddc787caaa20fbd4 (patch)
treee45d062fabe2021505fefc8a6b837b07eea80f90
parent951ff6dd2914d8107e43cc9fc0d62fd431f2b9e5 (diff)
parent187c9b5231a17aaa4cbfd44b5c53f4c52ecf2d8c (diff)
downloadperlweeklychallenge-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.txt1
-rw-r--r--challenge-191/polettix/blog1.txt1
-rw-r--r--challenge-191/polettix/perl/ch-1.pl14
-rw-r--r--challenge-191/polettix/perl/ch-2.pl23
-rw-r--r--challenge-191/polettix/raku/ch-1.raku10
-rw-r--r--challenge-191/polettix/raku/ch-2.raku19
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);
+}