Skip to content

Commit

Permalink
[euler] problem 60
Browse files Browse the repository at this point in the history
  • Loading branch information
andreoss committed Sep 7, 2015
1 parent e83ca50 commit 7701347
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 2 deletions.
68 changes: 68 additions & 0 deletions categories/euler/prob060-andreoss.pl
@@ -0,0 +1,68 @@
use v6;

=begin pod
=TITLE Prime pair sets
=AUTHOR Andrei Osipov
The primes 3, 7, 109, and 673, are quite remarkable. By taking any two
primes and concatenating them in any order the result will always be
prime. For example, taking 7 and 109, both 7109 and 1097 are
prime. The sum of these four primes, 792, represents the lowest sum
for a set of four primes with this property.
Find the lowest sum for a set of five primes for which any two primes
concatenate to produce another prime.
=end pod

subset Prime of Int where *.is-prime;


sub infix:«R»($a, $b) {
+( $a ~ $b ) & +( $b ~ $a ) ~~ Prime
}

multi are-remarkable() { True }
multi are-remarkable($a) { True }
multi are-remarkable($a, *@xs) {
$a R @xs.all
}

sub get-remarkable( :@primes is copy
, *@sequence
) {
gather while my $x = @primes.shift {
if are-remarkable $x, @sequence {
take(|@sequence , $x) if @sequence;
take $_
for get-remarkable
:@primes
, @sequence, $x
}
}
}

sub MAIN( Int :$limit = 10_000
, Bool :$verbose = False
, Int :$size = 5
) {

my @primes = grep Prime , 1 .. $limit;

for get-remarkable :@primes -> @r {

say @r.perl if $verbose ;

if @r == $size {
$verbose
?? say "The sequence is @r[], the sum is {[+] @r}"
!! say [+] @r
and last
}
}

say "Done in {now - BEGIN now}." if $verbose;
}

2 changes: 1 addition & 1 deletion categories/euler/prob066-andreoss.pl
Expand Up @@ -34,7 +34,7 @@
Find the value of D ≤ 1000 in minimal solutions of x for which the largest
value of x is obtained.
The following algoritm was used for the solution:
The following algorithm was used for the solution:
L<https://en.wikipedia.org/wiki/Chakravala_method>
=end pod
Expand Down
2 changes: 1 addition & 1 deletion categories/euler/prob080-andreoss.pl
Expand Up @@ -18,7 +18,7 @@
sums of the first one hundred decimal digits for all the irrational square
roots.
The following algoritm was used for the solution:
The following algorithm was used for the solution:
L<http://www.afjarvis.staff.shef.ac.uk/maths/jarvisspec02.pdf>
=end pod
Expand Down
11 changes: 11 additions & 0 deletions t/categories/euler.t
Expand Up @@ -456,6 +456,17 @@ subtest {
check-example-solutions($problem, $expected-output, @authors)
}, "prob059";

subtest {
plan 1;

my $problem = "prob060";
my @authors = <andreoss>;
my $expected-output = 26033;

check-example-solutions($problem, $expected-output, @authors)
}, "prob060";


subtest {
plan 2;

Expand Down

0 comments on commit 7701347

Please sign in to comment.