1: A 5
2: DB 6
3: EC 6
####
1: AJC 11
2: FEH 11
3: DIBG 12
####
#!/usr/bin/perl -w
use strict;
##
my %letters=(
A => 5,
B => 1,
C => 2,
D => 5,
E => 4,
);
my $reps=3;
my %reps;
## hackarific!
my $pos=1;
my $dir=1;
## keep going until we run out
while (keys %letters) {
## get highest
my($h,undef)=sort { $letters{$b} <=> $letters{$a} } keys %letters;
## note the grouping
$reps{$pos}{letter}.=$h;
$reps{$pos}{size}+=$letters{$h};
delete $letters{$h};
## sorry folks, couldn't think of a better way fast enough :)
if ($dir==1) {
$pos++;
if ($pos>$reps) {
$pos--;
$dir=0;
}
}
else {
$pos--;
if ($pos==0) {
$pos++;
$dir=1;
}
}
}
for my $r (keys %reps) {
print "$r: $reps{$r}{letter} $reps{$r}{size}\n";
}
####
my %letters;
for my $x ('A'..'Z') {
$letters{$x}=int(rand(10)+1);
}
####
#!/usr/bin/perl -w
use strict;
##
my %letters;
for my $x ('A'..'Z') {
$letters{$x}=int(rand(10)+1);
}
my $reps=5;
my %reps;
for my $x (1..$reps) {
$reps{$x}{size}=0;
}
my $pos=1;
## keep going until we run out
while (keys %letters) {
## get highest
my($h,undef)=sort { $letters{$b} <=> $letters{$a} } keys %letters;
## note the grouping
$reps{$pos}{letter}.="$h($letters{$h}) ";
$reps{$pos}{size}+=$letters{$h};
delete $letters{$h};
## find the lowest position
($pos,undef)=sort { $reps{$a}{size} <=> $reps{$b}{size} } keys %reps;
}
for my $r (keys %reps) {
print "$r: $reps{$r}{letter} $reps{$r}{size}\n";
}
####
1: M(10) U(10) T(6) L(3) B(3) 32
2: R(10) O(9) J(7) D(3) K(3) 32
3: V(10) Z(9) S(6) F(6) P(2) 33
4: W(10) E(8) H(7) G(6) C(1) 32
5: N(10) X(8) I(7) Q(4) A(2) Y(1) 32