- #!/usr/bin/perl
-
- use strict;
- use warnings;
-
-
-
- sub list_viable {
- my $str = shift;
- my @n = split //, $str;
- my @possibilities;
-
-
- for my $j (0..@n-1) {
- for my $k ($j+1..@n-1) {
- for my $i ($k+1..@n-1) {
- if ($n[$j] eq $n[$k] && $n[$k] eq $n[$i]) {
- push @possibilities, substr($str, 0, $j) . '*' . substr($str, $j+1, $k-$j-1) . '*' . substr($str, $k+1, $i-$k-1) . '*' . substr($str, $i+1);
- }
- }
- }
- }
-
- return @possibilities;
- }
-
-
-
- open PRIMES, "primes_under_1000000.TXT" or die("CAN'T OPEN FILE.");
-
-
-
- my $count = 0;
- my %primes = map {$_,1} map { chomp; int $_ } <PRIMES>;
-
-
-
- for my $p (sort { $a <=> $b } keys %primes) {
- for my $v (list_viable $p) {
- my @perhaps = ();
-
- for my $d (0..9) {
- my $t = $v;
-
-
- $t =~ s/\*/$d/;
- $t =~ s/\*/$d/;
- $t =~ s/\*/$d/;
-
-
- push @perhaps, $t if defined $primes{$t};
- }
-
- $count = int @perhaps;
-
-
-
- if ($count >= 8) {
- print "$p";
- goto LEAVE;
- }
- }
- }
-
-
-
-
-
- LEAVE: close PRIMES;