diff options
| -rw-r--r-- | challenge-124/james-smith/perl/ch-2.pl | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/challenge-124/james-smith/perl/ch-2.pl b/challenge-124/james-smith/perl/ch-2.pl index 005a10e8f8..b1104a1615 100644 --- a/challenge-124/james-smith/perl/ch-2.pl +++ b/challenge-124/james-smith/perl/ch-2.pl @@ -9,16 +9,28 @@ use Benchmark qw(cmpthese timethis); use Data::Dumper qw(Dumper); done_testing(); +say match_teams( map { $_*10 } 1..15 ); +say match_teams( map { $_*10 } 1..10 ); +say match_teams( qw(10 -15 20 30 -25 0 5 40 -5) ); +say match_teams( qw(2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97) ); -match_teams( map { $_*10 } 1..10 ); -match_teams( qw(10 -15 20 30 -25 0 5 40 -5) ); - +timethis(1_000, sub { match_teams( map { $_*10 } 1..10 ); } ); +timethis(1_000, sub { match_teams( map { $_*10 } 1..12 ); } ); +timethis(1_000, sub { match_teams( map { $_*10 } 1..14 ); } ); +timethis(100, sub { match_teams( map { $_*10 } 1..16 ); } ); +timethis(100, sub { match_teams( map { $_*10 } 1..18 ); } ); +timethis(100, sub { match_teams( map { $_*10 } 1..20 ); } ); +timethis(10, sub { match_teams( map { $_*10 } 1..22 ); } ); +timethis(10, sub { match_teams( map { $_*10 } 1..24 ); } ); +timethis(5, sub { match_teams( map { $_*10 } 1..26 ); } ); +timethis(5, sub { match_teams( map { $_*10 } 1..28 ); } ); +timethis(5, sub { match_teams( map { $_*10 } 1..30 ); } ); sub match_teams { my @n = @_; my $diff = shift @n; my $best = []; separate( \@n, 1 + int(@n/2), [$diff], [], $diff, $best ); - say "Team 1: [@{$best->[0]}]; Team 2[@{$best->[1]}]; difference $best->[2]"; + return "Team 1: [@{$best->[0]}]; Team 2[@{$best->[1]}]; difference $best->[2]"; sub separate { my($nums,$maxsize,$team1,$team2,$diff,$be) = @_; if(@{$nums}==0) { @@ -35,3 +47,19 @@ sub match_teams { } } +## +## Timings +## +## #players rate +## +## 10 2,273/s +## 12 598/s +## 14 157/s +## 16 41/s +## 18 10/s +## 20 2.68/s +## 22 0.57/s +## 24 ~ 6s +## 26 ~ 23s +## 28 ~ 94s +## 30 ~ 365s |
