aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuben Westerberg <drclaw@mac.com>2019-07-02 14:52:49 +1000
committerRuben Westerberg <drclaw@mac.com>2019-07-02 14:52:49 +1000
commitd88862c38829e35a41d41adde76d3855fa1ce921 (patch)
treeb76e83bff38e13bac4444250179a6a5703ade002
parent1789ef00e855fce35c0528196ad2fd201c1d2601 (diff)
downloadperlweeklychallenge-club-d88862c38829e35a41d41adde76d3855fa1ce921.tar.gz
perlweeklychallenge-club-d88862c38829e35a41d41adde76d3855fa1ce921.tar.bz2
perlweeklychallenge-club-d88862c38829e35a41d41adde76d3855fa1ce921.zip
Solutions to ch1. p5 and p6
-rwxr-xr-xchallenge-015/ruben-westerberg/perl5/ch-1.pl37
-rwxr-xr-xchallenge-015/ruben-westerberg/perl6/ch-1.p615
2 files changed, 52 insertions, 0 deletions
diff --git a/challenge-015/ruben-westerberg/perl5/ch-1.pl b/challenge-015/ruben-westerberg/perl5/ch-1.pl
new file mode 100755
index 0000000000..2367eb08e4
--- /dev/null
+++ b/challenge-015/ruben-westerberg/perl5/ch-1.pl
@@ -0,0 +1,37 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use List::Util qw<sum>;
+use v5.24;
+
+my (@week, @balanced, @strong); #Store the results here
+my @p=\(@week,@balanced,@strong); #Make indexable
+my @ps; #Primes shift reg
+my $i=0;
+
+while ((@strong < 10) || (@week < 10) ){
+ push @ps, nextPrime(); #Push the next prime into the shift reg
+ next if $i++ <2; #This line for priming buffer
+ push @{$p[($ps[1]<=>(sum(@ps[0,2])/2))+1]}, $ps[1]; #Do test
+ shift @ps; #Remove the oldest prime from shift reg
+}
+
+print "Week: ",join(", ",@week[0..9]),"\n";
+print "Strong: ",join(", ",@strong[0..9]),"\n";
+
+
+sub nextPrime {
+ state $p=1;
+ $p+=1 until isPrime( $p);
+ $p++;
+}
+
+sub isPrime {
+ my $t=shift;
+ my $sum=0;
+ for (1..(int $t/2)) {
+ $sum++ if $t % $_ == 0;
+ last if $sum >1;
+ }
+ $sum==1;
+}
diff --git a/challenge-015/ruben-westerberg/perl6/ch-1.p6 b/challenge-015/ruben-westerberg/perl6/ch-1.p6
new file mode 100755
index 0000000000..6536812b30
--- /dev/null
+++ b/challenge-015/ruben-westerberg/perl6/ch-1.p6
@@ -0,0 +1,15 @@
+#!/usr/bin/env perl6
+
+my (@week,@balanced, @strong);
+my @p=(@week, @balanced, @strong);
+my @ps;
+my @primes=(2..*).grep: *.is-prime;
+my $i=0;
+while @week < 10 or @strong < 10 {
+ @ps.push: @primes[$i];
+ next if $i++ < 2;
+ @p[((@ps[1] <=> (sum(@ps[0,2])/2)).value+1)].push: @ps[1];
+ @ps.shift;
+}
+put "Week: ",@week[^10].join: ", ";
+put "Strong: ",@strong[^10].join: ", ";