#!/usr/bin/perl

$teams=$ARGV[0];
if (@ARGV<1){
    print "Input an number of teams: ";
    $teams = <STDIN>;
    chomp $teams;
}
if ($teams<=0 || !defined $teams || $teams+0 ne $teams){
   die("I said a number...\a\n");
}
$teams = int $teams;
# if ($teams % 2==1){           # PAR O IMPAR NO IMPORTA
    $partidos=int $teams/2;    # SI ES IMPAR YA ASIGNA LOS DESCANSOS ALEATORIAMENTE
    $jornadas= ($teams-1);     # a una vuelta  y 2 * si es a 2 vueltas
# }else{
#    $partidos = $teams/2;
#    $jornadas= $teams-1;
# }
BOOT:
$c=0;
@f=();
%h=();
print "\n";
for $x (1..$jornadas){
    print "\n$x)\t";
    for $y (1..$partidos){
LOOP:
	if (++$c>10_000_000){ goto BOOT; }
	$i = 1 + int rand() * $teams;
	$j = 1 + int rand() * $teams;
	if ($i==$j) { goto LOOP; }
#	for $z (1..$y-1){   # BUSCA DUPLICIDAD EN LOS PARTIDOS ANTERIORES          # PERO SE HACE CON EL HASH
#	    if ($f[$x][$z] =~ /^$i\:/i || $f[$x][$z] =~ /\:$i$/i){ goto LOOP; }
#	    if ($f[$x][$z] =~ /^$j\:/i || $f[$x][$z] =~ /\:$j$/i){ goto LOOP; }
#	}
	if (defined $h{$i.":".$j}){
	    goto LOOP;
#	    if ($h{$i.$j} == 1) {
#		if (defined $h{$j.$i}){
#		    if ($h{$j.$i} != 1){ ($i,$j)=($j,$i); }    # OJO, ESTO SUPONE 2 VUELTAS
#		    else { goto LOOP; }
#		}else { goto LOOP; }
#	    }
	}
	$h{$i.":".$j}++;
	$h{$j.":".$i}++;	# ESTO ES PORQUE ES A UNA VUELTA
	$f[$x][$y]="$i:$j";
	print "$f[$x][$y] "; 
    }  
}
print "\n\n";
exit 1;

__END__
