aboutsummaryrefslogtreecommitdiff
path: root/challenge-147
diff options
context:
space:
mode:
authorAlexander Pankoff <ccntrq@screenri.de>2022-01-16 10:47:25 +0100
committerAlexander Pankoff <ccntrq@screenri.de>2022-01-16 10:48:14 +0100
commit28eb8155b7d6f65312d135a01434b7d1efe9f981 (patch)
treee50a5104d04c92967e925e93c0fadbe4b95c41c7 /challenge-147
parentb660a053feab7ac5ac3fd98226f7b4ffad0e1a33 (diff)
downloadperlweeklychallenge-club-28eb8155b7d6f65312d135a01434b7d1efe9f981.tar.gz
perlweeklychallenge-club-28eb8155b7d6f65312d135a01434b7d1efe9f981.tar.bz2
perlweeklychallenge-club-28eb8155b7d6f65312d135a01434b7d1efe9f981.zip
Add solution fo challenge-147 task 1
Diffstat (limited to 'challenge-147')
-rw-r--r--challenge-147/alexander-pankoff/perl/ch-1.pl47
1 files changed, 47 insertions, 0 deletions
diff --git a/challenge-147/alexander-pankoff/perl/ch-1.pl b/challenge-147/alexander-pankoff/perl/ch-1.pl
new file mode 100644
index 0000000000..fe0009ac63
--- /dev/null
+++ b/challenge-147/alexander-pankoff/perl/ch-1.pl
@@ -0,0 +1,47 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use feature qw'say signatures';
+no warnings qw'experimental::signatures';
+
+use Data::Dumper;
+use List::Util qw(all);
+
+run() unless caller();
+
+sub run() {
+ say join( ", ", left_truncatable_primes(20) );
+}
+
+sub left_truncatable_primes($n) {
+
+ my @primes = ();
+ for ( my $i = 2 ; @primes <= $n ; $i++ ) {
+ push @primes, $i if is_left_truncatable_prime($i);
+
+ }
+
+ return @primes;
+}
+
+sub is_left_truncatable_prime($x) {
+ return 0 if $x =~ /0/;
+ return 0 if !is_prime($x);
+ return 1 if length $x == 1;
+
+ return is_left_truncatable_prime( substr( $x, 1 ) );
+
+}
+
+sub is_prime($x) {
+
+ return 0 if $x < 2;
+ return 1 if $x < 4;
+
+ for ( my $i = 2 ; $i <= sqrt($x) ; $i++ ) {
+ return 0 if $x % $i == 0;
+ }
+
+ return 1;
+
+}