aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2019-05-04 20:13:40 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2019-05-04 20:13:40 +0100
commitbe35481acbb84e90b0bd65880334806b28c702c3 (patch)
tree2d30e97281eb4b5011c892491addbc57654cb071
parentb1a1a7a8a4d30edaf3f1b387327b839605e1c5e6 (diff)
downloadperlweeklychallenge-club-be35481acbb84e90b0bd65880334806b28c702c3.tar.gz
perlweeklychallenge-club-be35481acbb84e90b0bd65880334806b28c702c3.tar.bz2
perlweeklychallenge-club-be35481acbb84e90b0bd65880334806b28c702c3.zip
More solutions by Laurent Rosenfeld.
-rw-r--r--challenge-006/laurent-rosenfeld/blog.txt1
-rw-r--r--challenge-006/laurent-rosenfeld/perl5/ch-1e.pl33
-rw-r--r--challenge-006/laurent-rosenfeld/perl5/ch-1f.sh1
-rw-r--r--challenge-006/laurent-rosenfeld/perl5/ch-1g.pl6
-rw-r--r--challenge-006/laurent-rosenfeld/perl5/ch-1h.pl5
-rw-r--r--challenge-006/laurent-rosenfeld/perl6/ch-1b.p66
6 files changed, 52 insertions, 0 deletions
diff --git a/challenge-006/laurent-rosenfeld/blog.txt b/challenge-006/laurent-rosenfeld/blog.txt
index 54d90dc3a7..19fd567afc 100644
--- a/challenge-006/laurent-rosenfeld/blog.txt
+++ b/challenge-006/laurent-rosenfeld/blog.txt
@@ -1 +1,2 @@
http://blogs.perl.org/users/laurent_r/2019/05/perl-weekly-challenge-6-compact-number-ranges.html
+http://blogs.perl.org/users/laurent_r/2019/05/perl-weekly-challenge-6-ramanujans-constant.html
diff --git a/challenge-006/laurent-rosenfeld/perl5/ch-1e.pl b/challenge-006/laurent-rosenfeld/perl5/ch-1e.pl
new file mode 100644
index 0000000000..aeb0ae555e
--- /dev/null
+++ b/challenge-006/laurent-rosenfeld/perl5/ch-1e.pl
@@ -0,0 +1,33 @@
+e strict;
+use warnings;
+use feature 'say';
+use constant largest_num => 100_000;
+
+sub find_primes {
+ my $num = 5;
+ my @primes = (2, 3, 5);
+ while (1) {
+ $num += 2; # check only odd numbers
+ last if $num > largest_num;
+ my $limit = int $num ** 0.5;
+ my $num_is_prime = 1;
+ for my $prime (@primes) {
+ last if $prime > $limit;
+ if ($num % $prime == 0) {
+ $num_is_prime = 0;
+ last;
+ }
+ }
+ push @primes, $num if $num_is_prime;
+ }
+ return @primes;
+}
+my @prime_numbers = find_primes;
+my @primes_for_rama = grep { $_ % 4 == 3 } @prime_numbers;
+
+my $product = 1;
+for my $p (@primes_for_rama) {
+ my $term = (1 - (1 / $p**2)) **(-1/2);
+ $product *= $term;
+}
+say $product / 2**(1/2);
diff --git a/challenge-006/laurent-rosenfeld/perl5/ch-1f.sh b/challenge-006/laurent-rosenfeld/perl5/ch-1f.sh
new file mode 100644
index 0000000000..c67b2b2a1a
--- /dev/null
+++ b/challenge-006/laurent-rosenfeld/perl5/ch-1f.sh
@@ -0,0 +1 @@
+perl -E '$pi = 3.14159265358979323846; say exp ($pi * sqrt 163);'
diff --git a/challenge-006/laurent-rosenfeld/perl5/ch-1g.pl b/challenge-006/laurent-rosenfeld/perl5/ch-1g.pl
new file mode 100644
index 0000000000..abcf2e093d
--- /dev/null
+++ b/challenge-006/laurent-rosenfeld/perl5/ch-1g.pl
@@ -0,0 +1,6 @@
+use strict;
+use warnings;
+use Math::BigFloat "bpi";
+my $sqrt_163 = Math::BigFloat->new(163)->bsqrt;
+my $big_e = Math::BigFloat->new(1)->bexp;
+printf "%.33s\n", $big_e ** (bpi() * $sqrt_163);
diff --git a/challenge-006/laurent-rosenfeld/perl5/ch-1h.pl b/challenge-006/laurent-rosenfeld/perl5/ch-1h.pl
new file mode 100644
index 0000000000..dab43526ca
--- /dev/null
+++ b/challenge-006/laurent-rosenfeld/perl5/ch-1h.pl
@@ -0,0 +1,5 @@
+use strict;
+use warnings;
+use feature "say";
+use Math::BigFloat "bpi";
+say Math::BigFloat->new(163)->bsqrt->bmul(bpi)->bexp(32);
diff --git a/challenge-006/laurent-rosenfeld/perl6/ch-1b.p6 b/challenge-006/laurent-rosenfeld/perl6/ch-1b.p6
new file mode 100644
index 0000000000..55a25bb7d8
--- /dev/null
+++ b/challenge-006/laurent-rosenfeld/perl6/ch-1b.p6
@@ -0,0 +1,6 @@
+use v6;
+
+my @primes = grep { .is-prime }, map { 4 * $_ + 3}, 0..1_000_000;
+my @terms = map { 1 / (1 - (1/($_ * $_)) ) }, @primes;
+my $product = ([*] @terms) /2;
+say $product ** (1/2);