aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrbaggy <js5@sanger.ac.uk>2021-07-05 12:14:37 +0100
committerdrbaggy <js5@sanger.ac.uk>2021-07-05 12:14:37 +0100
commit21efa6593b05c64b48fe66e0321d9ddba14ced75 (patch)
tree1bcf283dd93c96778d9292ede9fca07c1e4a480f
parenta486123da38802daf76db5248bbab841a70a54eb (diff)
downloadperlweeklychallenge-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.pl10
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);
+}