c:\test\685390>685390.plt
Testing Anonymonk1-2
Testing Anonymonk1-reworked
Testing Anonymonk1
Testing BrowserUk
Testing BrowserUk2
Testing BrowserUk3
Testing karavelov
Testing kyle
Testing kyle2
Testing LimbicRegion2
Testing LimbicRegion3
{
Anonymonk1 =>{ ELAPSED=> 1.64, LOC=> 15, OUTCOUNT=> 262, SCORE=> 24.6 },
Anonymonk1-2 =>{ ELAPSED=> 1.48, LOC=> 12, OUTCOUNT=> 262, SCORE=> 17.76 },
Anonymonk1-rw =>{ ELAPSED=> 1.93, LOC=> 27, OUTCOUNT=> 262, SCORE=> 52.11 },
BrowserUk =>{ ELAPSED=>10.57, LOC=> 36, OUTCOUNT=> 262, SCORE=> 380.52 },
BrowserUk2 =>{ ELAPSED=> 2.07, LOC=> 28, OUTCOUNT=> 262, SCORE=> 57.96 },
BrowserUk3 =>{ ELAPSED=> 1.67, LOC=> 49, OUTCOUNT=> 89, SCORE > 81.83 },
LimbicRegion2 =>{ ELAPSED=>11.03, LOC=> 40, OUTCOUNT=> 262, SCORE=> 441.2 },
LimbicRegion3 =>{ ELAPSED=>12.04, LOC=> 63, OUTCOUNT=> 262, SCORE=> 758.52 },
karavelov =>{ ELAPSED=> 5.08, LOC=> 63, OUTCOUNT=> 262, SCORE=> 320.04 },
kyle =>{ ELAPSED=> 4.69, LOC=> 79, OUTCOUNT=> 262, SCORE=> 370.51 },
kyle2 =>{ ELAPSED=> 2.98, LOC=> 73, OUTCOUNT=> 262, SCORE=> 217.54 },
}
####
#! perl -slw
use strict;
use Data::Dump qw[ pp ];
use Time::HiRes qw[ time ];
our $DIFF ||= 0;
my $perl = q[c:\Perl510\bin\perl5.10.0.exe];
my $filter = q[find /V "strict" | find /V "warnings"];
my %results;
while( <*.pl> ) {
my( $name ) = m[(^[^.]+).pl];
my $label = sprintf "%-20.20s", $name;
my $res = $results{ $label } = {};
print "Testing $name";
my $LOC = 0+ qx[ $perl -MO=Deparse $name.pl 2>nul | $filter | wc -l];
$res->{ LOC } = $LOC;
my $start = time;
my @output = qx[ $perl $name.pl input.txt ];
my $end = time;
$res->{ ELAPSED } = sprintf "%5.2f", $end - $start;
$res->{ OUTCOUNT } = @output;
$res->{ SCORE } = $res->{ ELAPSED } * $res->{ LOC };
next unless $DIFF;
open my $sort, "| sort > $name.srt"
or warn "Couldn't create sorted output for $name" and next;
printf $sort "$_" for @output;
close $sort;
$results{ $label }{ DIFF } = [ qx[ diff -adU 0 output.srt $name.srt ] ];
}
pp \%results;
####
#! perl -slw
use strict;
use List::Util qw[ reduce ]; $a = $b;
use constant DICTIONARY => 'dictionary.txt';
my %mappings;
reduce{
$mappings{ $_ } = $a for split '', $b;
$a + 1;
} 0, qw[ e jnq rwx dsy ft am civ bku lop ghz ];
my %dict = map{ $_ => [ $_ ] } 0 .. 9;
keys %dict = 300000;
open DICT, '<', DICTIONARY or die "${\DICTIONARY}: $!";
while( ) {
chomp;
my $orig = $_;
tr[A-Z"/-][a-z]d; #"
push @{ $dict{ join '', @mappings{ split '', $_ } } }, $orig;
}
close DICT;
sub encode {
my $number = shift;
my $start = length( $number );
--$start while $start and not exists $dict{ substr $number, 0, $start };
$start = 2 if $start > 1;
return @{ $dict{ $number } || [] }, grep !/\d \d/, map {
my( $pre, $post ) = unpack "a$_ a*", $number;
map{
my $head = $_;
map "$head $_", encode( $post );
} @{ $dict{ $pre } || [] },
} $start .. length( $number )-1;
}
while( <> ) {
chomp;
my $orig = $_;
tr[/-][]d;
print "$orig: $_" for encode( $_ );
}