One-two primes: Difference between revisions

m
→‎{{header|Perl}}: improved 'condense' (no args required)
m (→‎Generalized: A little less terse. Exact same functionality but better names and whitespace)
m (→‎{{header|Perl}}: improved 'condense' (no args required))
Line 371:
use ntheory 'is_prime';
 
sub condense ($n,$a,$b) { $n =~ /^((.)\2+)/; my $i = index(length $n,$b)1; $i>9 ? "($a2 x $i) " . substr($n,$i) : $n }
 
sub combine ($d, $a, $b, $s='') { # NB: $a < $b
if ($d == 1 && is_prime $s.$a) { return $s.$a
} elsif ($d == 1 && is_prime $s.$b) { return $s.$b
Line 382:
my($a,$b) = (1,2);
say "Smallest n digit prime using only $a and $b (or '0' if none exists):";
printf "%4d: %s\n", $_, combine($_,$a,$b) for 1..20;
printf "%4d: %s\n", $_, condense( combine($_,$a,$b),$a,$b) for map {100*$_}, 1..20;
 
($a,$b) = (7,9);
say "\nSmallest n digit prime using only $a and $b (or '0' if none exists):";
printf "%4d: %s\n", $_, condense( combine($_,$a,$b),$a,$b) for 1..20, 100, 200;
 
# 1st term missing
2,392

edits