#!/usr/local/bin/perl -w

@votos = qw(0 391000 311000 184000 73000 27000 12000 2000);
$escanos = 21;

$partidos = @votos-1;
for $i (1..$partidos){
    for $j ( 1 .. $escanos ) {
	$n = $votos[$i]/$j;
	push @cocientes, $n;
	$hash{$n} = "$i ronda $j";
    }
}
@coc_sorted = sort { $b <=> $a } @cocientes;
for $i (1..$escanos) {
    $j = $coc_sorted[$i-1];
    print "Escaño $i asignado al partido $hash{$j}, $j\n";  
    $hash{$j} =~ s/(\d+)\s.*/$1/;
    $total[$hash{$j}]++;
}
for $i (1..$partidos){
    unless (defined $total[$i]) { $total[$i] = 0; }
    print "Partido $i -> $total[$i] escaños, $votos[$i] votos\n";
}
exit;

__END__
Esto es simplemente una utilidad para probar cómo funciona la ley D'Hondt.
Sólo hay que introducir el total de votos y un 0 en la primera posición,
para que el código sea más legible.
Habitualmente se añade la restricción de que un partido supere un determinado
porcentaje, como el 3%, que no es contemplado aquí.
BUGS
No se contemplan empates, que serían demasiado raros.

