aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-124/james-smith/perl/ch-2.pl36
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