aboutsummaryrefslogtreecommitdiff
path: root/challenge-082
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-082')
-rw-r--r--challenge-082/laurent-rosenfeld/blog.txt1
-rw-r--r--challenge-082/laurent-rosenfeld/perl/ch-1.pl21
-rw-r--r--challenge-082/laurent-rosenfeld/raku/ch-1.raku8
3 files changed, 30 insertions, 0 deletions
diff --git a/challenge-082/laurent-rosenfeld/blog.txt b/challenge-082/laurent-rosenfeld/blog.txt
new file mode 100644
index 0000000000..6f76aa65ed
--- /dev/null
+++ b/challenge-082/laurent-rosenfeld/blog.txt
@@ -0,0 +1 @@
+http://blogs.perl.org/users/laurent_r/2020/10/perl-weekly-challenge-82-common-factors.html
diff --git a/challenge-082/laurent-rosenfeld/perl/ch-1.pl b/challenge-082/laurent-rosenfeld/perl/ch-1.pl
new file mode 100644
index 0000000000..bb9fffa367
--- /dev/null
+++ b/challenge-082/laurent-rosenfeld/perl/ch-1.pl
@@ -0,0 +1,21 @@
+use strict;
+use warnings;
+use feature "say";
+
+sub gcd {
+ my ($i, $j) = sort { $a <=> $b } @_;
+ while ($j) {
+ ($i, $j) = ($j, $i % $j);
+ }
+ return $i;
+}
+
+sub common_factors {
+ my ($i, $j) = @_;
+ my $gcd = gcd ($i, $j);
+ return (1) if $gcd == 1;
+ my @factors = grep { $gcd % $_ == 0 } 1..$gcd;
+ my %unique = map {$_ => 1} @factors;
+ return sort { $a <=> $b } keys %unique;
+}
+say join " ", common_factors @ARGV;
diff --git a/challenge-082/laurent-rosenfeld/raku/ch-1.raku b/challenge-082/laurent-rosenfeld/raku/ch-1.raku
new file mode 100644
index 0000000000..12a67d9bd4
--- /dev/null
+++ b/challenge-082/laurent-rosenfeld/raku/ch-1.raku
@@ -0,0 +1,8 @@
+sub common_factors (Int $a, Int $b) {
+ my $gcd = $a gcd $b;
+ return (1,) if $gcd == 1;
+ return ($gcd,) if $gcd.is-prime;
+ return (1..$gcd).grep($gcd %% *).unique;
+}
+my @result = common_factors 12, 18;
+say @result;