sviluppo permutazioni

achille12002

Nuovo Utente
3 Apr 2013
8
0
0
salve a tutti e un grazie in anticipo per il vostro aiuto. Ecco io avrei un problema simile a quello di
marcomg coiè ho dei cicli for nidificati che servono per lo sviluppo di sistemi di calcio a correzione di errore nel caso del codice che vi posto sono 6 eventi ridotti a (k) ma io vorrei generalizzare a (n) eventi max 20 senza scrivere 20 volte la stessa funzione
PHP:
<?php
//k sono le x che devono comparire
$k = 3;
// a l'array con i due segni che compariranno
$a = array("x", "-");
// b il numero di eventi
$b = array("1", "2", "3", "4", "5", "6");
// c il contatore di x
$c = 0;
for ($e = 0; $e < count($a); $e++) {
    $b[0] = "$a[$e]";
    if ($e == 0) {
        $c++;
    } else {
        $c--;
    }
    for ($f = 0; $f < count($a); $f++) {
        $b[1] = "$a[$f]";
        if ($f == 0) {
            $c++;
        } else {
            $c--;
        }
        for ($g = 0; $g < count($a); $g++) {
            $b[2] = "$a[$g]";
            if ($g == 0) {
                $c++;
            } else {
                $c--;
            }
            for ($h = 0; $h < count($a); $h++) {
                $b[3] = "$a[$h]";
                if ($h == 0) {
                    $c++;
                } else {
                    $c--;
                }
                for ($i = 0; $i < count($a); $i++) {
                    $b[4] = "$a[$i]";
                    if ($i == 0) {
                        $c++;
                    } else {
                        $c--;
                    }
                    for ($l = 0; $l < count($a); $l++) {
                        $b[5] = "$a[$l]";
                        if ($l == 0) {
                            $c++;
                        } else {
                            $c--;
                        }
                        if ($c == $k) {
                            echo $b[0] . $b[1] . $b[2] . $b[3] . $b[4] . $b[5] . "<br>";
                        }
                    }
                }
            }
        }
    }
}?>
 
Ultima modifica di un moderatore:
ciao
trasformala in function e al posto dell'echo metti il return del valore, oopre se non ti serve il valore lascia l'echo
poi do,ani guardo meglio
 
Ultima modifica:
grazie per la risposta borgo italia ma come avrai capito dallo script che ho eleborato non sono praticissimo di linguaggi di programmazione. Ho provato a scrivere delle funzioni, ho letto un bel po di script che ho provato a modificare per ottenere lo stesso risultato ma non riesco
 
ciao
scusa ieri sera era tardi e quindi ho dato un occhio di sfuggita.
ti faccio un paio di domande prima di procede,
tu dice che devi usare
....eventi max 20 senza scrivere 20 volte la stessa funzione
cioè in pratica ripetere lo script che hai postato 20 volte?
poi le variabili
$k , $a e $b
nelle venti volte sono sempre le stesse o variano di volta in volta?
 
Ciao prova questo
PHP:
<?php

function stampa($s, $c) {

    // c il contatore di x
    $a = array("x", "-"); // a l'array con i due segni che compariranno
    $k = 3; //k sono le x che devono comparire
    $b = 20; // b il numero di eventi

    for ($i = 0; $i < count($a); $i++) {
        if (strlen($s) < $b - 1) {
            $c = ($i == 0) ? $c + 1 : $c - 1;
            stampa($s . $a[$i], $c);
        } else {
            $c = ($i == 0) ? $c + 1 : $c - 1;
            if ($c == $k)
                echo $s . $a[$i] . "<br/>";
        }
    }
}

stampa('', 0);
?>
poi mi spieghi come fai a giocare una schedina in base a questi calcoli?
 
a me serve solo generalizzare la parte di codice che sviluppa le combinazioni con le x e -; per rispondere a borgo italia si la variabile k è uguale per tutte le combinazioni sono a e b che si devono combinare per restituirmi colonne dove compaiono b elementi nel caso postato 6 con k x coiè 3 che corrispondono ad a[0] e il resto devono essere -
 
borgo italia non è completamente risolto ma a me serviva solo capire come mettere la funzione se hai guardato la pagina php che avevo sviluppato(http://elitesuper.altervista.org/6eventiconhtml.php ) senza la funzione di criric ti sarai reso conto che devo manipolare lo script che mi ha fornito.Ma ci devo perdere,io, tempo e pazienza cmq grazie ancora per il vostro aiuto
 
criric ti chedo l'ultimo sforzo quello script devo inserirlo in una tabella html ogni x e - nel suo bel quadratino,altrimenti da solo impegho un mese per concepire come fare
 
avevo capito che ci volevi provare da solo :)
PHP:
<?php

$ar = array();

function stampa($s, $c) {
    global $ar;
    // c il contatore di x
    $a = array("x", "-"); // a l'array con i due segni che compariranno
    $k = 3; //k sono le x che devono comparire
    $b = 6; // b il numero di eventi

    for ($i = 0; $i < count($a); $i++) {
        if (strlen($s) < $b - 1) {
            $c = ($i == 0) ? $c + 1 : $c - 1;
            stampa($s . $a[$i], $c);
        } else {
            $c = ($i == 0) ? $c + 1 : $c - 1;
            if ($c == $k)
                $ar[] = $s . $a[$i];
        }
    }
}

stampa('', 0);

echo "<table border=1>\n";
foreach ($ar as $value) {
    echo "<tr>\n";
    $e = str_split($value);
    foreach ($e as $v) {
        echo "<td>" . $v . "</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";
?>
 

Discussioni simili