diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-12-31 12:44:53 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-12-31 12:44:53 +0000 |
| commit | e4227de738ee6161766a9bb9e023ca17302b9112 (patch) | |
| tree | 2e00f339a62091d357df57eadd2b80abf16baed5 /challenge-041 | |
| parent | 38e10bd23fdc99f6f932645291ee697e0ce2b5d6 (diff) | |
| download | perlweeklychallenge-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.pl | 53 | ||||
| -rw-r--r-- | challenge-041/ulrich-rieke/perl5/ch-2.pl | 12 | ||||
| -rw-r--r-- | challenge-041/ulrich-rieke/perl6/ch-1.p6 | 29 | ||||
| -rw-r--r-- | challenge-041/ulrich-rieke/perl6/ch-2.p6 | 4 |
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] ; |
