diff options
| author | Luis Mochan <mochan@fis.unam.mx> | 2021-10-25 18:20:46 -0500 |
|---|---|---|
| committer | Luis Mochan <mochan@fis.unam.mx> | 2021-10-25 18:20:46 -0500 |
| commit | c0506fecce98e0797bcbf7e87bd46e9b43a8b2ef (patch) | |
| tree | 98c3c0561f42600f63c5460c2533ae67ab0348f4 | |
| parent | 9af4627df80018091f1bbf86c07ede1eeeb6548f (diff) | |
| download | perlweeklychallenge-club-c0506fecce98e0797bcbf7e87bd46e9b43a8b2ef.tar.gz perlweeklychallenge-club-c0506fecce98e0797bcbf7e87bd46e9b43a8b2ef.tar.bz2 perlweeklychallenge-club-c0506fecce98e0797bcbf7e87bd46e9b43a8b2ef.zip | |
Solve PWC136
| -rw-r--r-- | challenge-136/wlmb/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-136/wlmb/perl/ch-1.pl | 18 | ||||
| -rwxr-xr-x | challenge-136/wlmb/perl/ch-2.pl | 24 |
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)) + ); +} |
