diff options
| author | CY Fung <fungcheokyin@gmail.com> | 2022-06-05 22:54:10 +0800 |
|---|---|---|
| committer | CY Fung <fungcheokyin@gmail.com> | 2022-06-05 22:54:10 +0800 |
| commit | 1cbc77b2d11443ac87202f137ec2a1f56d19ceff (patch) | |
| tree | c008cd7f36522a4471d3710b77c7abf574a01915 | |
| parent | 3a4d95f637d1a157d8c04ad08dfeb14c6f233ca0 (diff) | |
| download | perlweeklychallenge-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.pl | 9 | ||||
| -rw-r--r-- | challenge-167/cheok-yin-fung/perl/ch-2.pl | 36 |
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); + |
