#!/usr/bin/perl -w

use List::Util qw(shuffle);

@gf = (4, 2, 3, 2);
@gc = (2, 2, 4, 3);
@sols= (
    ['0-0','1-1','2-2','3-3'],
    ['1-0','2-1','2-0','3-0','3-1','3-2','4-0','4-3','4-2','4-1'],
    ['0-1','0-2','1-2','0-3','1-3','2-3','0-4','3-4','2-4','1-4'],
);
@r0 = 0..2;

{
init:     
      @results = @mgf = @mgc = @kk = @rr = ();
    for $i (0..3) {
	@rr = shuffle(@r0);
	for $j (0..3) {
	    next if $j==$i;
	    $r = shift @rr;
	    unshift @kk , shuffle ( @{$sols[$r]} );
	    $k = shift @kk;
	    ($f, $c) = split '-' , $k; 
	    $mgf[$i] += $f;
	    $mgc[$i] += $c;
	    goto init if ($mgf[$i] > $gf[$i] || $mgc[$i] > $gc[$i]);
	    $results[$i][$j] = $k;
	}
	goto init if ($mgf[$i] != $gf[$i] || $mgc[$i] != $gc[$i]);
    }
    for $i (0..3) {
	for $j (0..3){
	    if (defined $results[$i][$j]){
		print "$results[$i][$j] ";
	    }else{
		print "--- ";
	    } 
	}
	print "\n";
    }
}


__END__
Hola:
4 equipos A, B, C y D jugaron una liguilla a un solo partido.
  Todos los resultados fueron diferentes; además cada equipo ganó un partido,
  empató otro, y perdió el tercero.
  Evidentemente el campeonato se resolvió por el cociente de goles a favor y
  goles en contra.
	  Así quedó la clasificación:
  
                      G   E  P    GF    GC  
                 A    1   1  1     4     2
                 B    1   1  1     2     2
                 C    1   1  1     3     4
                 D    1   1  1     2     3
  
      GF= goles a favor      GC= goles en contra  
  
  ¿Cuáles fueron los resultados de los partidos?
  