Credo sia tutto.
Ringrazio anticipatamente chi darà una mano.
Poi dovresti ordinarle in qualche maniera....
"Kursk" <anf...@ton.it> ha scritto nel messaggio
news:bbnjcl$a3d$1...@lacerta.tiscalinet.it...
"Juz" <juji_...@hotmail.com> ha scritto nel messaggio
news:fbJDa.45834$pR3.9...@news1.tin.it...
"niubbo" <niu...@tin.it> ha scritto nel messaggio
news:tFPDa.48367$pR3.1...@news1.tin.it...
ciao!
io ho fatto uno script php che
crea un campionato partento da N squadre.
e' una funzione ricorsiva sfruttando il backtracking.
sfortunatamente non implemente il casa-fuori.
se sei interessato te la mando :)
ciao
gigi
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[ /gigi a.k.a calca ]
[ "If anything can go wrong, it will" Murphy ]
[ GPG Key fingerprint ]
[ C6F1 4997 0574 C302 EAE1 42B7 5A17 AA64 F909 FC99 ]
$1=1-2 $2=1-3 $3=1-4 $4=1-5 $5=1-6
$6=2-3 $7=2-4 $8=2-5 $9=2-6
3-4 3-5 3-6
Prima di fargli fare le giornate potresti creare un ciclo che ti inverta la
stringa quando i è pari
tipo:
for($i=1 $i<=x $i++)
{
if (isint $i/2)
{
$$i=funzioneperinvertirelastringa($$i);
}
}
Quando poi crei le giornate alla prima dovresti avere 1-2 alla seconda 3-1
etcetc..
--
dilox
"Kursk" <anf...@ton.it> ha scritto nel messaggio
news:bbpjgv$7ur$1...@lacerta.tiscalinet.it...
"calca" <ca...@tiscali.it> ha scritto nel messaggio
news:pan.2003.06.06....@tiscali.it...
grazie
> Grazie, molto volentieri.
> Se vuoi metterla qui come allegato poi la scarico, cosě magari posso cercare
> di svilupparlo per il discorso casa-fuori.
> Naturalmente se ci riesco ti faccio sapere.
bene :)
alcune spiegazioni, la classe e' nata per interfacciarsi ad un database
ma purtroppo non mai avuto il tempo di completarla.
il metodo principale e' calendario()
dove trovi l'array delle squadre. e la chiamata
alle funzioni.
il metodo campionat() fa backtracking sul calendario di tutto il
campionato.
il mentodo giornata_campionato() fa backtracking sulla singola giornata.
dovresti intervenire qui per mettere le modifiche da te interessate.
print_campionato() visualizza il risultato :)
be, buon lavoro :)
> On Fri, 06 Jun 2003 21:18:28 +0200, Kursk wrote:
>
>> Grazie, molto volentieri.
>> Se vuoi metterla qui come allegato poi la scarico, così magari posso cercare
>> di svilupparlo per il discorso casa-fuori.
>> Naturalmente se ci riesco ti faccio sapere.
>
> bene :)
> alcune spiegazioni, la classe e' nata per interfacciarsi ad un database
> ma purtroppo non mai avuto il tempo di completarla.
>
> il metodo principale e' calendario()
> dove trovi l'array delle squadre. e la chiamata
> alle funzioni.
>
> il metodo campionat() fa backtracking sul calendario di tutto il
> campionato.
>
> il mentodo giornata_campionato() fa backtracking sulla singola giornata.
> dovresti intervenire qui per mettere le modifiche da te interessate.
>
> print_campionato() visualizza il risultato :)
>
> be, buon lavoro :)
mi sono dimenticato il codice :)
ecco :
class campionato extends misql {
// Variabili Globali
var $giornate_svolte=array();
var $partite_giornata=array();
var $insert;
var $select="SELECT id FROM partecipanti ";
var $insert="INSERT INTO `campionato` (`id`, `id_squadra_1`, `id_squadra_2`) VALUES ( '#ID#', '#SQUADRA_1#', '#SQUADRA_2#' )";
var $DEBUG,$DEBUG_2;
var $time_limit=120;
/*
+----------------------------------------+
| imposta debug |
+----------------------------------------+
*/
function set_debug($altri=""){
$this->DEBUG=1;
if ( !empty($altri)) $this->DEBUG_2=1;
}
/*
+----------------------------------------+
| imposta debug |
+----------------------------------------+
*/
function set_time_limit($pippo){
$this->time_limit($pippo);
}
/*
+----------------------------------------+
| imposta insert |
+----------------------------------------+
*/
function set_insert($value){
$this->insert=$value;
}
/*
+----------------------------------------+
| imposta select |
+----------------------------------------+
*/
function set_select($void){
$this->select=$void;
}
/*
+----------------------------------------+
| select partecipanti |
+----------------------------------------+
*/
function select_squadre(){
$ris=$this->fai_query($this->select);
while( $row = mysql_fetch_array($ris)){
$squadre[]=$row[0];
} // fine while
return $squadre;
}
/*
+----------------------------------------+
| select partecipanti |
+----------------------------------------+
*/
function giornate($squadre){
return count($squadre)-1;
}
/*
+-----------------------------------------+
| backtraking per giornata |
+-----------------------------------------+
*/
function giornata_campionato($squadre,$scontri,$n_giornata){
global $giornate_svolte,$insert;
// fine backtraking
if ( $scontri == 0 ) { return 1; }
// backtraking
for($z;$z<1000;$z++){
// seleziono le squadra
$team=array_rand($squadre,2);
$first_team=$squadre[$team[0]];
$sec_team=$squadre[$team[1]];
// controllo che non sia gia' presente l'incotro
$andata=$first_team."-".$sec_team;
$ritorno=$sec_team."-".$first_team;
// controllo che sia possibile giocare la partita
if ( !in_array($andata,$this->giornate_svolte) && !in_array($ritorno,$this->giornate_svolte)){
// mossa
if ( !empty($this->DEBUG)) echo "Partita: $first_team - $sec_team <br>";
// aggiungo la giornata svolta
$this->giornate_svolte[]=$andata;
$this->partite_giornata[$n_giornata][]=$andata;
// tolgo da $squadre quelle utilizzate
for($i=0;$i<count($squadre);$i++){
if( $squadre[$i] != $first_team && $squadre[$i] != $sec_team ){
$squadre_next[]=$squadre[$i];
}
}// fine for
// richiamo la giornate di campionato
if ( $this->giornata_campionato($squadre_next,$scontri-1,$n_giornata) == "1" ) {
// ok
return 1;
}
// annulla mossa
if ( !empty($this->DEBUG)) echo "Annullo Mossa Giornata <br>";
// tolgo la giornata dall'array
for($i=0;$i<count($this->giornate_svolte);$i++){
if( $this->giornate_svolte[$i] != $andata ){
$temp_giornate_svolte[]=$this->giornate_svolte[$i];
}
}// fine for
$this->giornate_svolte=$temp_giornate_svolte;
return 0;
} //fine if
} // fine for
return 0;
}// fine funzione
/*
+-----------------------------------------+
| backtraking per calendario |
+-----------------------------------------+
*/
function campionat($squadre,$numero_giornate,$n_giornata){
// valura il numero di scontri
if ( $scontri == "" ){
$scontri=count($squadre)/2;
}
// fine backtraking
if ( $numero_giornate == 0 ) return 1;
// backtraking
while(1){
$n_giornata=$n_giornata+1;
$numero_giornate=$numero_giornate-1;
if ( !empty($this->DEBUG)) echo "> Giornata $n_giornata: <br>";
// giornata di campionato
if ( $this->giornata_campionato($squadre,$scontri,$n_giornata) == "1" ){
// vado avanti col campinonato
if ( $this->campionat($squadre,$numero_giornate,$n_giornata) == "1" ) {
// campionato ok
return 1;
}
} // fine if
// annulla mossa
if ( !empty($this->DEBUG)) echo "Annullo Mossa Campionato <br>";
// annullo giornata
$counter=0;
foreach ( $this->partite_giornata[$n_giornata] as $key => $value ){
// echo "gior: $n_giornata, $value <br>";
$counter++;
$temp_togliere[]=$value;
} // fine foreach
for($i=0;$i<count($this->giornate_svolte);$i++){
//if ( in_array($this->giornate_svolte[$i],$temp_togliere) )echo "$n_giornata, tolgo:". $this->giornate_svolte[$i] ."<br>";
if ( !in_array($this->giornate_svolte[$i],$temp_togliere)){
$temp_giornate_svolte[]=$this->giornate_svolte[$i];
}
}// fine for
// cancello la vecchia giornata
for ($i=0;$i<$counter;$i++){
if ( !empty($this->DEBUG)) echo "Gio $n_giornata, canc:".$this->partite_giornata[$n_giornata][$i]."<br>";
$this->partite_giornata[$n_giornata][$i]=0;
}
//$this->partite_giornata[$n_giornata]=0;
$this->giornate_svolte=$temp_giornate_svolte;
$n_giornata=$n_giornata-1;
$numero_giornate=$numero_giornate+1;
//return 0;
}// fine while
}
/*
+-----------------------------------------+
| print |
+-----------------------------------------+
*/
function print_campionato($giornate){
echo "Campionato <br>";
for($i=1;$i<=$giornate;$i++){
echo "> Giornata $i <br>";
foreach($this->partite_giornata[$i] as $key ){
if ( $key != "0" ) echo " $key <br>";
}
}
}
/*
+-----------------------------------------+
| prepare query |
+-----------------------------------------+
*/
function crea_insert($giornate){
//$insert="INSERT INTO campionato ('id', 'id_squadra_1', 'id_squadra_2') VALUES ( '#ID#', '#SQUADRA_1#', '#SQUADRA_2#' )";
echo "Insert <br>";
for($i=1;$i<=$giornate;$i++){
if ( !empty($this->DEBUG)) echo "> Giornata $i <br>";
foreach($this->partite_giornata[$i] as $key ){
if ( $key != "0" ){
$squadre=explode("-",$key);
$string=str_replace("#ID#",$i,$this->insert);
$string=str_replace("#SQUADRA_1#",$squadre[0],$string);
$string=str_replace("#SQUADRA_2#",$squadre[1],$string);
echo $string."<br>";
$return_select[]=$string;
if ( !empty($this->DEBUG)) echo $string."<br>";
}// fine if
}// fine foreach
}// fine for
return $return_select;
}
/*
+-----------------------------------------+
| inserisci nel db |
+-----------------------------------------+
*/
function inserisci_db($insert){
echo "bo:".count($insert)."<br>";
for($i=0;$i<count($insert);$i++){
echo "faccio la query <br>";
$this->fai_query($insert[$i]);
}
}
/*
+-----------------------------------------+
| crea calendario |
+-----------------------------------------+
*/
function calendario(){
// preparo i dati
set_time_limit($this->time_limit);
// $this->mysql();
//$squadre=$this->select_squadre($this->select);
$squadre=array("Gigi", "Luca - Adamo", "Ale - Max", "Cela - Mario", "Berra", "Davide - Walter", "Giorgio", "Dozzon - Claudio ", "Dario", "Roby" );
$numero_giornate=$this->giornate($squadre);
$n_giornata=0;
// creo il campionato
$this->campionat($squadre,$numero_giornate,$n_giornata);
// if ( !empty($this->DEBUG))
$this->print_campionato($this->giornate($squadre));
// $this->inserisci_db($this->crea_insert($this->giornate($squadre)));
}
}
calca
ti segnalo il mio che è gratuito, anzi GPL, ed in php:
http://www.digitaldruid.net/fantacalciobazar/
Io il tuo problema l'ho risolto creando direttamente dei file con gli
scontri diretti, non è molto elegante ma funziona :)
Ciao, Marco
--
http://nekton.mine.nu/fantamanager/
pure il mio e' gpl :)
gestite le squadre, le formazioni e l'invio ..
non e' completo, manca la gestione del campionato .. :(
purtorppo non ho il tempo di terminarlo :)
ciao
Ciao
"Marco De Santis" <ma...@digitaldruid.net> ha scritto nel messaggio
news:kre2cb...@127.0.0.1...