aboutsummaryrefslogtreecommitdiff
path: root/challenge-194
diff options
context:
space:
mode:
authorJames Smith <js5@sanger.ac.uk>2022-12-05 07:23:57 +0000
committerGitHub <noreply@github.com>2022-12-05 07:23:57 +0000
commit1018ced38ae62189adabafe461e4b269f802273d (patch)
tree0e93d607d16256d72548d235fa816ac2f509e2b4 /challenge-194
parent4159027f2eab9011835f1494f659c101fc293627 (diff)
downloadperlweeklychallenge-club-1018ced38ae62189adabafe461e4b269f802273d.tar.gz
perlweeklychallenge-club-1018ced38ae62189adabafe461e4b269f802273d.tar.bz2
perlweeklychallenge-club-1018ced38ae62189adabafe461e4b269f802273d.zip
Create ch-1.pl
Diffstat (limited to 'challenge-194')
-rw-r--r--challenge-194/james-smith/perl/ch-1.pl36
1 files changed, 36 insertions, 0 deletions
diff --git a/challenge-194/james-smith/perl/ch-1.pl b/challenge-194/james-smith/perl/ch-1.pl
new file mode 100644
index 0000000000..c0583712de
--- /dev/null
+++ b/challenge-194/james-smith/perl/ch-1.pl
@@ -0,0 +1,36 @@
+#!/usr/local/bin/perl
+
+use strict;
+
+use warnings;
+use feature qw(say);
+use Test::More;
+use Benchmark qw(cmpthese timethis);
+
+my @TESTS = (
+ ['?3:00',2,2],
+ ['1?:00',9,9],
+ ['2?:00',3,4],
+ ['12:?5',5,5]
+ ['12:5?',9,9]
+);
+
+is( digit_2359( $_->[0] ), $_->[1] ) for @TESTS;
+is( digit_2400( $_->[0] ), $_->[2] ) for @TESTS;
+done_testing();
+
+sub digit_2359 {
+ sub {
+ $_[0] eq '?' ? ( $_[1]<4 ? 2 : 1 )
+ : $_[1] eq '?' ? ( $_[0]<2 ? 9 : 3 )
+ : $_[3] eq '?' ? 5 : 9
+ }->( split //, $_[0] );
+}
+
+sub digit_2400 {
+ sub {
+ $_[0] eq '?' ? ( $_[1]==4 && $_[3]==0 && $_[4]==0 || $_[1]<4 ? 2 : 1 )
+ : $_[1] eq '?' ? ( $_[0]<2 ? 9 : $_[3]==0 && $_[4]==0 ? 4 : 3 )
+ : $_[3] eq '?' ? 5 : 9
+ }->( split //, $_[0] );
+}