From 1dba828ad4c745fb8c2cd5c06711a89bbd0e43f1 Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Mon, 30 May 2022 23:29:24 +0000 Subject: Challenge 167 Solutions (Raku) --- challenge-167/mark-anderson/raku/ch-1.raku | 26 +++++++++++++++++ challenge-167/mark-anderson/raku/ch-2.raku | 47 ++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 challenge-167/mark-anderson/raku/ch-1.raku create mode 100644 challenge-167/mark-anderson/raku/ch-2.raku (limited to 'challenge-167') diff --git a/challenge-167/mark-anderson/raku/ch-1.raku b/challenge-167/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..f3e9e28ddc --- /dev/null +++ b/challenge-167/mark-anderson/raku/ch-1.raku @@ -0,0 +1,26 @@ +#!/usr/bin/env raku + +my %seen; + +say (101, 103, 105 ... *).grep(&is-prime) + .grep(&circular) + .head(10); + +sub circular($n is copy) +{ + return True if $n < 10; + return False if $n ~~ /<[024568]>/; + return False if %seen{$n}; + + my @n = $n.comb; + + for ^@n.end + { + @n .= rotate; + %seen{@n.join} = True; + + return False unless @n.join.is-prime; + } + + return True; +} diff --git a/challenge-167/mark-anderson/raku/ch-2.raku b/challenge-167/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..6652f0ef01 --- /dev/null +++ b/challenge-167/mark-anderson/raku/ch-2.raku @@ -0,0 +1,47 @@ +#!/usr/bin/env raku + +use Test; + +is-approx Γ(3), 2; +is-approx Γ(5), 24; +is-approx Γ(7), 720; + +sub Γ($z is copy) +{ + my \ϵ = 1e-7; + + my @p = [ 676.5203681218851, + -1259.1392167224028, + 771.32342877765313, + -176.61502916214059, + 12.507343278686905, + -0.13857109526572012, + 9.9843695780195716e-6, + 1.5056327351493116e-7 ]; + + my $y; + + $z .= Complex; + + if $z.re < ½ + { + $y = π / (sin(π * $z) * Γ(1 - $z)) + } + + else + { + $z--; + + my $x = 0.99999999999980993; + + $x += $_ / ($z + $++ + 1) for @p; + + my $t = $z + @p - ½; + + $y = sqrt(2 * π) * $t ** ($z + ½) * exp(-$t) * $x; + } + + $y = $y.re if abs($y.im) <= ϵ; + + return $y; +} -- cgit From a887970dd32282fe91c92f884b125cbab91af625 Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Mon, 30 May 2022 23:33:35 +0000 Subject: Challenge 167 Solutions (Raku) --- challenge-167/mark-anderson/raku/ch-2.raku | 2 ++ 1 file changed, 2 insertions(+) (limited to 'challenge-167') diff --git a/challenge-167/mark-anderson/raku/ch-2.raku b/challenge-167/mark-anderson/raku/ch-2.raku index 6652f0ef01..8954bbe8b4 100644 --- a/challenge-167/mark-anderson/raku/ch-2.raku +++ b/challenge-167/mark-anderson/raku/ch-2.raku @@ -1,5 +1,7 @@ #!/usr/bin/env raku +# A translation of the Python code at https://en.wikipedia.org/wiki/Lanczos_approximation + use Test; is-approx Γ(3), 2; -- cgit From 1196671d5a259884564b7fb2c6f420d760cd4c72 Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Tue, 31 May 2022 14:53:26 +0000 Subject: Challenge 167 Solutions (Raku) --- challenge-167/mark-anderson/raku/ch-2.raku | 4 ---- 1 file changed, 4 deletions(-) (limited to 'challenge-167') diff --git a/challenge-167/mark-anderson/raku/ch-2.raku b/challenge-167/mark-anderson/raku/ch-2.raku index 8954bbe8b4..ddfd905443 100644 --- a/challenge-167/mark-anderson/raku/ch-2.raku +++ b/challenge-167/mark-anderson/raku/ch-2.raku @@ -33,13 +33,9 @@ sub Γ($z is copy) else { $z--; - my $x = 0.99999999999980993; - $x += $_ / ($z + $++ + 1) for @p; - my $t = $z + @p - ½; - $y = sqrt(2 * π) * $t ** ($z + ½) * exp(-$t) * $x; } -- cgit From d37786bc4b8bfad520f49a5d833cebe781660579 Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Tue, 31 May 2022 15:11:17 +0000 Subject: Challenge 167 Solutions (Raku) --- challenge-167/mark-anderson/raku/ch-1.raku | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'challenge-167') diff --git a/challenge-167/mark-anderson/raku/ch-1.raku b/challenge-167/mark-anderson/raku/ch-1.raku index f3e9e28ddc..15c3073aab 100644 --- a/challenge-167/mark-anderson/raku/ch-1.raku +++ b/challenge-167/mark-anderson/raku/ch-1.raku @@ -2,7 +2,8 @@ my %seen; -say (101, 103, 105 ... *).grep(&is-prime) +say (101, 103, 105 ... *).hyper + .grep(&is-prime) .grep(&circular) .head(10); -- cgit From 0053fbb175e509a2f383703d179e1d3123f3cd47 Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Tue, 31 May 2022 15:48:28 +0000 Subject: Challenge 167 Solutions (Raku) --- challenge-167/mark-anderson/raku/ch-1.raku | 1 - 1 file changed, 1 deletion(-) (limited to 'challenge-167') diff --git a/challenge-167/mark-anderson/raku/ch-1.raku b/challenge-167/mark-anderson/raku/ch-1.raku index 15c3073aab..bac4a5ee03 100644 --- a/challenge-167/mark-anderson/raku/ch-1.raku +++ b/challenge-167/mark-anderson/raku/ch-1.raku @@ -19,7 +19,6 @@ sub circular($n is copy) { @n .= rotate; %seen{@n.join} = True; - return False unless @n.join.is-prime; } -- cgit