aboutsummaryrefslogtreecommitdiff
path: root/challenge-246
diff options
context:
space:
mode:
authorLuis Mochan <mochan@fis.unam.mx>2023-12-03 23:05:00 -0600
committerLuis Mochan <mochan@fis.unam.mx>2023-12-03 23:05:00 -0600
commit0e149357fcf2b47b6a98987e703691b3db57c3e9 (patch)
tree0dc28d22bbb8f7c60a38359278d50415f82f4ea6 /challenge-246
parentb41848354dc1a09ae68e01e91b551a36d13f8bda (diff)
downloadperlweeklychallenge-club-0e149357fcf2b47b6a98987e703691b3db57c3e9.tar.gz
perlweeklychallenge-club-0e149357fcf2b47b6a98987e703691b3db57c3e9.tar.bz2
perlweeklychallenge-club-0e149357fcf2b47b6a98987e703691b3db57c3e9.zip
Solve PWC246
Diffstat (limited to 'challenge-246')
-rw-r--r--challenge-246/wlmb/blog.txt1
-rwxr-xr-xchallenge-246/wlmb/perl/ch-1.pl9
-rwxr-xr-xchallenge-246/wlmb/perl/ch-2.pl23
3 files changed, 33 insertions, 0 deletions
diff --git a/challenge-246/wlmb/blog.txt b/challenge-246/wlmb/blog.txt
new file mode 100644
index 0000000000..76a7ba2f74
--- /dev/null
+++ b/challenge-246/wlmb/blog.txt
@@ -0,0 +1 @@
+https://wlmb.github.io/2023/12/03/PWC246/
diff --git a/challenge-246/wlmb/perl/ch-1.pl b/challenge-246/wlmb/perl/ch-1.pl
new file mode 100755
index 0000000000..dc73524925
--- /dev/null
+++ b/challenge-246/wlmb/perl/ch-1.pl
@@ -0,0 +1,9 @@
+#!/usr/bin/env perl
+# Perl weekly challenge 246
+# Task 1: 6 out of 49
+#
+# See https://wlmb.github.io/2023/12/03/PWC246/#task-1-6-out-of-49
+use v5.36;
+my %n=map{$_=>1} 1..49;
+my @n=keys %n;
+say join " ", @n[0..5];
diff --git a/challenge-246/wlmb/perl/ch-2.pl b/challenge-246/wlmb/perl/ch-2.pl
new file mode 100755
index 0000000000..025a9d98b3
--- /dev/null
+++ b/challenge-246/wlmb/perl/ch-2.pl
@@ -0,0 +1,23 @@
+#!/usr/bin/env perl
+# Perl weekly challenge 246
+# Task 2: Linear Recurrence of Second Order
+#
+# See https://wlmb.github.io/2023/12/03/PWC246/#task-2-linear-recurrence-of-second-order
+use v5.36;
+use List::Util qw(all);
+die <<~"FIN" unless @ARGV>=4;
+ Usage: $0 N0 N1 N2 N3 [N4...]
+ to check if the sequence of integers Ni obeys a linear second order recurrence with
+ integer coefficients
+ FIN
+die "Arguments must be integer" unless all {/^[+-]?\d+$/} @ARGV;
+my @x =@ARGV;
+my $num_p = $x[2]**2-$x[3]*$x[1];
+my $num_q = $x[0]*$x[3]-$x[1]*$x[2];
+my $den = $x[0]*$x[2]-$x[1]**2;
+my $result = $num_p%$den==0 && $num_q%$den==0; # coefficients are integer
+my $p=$num_p/$den;
+my $q=$num_q/$den;
+$result &&= $x[$_]==$p*$x[$_-2]+$q*$x[$_-1] for (4..@x-1);
+$result = $result?"True":"False";
+say "@x => $result"