diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-01-04 17:47:24 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-01-04 17:47:24 +0000 |
| commit | 6b23e3e7590487bfdae397dc6fbb98f27d847509 (patch) | |
| tree | 4f58be7a2e0f6c9218eca016166d63ce53e6ec70 /challenge-041 | |
| parent | 7fd8514508842aecb0e6b11dfb12792d9824b420 (diff) | |
| parent | 7649e23d2b150b36cdd134bcf17125f3b9696ada (diff) | |
| download | perlweeklychallenge-club-6b23e3e7590487bfdae397dc6fbb98f27d847509.tar.gz perlweeklychallenge-club-6b23e3e7590487bfdae397dc6fbb98f27d847509.tar.bz2 perlweeklychallenge-club-6b23e3e7590487bfdae397dc6fbb98f27d847509.zip | |
Merge pull request #1103 from drclaw1394/master
drclaw/ruben solutions to w41 ch-1 and ch-2. perl and raku
Diffstat (limited to 'challenge-041')
| -rw-r--r-- | challenge-041/ruben-westerberg/README | 4 | ||||
| -rwxr-xr-x | challenge-041/ruben-westerberg/perl/ch-1.pl | 44 | ||||
| -rwxr-xr-x | challenge-041/ruben-westerberg/perl/ch-2.pl | 13 | ||||
| -rwxr-xr-x | challenge-041/ruben-westerberg/raku/ch-1.p6 | 25 | ||||
| -rwxr-xr-x | challenge-041/ruben-westerberg/raku/ch-2.p6 | 10 |
5 files changed, 94 insertions, 2 deletions
diff --git a/challenge-041/ruben-westerberg/README b/challenge-041/ruben-westerberg/README index be0526d4eb..739bcf2117 100644 --- a/challenge-041/ruben-westerberg/README +++ b/challenge-041/ruben-westerberg/README @@ -2,11 +2,11 @@ Solution by Ruben Westerberg ch-1.pl and ch-1.p6 =================== -Run the program to select a slice of an array of arrays. Indexes can be specified from the command line +Run program to show 'attractive numbers' between 1 and 50 ch-2.pl and ch-2.p6 =================== -Run the program to sort the specified entries in the predfined list. +Run program to display the first 20 Leonardo Numbers diff --git a/challenge-041/ruben-westerberg/perl/ch-1.pl b/challenge-041/ruben-westerberg/perl/ch-1.pl new file mode 100755 index 0000000000..3610ec040c --- /dev/null +++ b/challenge-041/ruben-westerberg/perl/ch-1.pl @@ -0,0 +1,44 @@ +#!/usr/bin/env perl +use strict; +use warnings; +for (1..50) { + my @a=primeFactors($_); + print "Attractive number $_: prime factors @a\n" if (prime(scalar @a)); +} +sub prime { + my $n=shift; + if ($n <= 3 ) { + return $n > 1; + } + elsif ($n % 2 == 0 or $n % 3 ==0 ) { + return 0; + } + my $i=5; + while ($i**2 <= $n) { + if ( $n % $i ==0 or $n % ($i+2) == 0 ) { + return 0; + } + $i+=6; + } + return 1; +} + +sub primeFactors { + my @factors; + my $i=shift; + for (1..$i/2) { + if ($i%$_ == 0 and prime $_ ) { + my $b=$i/$_; + push @factors, $_; + if (prime $b) { + push @factors, $b; + } + else { + push @factors, primeFactors($b); + } + last; + } + } + @factors; +} + diff --git a/challenge-041/ruben-westerberg/perl/ch-2.pl b/challenge-041/ruben-westerberg/perl/ch-2.pl new file mode 100755 index 0000000000..3a2f87592d --- /dev/null +++ b/challenge-041/ruben-westerberg/perl/ch-2.pl @@ -0,0 +1,13 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use v5.26; + +print map { "n: $_ l: ".l($_)."\n"} 0..19; + +sub l { + my $i=shift; + state @cache=(1,1); + push @cache, $cache[-1]+$cache[-2]+1 while(! defined($cache[$i])); + $cache[$i]; +} diff --git a/challenge-041/ruben-westerberg/raku/ch-1.p6 b/challenge-041/ruben-westerberg/raku/ch-1.p6 new file mode 100755 index 0000000000..a34917c95c --- /dev/null +++ b/challenge-041/ruben-westerberg/raku/ch-1.p6 @@ -0,0 +1,25 @@ +#!/usr/bin/env perl6 + +for 1..50 { + my @a=primeFactors($_).flat; + put "Attractive number $_: prime factors @a[]" if @a.is-prime; +} + +sub primeFactors($i) { + gather { + for 1..$i/2 { + if ($i%%$_) && $_.is-prime { + take $_; + given $i/$_ { + if .is-prime { + take $_; + } + else { + take (|primeFactors($_)); + } + last; + } + } + } + } +} diff --git a/challenge-041/ruben-westerberg/raku/ch-2.p6 b/challenge-041/ruben-westerberg/raku/ch-2.p6 new file mode 100755 index 0000000000..cd75f4258a --- /dev/null +++ b/challenge-041/ruben-westerberg/raku/ch-2.p6 @@ -0,0 +1,10 @@ +#!/usr/bin/env perl6 + +put (0..19).map({ "n: $_ l: "~l($_)}).join("\n"); + +sub l($i) { + state @cache=(1,1); + @cache.push(@cache[*-1,*-2].sum+1) while !@cache[$i].defined; + @cache[$i]; +} + |
