diff options
| author | Ruben Westerberg <drclaw@mac.com> | 2019-07-02 14:52:49 +1000 |
|---|---|---|
| committer | Ruben Westerberg <drclaw@mac.com> | 2019-07-02 14:52:49 +1000 |
| commit | d88862c38829e35a41d41adde76d3855fa1ce921 (patch) | |
| tree | b76e83bff38e13bac4444250179a6a5703ade002 | |
| parent | 1789ef00e855fce35c0528196ad2fd201c1d2601 (diff) | |
| download | perlweeklychallenge-club-d88862c38829e35a41d41adde76d3855fa1ce921.tar.gz perlweeklychallenge-club-d88862c38829e35a41d41adde76d3855fa1ce921.tar.bz2 perlweeklychallenge-club-d88862c38829e35a41d41adde76d3855fa1ce921.zip | |
Solutions to ch1. p5 and p6
| -rwxr-xr-x | challenge-015/ruben-westerberg/perl5/ch-1.pl | 37 | ||||
| -rwxr-xr-x | challenge-015/ruben-westerberg/perl6/ch-1.p6 | 15 |
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: ", "; |
