Uffaaaaaa!!! La mia ricerca continua ma di ASP non riesco a trovare nulla!!
Ho trovato però questa pagina in PHP che funziona alla grande, ora provo a cimentarmi con questo codice (anche se è in francese!) nel frattempo se c'è qualcuno che conosce il PHP e l'ASP (e francese
) e ha voglia di darmi una mano grazie!!
codice:
<?php
//*********************************************************************************************
// Tables de Berger pour le volley
//
//*********************************************************************************************
//
// Sources : http://www.barrychessclub.org.uk/berger2001.htm (1)
// Ligue de Poitou-Charentes de Volley-Ball (2)
//
// (1) : constitution des journees (methode)
// (2) : melange des journees pour obtenir le championnat (deduction pour 6, 8, 10 equipes)
//
//*********************************************************************************************
// Version : 0.1
//
//*********************************************************************************************
//
// Principe :
// - pour n equipes (n pair)
// - constituer un tableau T1 de 2 colonnes et n/2 lignes
// - remplir le tableau en commencant en haut a gauche dans le sens anti-horaire
// 1 n
// 2 n-1
// 3 n-2
// ...
// n/2 n/2 +1
// - a partir de T1, on cree T2 en gardant n fixe en haut a droite
// et en faisant tourner les autres d'un cran dans le sens horaire
// 2 n
// 3 1
// 4 n-1
// ...
// n/2 +1 n/2 +2
// - on repete l'operation pour avoir n-1 tableaux
// - la correspondance entre les tableaux Ti et les journees de championnat Ji
// est alors :
// J1 -> T1
// J2 -> Tn/2
// J3 -> Tn-1
// J4 -> Tn/2-1
// J5 -> Tn-2
// J6 -> Tn/2-2
// ...
// Jn-2 -> T2
// Jn-1 -> Tn/2+1
// - pour les journees paires, pour le 1er match de la journee, on inverse
// Domicile et Exterieur (donc pour l'equipe n). Sinon, elle ferait tous ses matchs aller
// a l'exterieur...
//
//*********************************************************************************************
//
// Historique :
// v.0.1 mars 2003 Creation
//
//*********************************************************************************************
//-----------------------------------
// Page pour test
echo "<html><title>Tables de Berger</title><body>\n";
// Saisie du nombre d'equipes
// Par defaut = 0
if ( ! isset($HTTP_POST_VARS['nb'])) $nb=0;
echo "<form name='form' action='' method='post'>\n",
"Nombre d'équipes du championnat :
\n",
"<select name='nombre' onchange='form.nb.value=form.nombre[form.nombre.selectedIndex].value'>\n",
"<option value='0'>----\n",
"<option value='6'>5-6\n",
"<option value='8'>7-8\n",
"<option value='10'>9-10\n",
"<option value='12'>11-12\n",
"<option value='14'>13-14\n",
"<option value='16'>15-16\n",
"<option value='18'>17-18\n",
"<option value='20'>19-20\n",
"<option value='22'>21-22\n",
"<option value='24'>23-24\n",
"</select>\n",
"<input type='hidden' name='nb' value=$nb>\n",
"<input type='submit' name='submit' value='afficher'>\n",
"</form>\n",
"
sourceici
\n",
"
Fichier Excel pour comprendreici
\n";
if ( $nb > 0 )
{
echo "<hr noshade>\n";
echo "Nombre d'équipes : ".$nb."
\n";
echo "Matchs aller uniquement
\n";
echo berger_affiche ( berger_calcule ($nb) );
}
echo "</body></html>\n";
// Fin de la page
//-----------------------------------
//------------------------------------
// Fonction berger_calcule
//
// Parametres : nb_equipe = nombre d'equipes
// Retour : tableau des journees a 3 dimensions
// pour une journee j, le match m donne
// $tableau[$j]["D"][$m] recoit $tableau[$j]["E"][$m]
//
// Calcule les journees
//
function berger_calcule ($nb_equipe)
{
// Si le nombre d'equipes est impair
// on passe au nombre pair juste apres
if ( ($nb_equipe % 2) == 1 ) $nb_equipe++;
// Moitie des equipes
$moitie=$nb_equipe/2;
// Tableau de sortie a deux dimensions : journee, matchs
$tableau=array();
for ($j=1; $j<=$nb_equipe-1; $j++)
{
$tableau[$j]=array();
$tableau[$j]["D"]=array(); // Domicile
$tableau[$j]["E"]=array(); // Exterieur
// Traitement particulier de la premiere ligne
$tableau[$j]["D"][1]=$j;
$tableau[$j]["E"][1]=$nb_equipe;
for ($m=2; $m<=$moitie; $m++)
{
$dom=$j+$m-1;
if ( $dom >= $nb_equipe ) $dom++;
$ext=$nb_equipe+$j-$m;
if ( $ext >= $nb_equipe ) $ext++;
$tableau[$j]["D"][$m]= ( $dom % $nb_equipe );
$tableau[$j]["E"][$m]= ( $ext % $nb_equipe );
}
}
// On cree journee a partir de tableau
// en "melangeant" les colonnes (tableau[journee])
$journee=array();
for ($j=1; $j<=$nb_equipe-1; $j++)
{
$journee[$j]=array();
$journee[$j]["D"]=array();
$journee[$j]["E"]=array();
}
// 1ere journee
$journee[1]=$tableau[1];
$journee[2]=$tableau[$nb_equipe-1];
// autres journees
for ($j=2; $j<=$nb_equipe-1; $j++)
{
if ( ($j % 2) == 0)
{
// Cas $j pair
$indice = ($nb_equipe / 2) - ( ($j -2)/2 );
}
else
{
// Cas $j impair
$indice = $nb_equipe - ( ($j-1) / 2 );
}
$journee[$j]=$tableau[$indice];
}
// On balaye les journees paires
// pour alterner Domicile-Exterieur pour l'equipe $nb_equipe
// donc uniquement pour le 1er match de chaque journee
for ($j=1; $j<=$nb_equipe-1; $j++)
{
// Journee paire
if ( ($j % 2) == 0 )
{
// On recupere les valeurs
$dom=$journee[$j]["D"][1];
$ext=$journee[$j]["E"][1];
// On inverse
$journee[$j]["D"][1]=$ext;
$journee[$j]["E"][1]=$dom;
}
}
return $journee;
}
//
//------------------------------------
//------------------------------------
// Fonction berger_affiche
//
// Parametres : tableau des journees a 3 dimensions
// pour une journee j, le match m donne
// $tableau[$j]["D"][$m] recoit $tableau[$j]["E"][$m]
// Retour : chaine d'affichage des journees (table)
//
// Genere la table d'affichage des journess
//
function berger_affiche ($journee)
{
// Nombre de journees
$nb_jour=sizeof($journee);
// Largeur des colonnes
$width=round(100/$nb_jour);
// Nombre de matches ( (nombre de journees +1) / 2)
$nb_match=($nb_jour+1)/2;
// Initialisation de la table
$sortie="<table width='100%' border='1'>\n";
// Ligne d'entete
$sortie .= " <tr>\n";
for ($j=1; $j<=$nb_jour; $j++)
{
$sortie .= " <td align='center' width='".$width."%'>J ".$j."</td>\n";
}
$sortie .= " </tr>\n";
// Affichage des matches
for ($m=1; $m<=$nb_match; $m++)
{
$sortie .= " <TR>\n";
for ($j=1; $j<=$nb_jour; $j++)
{
$sortie .= " <td align='center' width='".$width."%'>".$journee[$j]["D"][$m]."-".$journee[$j]["E"][$m]."</td>\n";
}
$sortie .= " </tr>\n";
}
// Fermeture de la table
$sortie .= "</table>\n";
return $sortie;
}
//
//------------------------------------
?>