Algoritmo di Berger: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Implementazione in PHP
Riga 13:
 
== Implementazioni ==
Le seguenti funzioni implementano l'algoritimo di Berger prendendo come parametro un [[array]] con i nomi di un numero pari di partecipanti ed elaborano il girone di andata di un campionato, stampandolo a video.
 
In caso di un numero dispari di partecipanti, un partecipante fittizio "Riposo" indicherà per ogni giornata il partecipente a riposo in quella giornata (l'avversario di Riposo).
 
Eventuali vincoli per partecipanti con lo stesso campo da gioco sono risolvibili scambiando una o più coppie casa/trasferta.
 
 
 
=== [[Java (linguaggio)|Java]] ===
L'algoritmo seguente elabora il girone di andata di un campionato. È molto semplice, in quanto non tiene conto di eventuali vincoli per squadre con lo stesso stadio. Eventuali problemi in tal senso sono risolvibili semplicemente scambiando una o più coppie casa/trasferta.
<source lang=java>
public void AlgoritmoDiBerger(String[] squadre){
Line 62 ⟶ 69:
</source>
 
 
=== [[PHP]] ===
L'algoritmo seguente è la trasposizione in PHP di quello Java.
<source lang="php">
<?php
 
function AlgoritmoDiBerger($arrSquadre)
{
$numero_squadre = count($arrSquadre);
$giornate = $numero_squadre - 1;
/* crea gli array per le due liste in casa e fuori */
for ($i = 0; $i < $numero_squadre /2; $i++)
{
$casa[$i] = $arrSquadre[$i];
$trasferta[$i] = $arrSquadre[$numero_squadre - 1 - $i];
 
}
for ($i = 0; $i < $giornate; $i++)
{
/* stampa le partite di questa giornata */
echo '<BR>'.($i+1).'a Giornata<BR>';
/* alterna le partite in casa e fuori */
if (($i % 2) == 0)
{
for ($j = 0; $j < $numero_squadre /2 ; $j++)
{
echo ' '.$trasferta[$j].' - '.$casa[$j].'<BR>';
}
}
else
{
for ($j = 0; $j < $numero_squadre /2 ; $j++)
{
echo ' '.$casa[$j].' - '.$trasferta[$j].'<BR>';
}
}
// Ruota in gli elementi delle liste, tenendo fisso il primo elemento
// Salva l'elemento fisso
$pivot = $casa[0];
/* sposta in avanti gli elementi di "trasferta" inserendo
all'inizio l'elemento casa[1] e salva l'elemento uscente in "riporto" */
array_unshift($trasferta, $casa[1]);
$riporto = array_pop($trasferta);
/* sposta a sinistra gli elementi di "casa" inserendo all'ultimo
posto l'elemento "riporto" */
array_shift($casa);
array_push($casa, $riporto);
// ripristina l'elemento fisso
$casa[0] = $pivot ;
}
}
?>
</source>
== Note ==
<references/>