diff options
| author | James Smith <js5@sanger.ac.uk> | 2022-12-05 07:23:57 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-05 07:23:57 +0000 |
| commit | 1018ced38ae62189adabafe461e4b269f802273d (patch) | |
| tree | 0e93d607d16256d72548d235fa816ac2f509e2b4 | |
| parent | 4159027f2eab9011835f1494f659c101fc293627 (diff) | |
| download | perlweeklychallenge-club-1018ced38ae62189adabafe461e4b269f802273d.tar.gz perlweeklychallenge-club-1018ced38ae62189adabafe461e4b269f802273d.tar.bz2 perlweeklychallenge-club-1018ced38ae62189adabafe461e4b269f802273d.zip | |
Create ch-1.pl
| -rw-r--r-- | challenge-194/james-smith/perl/ch-1.pl | 36 |
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] ); +} |
