aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuis Mochan <mochan@fis.unam.mx>2021-10-25 18:20:46 -0500
committerLuis Mochan <mochan@fis.unam.mx>2021-10-25 18:20:46 -0500
commitc0506fecce98e0797bcbf7e87bd46e9b43a8b2ef (patch)
tree98c3c0561f42600f63c5460c2533ae67ab0348f4
parent9af4627df80018091f1bbf86c07ede1eeeb6548f (diff)
downloadperlweeklychallenge-club-c0506fecce98e0797bcbf7e87bd46e9b43a8b2ef.tar.gz
perlweeklychallenge-club-c0506fecce98e0797bcbf7e87bd46e9b43a8b2ef.tar.bz2
perlweeklychallenge-club-c0506fecce98e0797bcbf7e87bd46e9b43a8b2ef.zip
Solve PWC136
-rw-r--r--challenge-136/wlmb/blog.txt1
-rwxr-xr-xchallenge-136/wlmb/perl/ch-1.pl18
-rwxr-xr-xchallenge-136/wlmb/perl/ch-2.pl24
3 files changed, 43 insertions, 0 deletions
diff --git a/challenge-136/wlmb/blog.txt b/challenge-136/wlmb/blog.txt
new file mode 100644
index 0000000000..dc282c1323
--- /dev/null
+++ b/challenge-136/wlmb/blog.txt
@@ -0,0 +1 @@
+https://wlmb.github.io/2021/10/25/PWC136/
diff --git a/challenge-136/wlmb/perl/ch-1.pl b/challenge-136/wlmb/perl/ch-1.pl
new file mode 100755
index 0000000000..6b8a006a73
--- /dev/null
+++ b/challenge-136/wlmb/perl/ch-1.pl
@@ -0,0 +1,18 @@
+#!/usr/bin/env perl
+# Perl weekly challenge 136
+# Task 1: Two friendly
+#
+# See https://wlmb.github.io/2021/10/25/PWC136/#task-1-two-friendly
+use v5.12;
+while(defined(my $x=shift @ARGV) and defined(my $y=shift @ARGV)){
+ my $d=gcd($x, $y);
+ my $b=sprintf "%b", $d;
+ my $output=$b=~/^1(0+)$/||0;
+ my $power=length($1);
+ say "Inputs: $x, $y\nOutput: $output\nSince gcd($x,$y)=$d",
+ $power?"=2**$power":"";
+}
+sub gcd {
+ my ($x,$y)=@_;
+ $y==0?$x:gcd($y,$x%$y);
+}
diff --git a/challenge-136/wlmb/perl/ch-2.pl b/challenge-136/wlmb/perl/ch-2.pl
new file mode 100755
index 0000000000..4996acdd52
--- /dev/null
+++ b/challenge-136/wlmb/perl/ch-2.pl
@@ -0,0 +1,24 @@
+#!/usr/bin/env perl
+# Perl weekly challenge 136
+# Task 1: Fibonacci sequence
+#
+# See https://wlmb.github.io/2021/10/25/PWC136/#task-2-fibonacci-sequence
+use v5.12;
+foreach(@ARGV){
+ my $count=my @sequences=fib($_,1,1);
+ say "Input: $_\nOutput: $count",
+ $count?join "\n =", "\nAs $_", map {join "+", @$_} @sequences
+ :"";
+}
+
+sub fib {
+ my ($number, $current, $previous)=@_;
+ return
+ $current>$number? ()
+ :$current==$number? ([$current])
+ :(
+ fib($number,$current+$previous, $current),
+ map {unshift @$_, $current; $_}
+ (fib($number-$current,$current+$previous, $current))
+ );
+}