#!/bin/perl my $bHTML= 1 ; my $name = 0 ; # column in $data my $d1 = 2 ; # distance for leg 1 my $d2 = 5 ; # leg 2 my $d3 = 8 ; # ... my $e1 = 3 ; # effort for leg 1 my $e2 = 6 ; my $e3 = 9 ; my $pa = 12 ; # pace # Name Leg Dist Effort Leg Dist Effort Leg Dist Effort Total Rank Pace my $data = [ ["Elvira" , 1 ,4.8 ,"E" ,13 ,6.0 ,"M" ,25 ,5.5 ,"E" ,16.3 ,12 , 9.0 ] , ["Cindy" , 2 ,4.7 ,"E" ,14 ,5.0 ,"H" ,26 ,4.2 ,"E" ,13.9 ,10 ,10.0 ] , ["Bill" , 3 ,4.1 ,"E" ,15 ,6.5 ,"H" ,27 ,5.6 ,"E" ,16.2 , 7 , 8.0 ] , ["John" , 4 ,7.4 ,"M" ,16 ,5.3 ,"E" ,28 ,5.1 ,"H" ,17.8 , 6 , 6.5 ] , ["Peggy" , 5 ,5.0 ,"E" ,17 ,4.9 ,"E" ,29 ,3.0 ,"VH" ,12.9 , 9 , 8.5 ] , ["Dennis" , 6 ,4.5 ,"E" ,18 ,5.8 ,"H" ,30 ,3.1 ,"VH" ,13.4 , 3 , 8.0 ] , ["Robin" , 7 ,6.9 ,"M" ,19 ,7.0 ,"H" ,31 ,6.2 ,"M" ,20.1 , 2 , 8.0 ] , ["Steve" , 8 ,7.4 ,"M" ,20 ,5.9 ,"H" ,32 ,4.7 ,"E" ,18.0 , 5 , 9.0 ] , ["Larry" , 9 ,5.6 ,"E" ,21 ,6.5 ,"M" ,33 ,6.3 ,"E" ,18.4 ,11 ,10.0 ] , ["Patrick" ,10 ,8.9 ,"VH" ,22 ,4.2 ,"E" ,34 ,6.2 ,"VH" ,19.3 , 1 , 7.5 ] , ["Jim" ,11 ,7.1 ,"H" ,23 ,3.7 ,"E" ,35 ,6.5 ,"H" ,17.3 , 4 , 7.5 ] , ["Gerardo" ,12 ,4.8 ,"H" ,24 ,5.9 ,"M" ,36 ,4.7 ,"E" ,15.4 , 8 , 8.0 ] ] ; sub hours { my $h = shift ; return $h*60 ; } sub minutes { my $m = shift ; return $m ; } sub TimeOfDay { my $t = shift ; $t += hours(11) + minutes(30) ; # start time 11.30 my $h = int($t / 60) ; $t = $t - $h *60 ; $h = $h - 24 if $h > 23 ; return sprintf("%02d:%02d",$h,$t) ; } sub factor { my $effort = shift ; my $leg = shift ; my $tiring = 1.0 ; my $hard = 1.0 ; $tiring = 0.96 if $leg == 1 ; $tiring = 1.02 if $leg == 2 ; $tiring = 1.05 if $leg == 3 ; $hard = 0.95 if $effort eq "E" ; $hard = 1.0 if $effort eq "M" ; $hard = 1.1 if $effort eq "H" ; $hard = 1.25 if $effort eq "VH" ; # print("hard, tiring effort = " . $hard . "," . $tiring . "," . $effort . "\n") ; return $tiring * $hard ; } my $total = 0 ; print("\n") if $bHTML ; for ( my $leg = 1 ; $leg <= 3 ; $leg++ ) { # leg for ( my $r = 0 ; $r < 12 ; $r++ ) { # runner my $d ; # distance my $e ; # effort my $m ; # multiplier $d = $d1 if ( $leg == 1 ) ; $d = $d2 if ( $leg == 2 ) ; $d = $d3 if ( $leg == 3 ) ; $e = $e1 if ( $leg == 1 ) ; $e = $e2 if ( $leg == 2 ) ; $e = $e3 if ( $leg == 3 ) ; my $effort = $data->[$r][$e] ; $m = factor($effort,$leg) ; $dist = $data->[$r][$d] ; $pace = $data->[$r][$pa]*$m; $time = $dist * $pace ; $T = $total ; $total += $time ; if ( $bHTML ) { printf("\n",$data->[$r][$name],TimeOfDay($T),$pace,$dist,$time,TimeOfDay($total)) ; printf("\n") if $r == 5 ; } else { printf("%-12s %s %5.2f %5.2f %2d %s\n",$data->[$r][$name],TimeOfDay($T),$pace,$dist,$time,TimeOfDay($total)) ; printf("---------------------------------------\n") if $r == 5 ; } } if ( $bHTML ) { printf("\n") ; } else { printf("\n") ; } } print("
%-12s%s%5.2f%5.2f%2d%s

\n") if $bHTML ;