diff options
| author | drbaggy <js5@sanger.ac.uk> | 2021-07-05 12:14:37 +0100 |
|---|---|---|
| committer | drbaggy <js5@sanger.ac.uk> | 2021-07-05 12:14:37 +0100 |
| commit | 21efa6593b05c64b48fe66e0321d9ddba14ced75 (patch) | |
| tree | 1bcf283dd93c96778d9292ede9fca07c1e4a480f | |
| parent | a486123da38802daf76db5248bbab841a70a54eb (diff) | |
| download | perlweeklychallenge-club-21efa6593b05c64b48fe66e0321d9ddba14ced75.tar.gz perlweeklychallenge-club-21efa6593b05c64b48fe66e0321d9ddba14ced75.tar.bz2 perlweeklychallenge-club-21efa6593b05c64b48fe66e0321d9ddba14ced75.zip | |
faster 1 liner for clock angle
| -rw-r--r-- | challenge-120/james-smith/perl/ch-2.pl | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/challenge-120/james-smith/perl/ch-2.pl b/challenge-120/james-smith/perl/ch-2.pl index f34d666f9b..0e1b595f78 100644 --- a/challenge-120/james-smith/perl/ch-2.pl +++ b/challenge-120/james-smith/perl/ch-2.pl @@ -14,9 +14,14 @@ my @TESTS = ( ); is( clock_angle($_->[0]), $_->[1] ) foreach @TESTS; - +is( clock_angle_1_liner($_->[0]), $_->[1] ) foreach @TESTS; done_testing(); +cmpthese( 2_000_000, { + 'f' => sub { clock_angle($_->[0]) foreach @TESTS }, + '1' => sub { clock_angle_1_liner($_->[0]) foreach @TESTS }, +}); + sub clock_angle { ## The difference is: hr*30+min/2 - min*12 ## Modulo is int based so to avoid issue @@ -29,3 +34,6 @@ sub clock_angle { return $a > 180 ? 360-$a : $a; } +sub clock_angle_1_liner { + 180-abs(abs(60*(substr$_[0],0,2)-11*substr$_[0],3)%720/2-180); +} |
