aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCY Fung <fungcheokyin@gmail.com>2022-06-05 22:54:10 +0800
committerCY Fung <fungcheokyin@gmail.com>2022-06-05 22:54:10 +0800
commit1cbc77b2d11443ac87202f137ec2a1f56d19ceff (patch)
treec008cd7f36522a4471d3710b77c7abf574a01915
parent3a4d95f637d1a157d8c04ad08dfeb14c6f233ca0 (diff)
downloadperlweeklychallenge-club-1cbc77b2d11443ac87202f137ec2a1f56d19ceff.tar.gz
perlweeklychallenge-club-1cbc77b2d11443ac87202f137ec2a1f56d19ceff.tar.bz2
perlweeklychallenge-club-1cbc77b2d11443ac87202f137ec2a1f56d19ceff.zip
final submission
-rw-r--r--challenge-167/cheok-yin-fung/perl/ch-1.pl9
-rw-r--r--challenge-167/cheok-yin-fung/perl/ch-2.pl36
2 files changed, 24 insertions, 21 deletions
diff --git a/challenge-167/cheok-yin-fung/perl/ch-1.pl b/challenge-167/cheok-yin-fung/perl/ch-1.pl
index 12f147fd47..8f13197b81 100644
--- a/challenge-167/cheok-yin-fung/perl/ch-1.pl
+++ b/challenge-167/cheok-yin-fung/perl/ch-1.pl
@@ -13,7 +13,7 @@ use List::Util qw/min reduce pairmap any all/;
my @c_prime = ("-1", 2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79, 97);
my @circular_prime = (2, 3, 5, 7, 11, 13, 17, 37, 79);
-my $num = 19;
+my $num = 10 + scalar @circular_prime;
@@ -75,10 +75,6 @@ sub prime_test {
$k++;
}
return 1;
- # return (1 x $_[0]) !~ /^1?$|^(11+?)\1+$/;
- # unable to using Abigail's regex to test for prime numbers
- #
- # Complex regular subexpression recursion limit (65534) exceeded at ch-1.pl line xxx.
}
@@ -97,13 +93,12 @@ sub cyclic {
sub min_self {
return min(cyclic($_[0])->@*);
- # not an effective implementation, can be further edited
}
-use Test::More tests=>2;
+use Test::More tests => 2;
my $task_requirement = join ", ", @circular_prime[9..9+9];
ok
$task_requirement eq
diff --git a/challenge-167/cheok-yin-fung/perl/ch-2.pl b/challenge-167/cheok-yin-fung/perl/ch-2.pl
index 5a519ad831..93bc6aec76 100644
--- a/challenge-167/cheok-yin-fung/perl/ch-2.pl
+++ b/challenge-167/cheok-yin-fung/perl/ch-2.pl
@@ -1,7 +1,7 @@
#!/usr/bin/perl
# The Weekly Challenge 167
# Task 2 Gamma Function
-# simplified "translated" from Maxima code:
+# simplified "translation" from Maxima code:
# https://mrob.com/pub/ries/lanczos-gamma.html
use v5.24.0;
use warnings;
@@ -16,6 +16,7 @@ sub lanczos_log_gamma {
my $ln_sqrt_2_pi = log sqrt (2*$pi);
my $LG_g = 5;
+ # (from mrob.com) set of parameters from: Takusagawa, Press, Borgelt
my @lct = (
1.000000000190015,
76.18009172947146,
@@ -70,18 +71,25 @@ sub l_gamma {
}
+
use Test::More tests => 10;
# ref: https://en.wikipedia.org/wiki/Gamma_function#Particular_values
-my $acceptable_error = 1e-5;
-# my $acceptable_error = 1e-7; # Test gamma(11) will fail
-
-ok abs(l_gamma(1) - 1) < $acceptable_error;
-ok abs(l_gamma(1.5) - 0.88622_69254_52758_01364) < $acceptable_error;
-ok abs(l_gamma(2) - 1) < $acceptable_error;
-ok abs(l_gamma(2.5) - 1.32934_03881_79137_02047) < $acceptable_error;
-ok abs(l_gamma(3) - 2) < $acceptable_error;
-ok abs(l_gamma(3.5) - 3.32335_09704_47842_55118) < $acceptable_error;
-ok abs(l_gamma(4) - 6) < $acceptable_error;
-ok abs(l_gamma(5) - 24) < $acceptable_error;
-ok abs(l_gamma(7) - 720) < $acceptable_error;
-ok abs(l_gamma(11) - 3628800) < $acceptable_error;
+
+sub accept_test {
+ my $parameter = $_[0];
+ my $part_val = $_[1];
+ my $acceptable_error = 1e-5;
+ ok abs( l_gamma($parameter) - $part_val ) < $acceptable_error;
+}
+
+accept_test(1, 1);
+accept_test(1.5, 0.88622_69254_52758_01364);
+accept_test(2, 1);
+accept_test(2.5, 1.32934_03881_79137_02047);
+accept_test(3, 2);
+accept_test(3.5, 3.32335_09704_47842_55118);
+accept_test(4, 6);
+accept_test(5, 24);
+accept_test(7, 720);
+accept_test(11, 3628800);
+