aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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: ", ";