#!/usr/local/bin/perl $teams=$ARGV[0]; if (@ARGV<1){ print "Input an number of teams: "; $teams = ; 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){ $partidos=int $teams/2; # $jornadas= $teams-1; # a una vuelta }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: $c++; if ($c>100000){ goto BOOT; } $i = 1 + int rand $teams; $j = 1 + int rand $teams; if ($i==$j) { goto LOOP; } for $z (1..$y-1){ if ($f[$x][$z]=~ /^$i\:/i || $f[$x][$z]=~ /\:$i\z/i){ goto LOOP; } if ($f[$x][$z]=~ /^$j\:/i || $f[$x][$z]=~ /\:$j\z/i){ goto LOOP; } } if ($h{$i.$j}==1) { if ($h{$j.$i}!=1){ ($i,$j)=($j,$i); } else { goto LOOP; } } $h{$i.$j}++; $f[$x][$y]="$i:$j"; print "$f[$x][$y] "; } } print "\n\n"; __END__