Autor Zpráva
crazko
Profil *
Dobrý deň,

potreboval by som pomôcť s prepisom algoritmu AQ do jazyka php. Pre zjednodušenie pracujem v Nette s dibi.

Všeobecný algoritmus vyzerá takto:


toto sú moje vstupy:


Problém je v tom, že všetky cykly prebehnú dokonca, ale pravidlá sa tvoria akoby len z prvého krkoku, ďalej sa už nedeje nič. Na konci cyklu, by malo byť pole $E1 prázdne a v poli $rules by mali byť "oci" => "hnede", "vlasy" => "tmave"

Tu je môj kód:

<?php
$E1 = \AqModel::fetchNegative();
$E2 = \AqModel::fetchPositive();

$G = array();
$G2 = array();
$rules = array();
//do {
    $i=0;
    foreach ($E1 as $id1 => $hodnotaE1) {

        foreach ($E2 as $id2 => $hodnotaE2) {
            $G[] = array_diff((array) $hodnotaE1, (array) $hodnotaE2); // zisti rozdiel v poliach
        }

        $G2[]=call_user_func_array('array_intersect',$G); // ostanu iba rovnake hodnoty

        $G = array();

        foreach ($E1 as $v1 => $a1) {
            foreach ($G2 as $v2 => $a2) {
                if (array_diff_assoc((array)$a2,(array) $a1)) {
                    unset($E1[$v1]);
                }
            }
        }
        $rules += $G2;
        $G2 = array();
        $i++;
        //if($i==2) break;
    }

//} while (count($E1) > 0 );
?>

Samozrejme, ide mi o to, aby to bolo napísané všeobecne pre akékoľvek vstupy.
poprípade, ak by ste vedeli o nejakom zdroji, z ktorého by som sa mohol odpichnúť, bol by som len rád, ja som žiaľ nič nenašiel.

Ďakujem za pomoc

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: