aboutsummaryrefslogtreecommitdiff
path: root/challenge-041
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2019-12-31 12:44:53 +0000
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2019-12-31 12:44:53 +0000
commite4227de738ee6161766a9bb9e023ca17302b9112 (patch)
tree2e00f339a62091d357df57eadd2b80abf16baed5 /challenge-041
parent38e10bd23fdc99f6f932645291ee697e0ce2b5d6 (diff)
downloadperlweeklychallenge-club-e4227de738ee6161766a9bb9e023ca17302b9112.tar.gz
perlweeklychallenge-club-e4227de738ee6161766a9bb9e023ca17302b9112.tar.bz2
perlweeklychallenge-club-e4227de738ee6161766a9bb9e023ca17302b9112.zip
- Added solutions by Ulrich Rieke.
Diffstat (limited to 'challenge-041')
-rw-r--r--challenge-041/ulrich-rieke/perl5/ch-1.pl53
-rw-r--r--challenge-041/ulrich-rieke/perl5/ch-2.pl12
-rw-r--r--challenge-041/ulrich-rieke/perl6/ch-1.p629
-rw-r--r--challenge-041/ulrich-rieke/perl6/ch-2.p64
4 files changed, 98 insertions, 0 deletions
diff --git a/challenge-041/ulrich-rieke/perl5/ch-1.pl b/challenge-041/ulrich-rieke/perl5/ch-1.pl
new file mode 100644
index 0000000000..b25a47ad1a
--- /dev/null
+++ b/challenge-041/ulrich-rieke/perl5/ch-1.pl
@@ -0,0 +1,53 @@
+#!/usr/bin/perl ;
+use strict ;
+use warnings ;
+
+sub isPrime {
+ my $number = shift ;
+ if ( $number == 1 ) {
+ return 0 ;
+ }
+ if ( $number == 2 ) {
+ return 1 ;
+ }
+ for ( my $i = 2 ; $i < int ( $number / 2 + 1 ) ; $i++ ) {
+ if ( $number % $i == 0 ) {
+ return 0 ;
+ last ;
+ }
+ }
+ return 1 ;
+}
+
+sub isAttractive {
+ my $number = shift ;
+ my @primeFactors = primeFactors( $number ) ;
+ return isPrime( scalar @primeFactors ) ;
+}
+
+sub primeFactors {
+ my $num = shift ;
+ if ( $num == 1 ) {
+ return ( ) ;
+ }
+ my $current = 2 ;
+ my @primeFactors ;
+ while ( $num != 1 ) {
+ if ( $num % $current == 0 ) {
+ push @primeFactors , $current ;
+ $num /= $current ;
+ }
+ else {
+ do {
+ $current++ ;
+ } while ( not isPrime( $current ) ) ;
+ }
+ }
+ return @primeFactors ;
+}
+
+my @attractives = grep { isAttractive( $_ ) } (1..50) ;
+foreach my $num ( @attractives ) {
+ print "$num " ;
+}
+print "\n" ;
diff --git a/challenge-041/ulrich-rieke/perl5/ch-2.pl b/challenge-041/ulrich-rieke/perl5/ch-2.pl
new file mode 100644
index 0000000000..2b49169f3d
--- /dev/null
+++ b/challenge-041/ulrich-rieke/perl5/ch-2.pl
@@ -0,0 +1,12 @@
+#!/usr/bin/perl ;
+use strict ;
+use warnings ;
+
+my @leonardos = ( 1 , 1 ) ;
+while ( (scalar @leonardos ) < 20 ) {
+ push @leonardos , $leonardos[-1] + $leonardos[-2] + 1 ;
+}
+for my $num ( @leonardos ) {
+ print "$num " ;
+}
+print "\n" ;
diff --git a/challenge-041/ulrich-rieke/perl6/ch-1.p6 b/challenge-041/ulrich-rieke/perl6/ch-1.p6
new file mode 100644
index 0000000000..789a0a499c
--- /dev/null
+++ b/challenge-041/ulrich-rieke/perl6/ch-1.p6
@@ -0,0 +1,29 @@
+use v6 ;
+
+sub primeFactors( Int $n is copy ) {
+ if ( $n == 1 ) {
+ return ( ) ;
+ }
+ my @primeFactors ;
+ my $current = 2 ;
+ while ( $n != 1 ) {
+ if ( $n %% $current ) {
+ @primeFactors.push( $current ) ;
+ $n div= $current ;
+ }
+ else {
+ repeat {
+ $current++ ;
+ } until $current.is-prime ;
+ }
+ }
+ return @primeFactors ;
+}
+
+sub isAttractive( Int $n --> Bool ) {
+ my @primeFactors = primeFactors( $n ) ;
+ return @primeFactors.elems.is-prime ;
+}
+
+.say for (1..50).grep( {isAttractive( $_ ) } ) ;
+
diff --git a/challenge-041/ulrich-rieke/perl6/ch-2.p6 b/challenge-041/ulrich-rieke/perl6/ch-2.p6
new file mode 100644
index 0000000000..4de97142a0
--- /dev/null
+++ b/challenge-041/ulrich-rieke/perl6/ch-2.p6
@@ -0,0 +1,4 @@
+use v6 ;
+
+my @leonardos = (1 , 1 , 3 , * + * + 1 ...^ *) ;
+.say for @leonardos[^20] ;