11?$h-12:$h)]='h';$s[$m=dechex($m>59?0:$m/5)]=$h==$m?'x':'m';vprintf("%9s
%5s%8s
%s%14s
%s%16s
%s%14s
%5s%8s
%9s",$s)
?>
####
<>=~/:/;@y=(o)x12;$y[$`%12]=h;$y[$'/5]=~y/oh/mx/;
printf'%9s
%5s%8s
%s%14s
%s%16s
%s%14s
%5s%8s
%9s',map{$y[$_],$y[11-$_]}0..5
##
##
# test.pl
use strict;
use warnings;
my $testprog = shift or die "usage: $0 program-file\n";
my $datafile = 'tt.txt';
my $cmd = "perl $testprog <$datafile";
sub build_file {
my $contents = shift;
open(my $fh, '>', $datafile) or die "open '$datafile': $!";
print $fh "$contents\n";
close($fh);
}
print "Testing $testprog, size=", -s $testprog, " bytes.\n";
my @testdata = (
[ '00:00', <<'EXPECTED' ],
x
o o
o o
o o
o o
o o
o
EXPECTED
[ '23:59', <<'EXPECTED' ],
o
x o
o o
o o
o o
o o
o
EXPECTED
[ '21:35', <<'EXPECTED' ],
o
o o
o o
h o
o o
m o
o
EXPECTED
[ '04:59', <<'EXPECTED' ],
o
m o
o o
o o
o h
o o
o
EXPECTED
[ '12:00', <<'EXPECTED' ],
x
o o
o o
o o
o o
o o
o
EXPECTED
[ '03:03', <<'EXPECTED' ],
m
o o
o o
o h
o o
o o
o
EXPECTED
[ '21:08', <<'EXPECTED' ],
o
o m
o o
h o
o o
o o
o
EXPECTED
[ '23:05', <<'EXPECTED' ],
o
h m
o o
o o
o o
o o
o
EXPECTED
[ '16:24', <<'EXPECTED' ],
o
o o
o o
o o
o x
o o
o
EXPECTED
[ '13:06', <<'EXPECTED' ],
o
o x
o o
o o
o o
o o
o
EXPECTED
[ '18:00', <<'EXPECTED' ],
m
o o
o o
o o
o o
o o
h
EXPECTED
[ '22:26', <<'EXPECTED' ],
o
o o
h o
o o
o o
o m
o
EXPECTED
[ '20:10', <<'EXPECTED' ],
o
o o
o m
o o
h o
o o
o
EXPECTED
);
for my $r (@testdata) {
print $r->[0], "\n";
build_file($r->[0]);
my $got = `$cmd`;
chomp($got);chomp($got);chomp($got);$got.="\n";
$got eq $r->[1] or die "expected:\n$r->[1]got:\n$got";
}
print "successful\n";
##
##
perl test.pl mysolution.pl