Natuke kodeerimisrõõmu.
Ülesanne: Leida kõik massiivide A, B, C.. elementide kombinatsioonid. Massiivide arv ei ole piiratud.
Näide: A={Sinine, Punane, Roosa, Kollane}, B={56, 62, 68, 74}, C={Pildiga, Pildita}.
Tulemus:
Sinine|56|Pildiga
Sinine|56|Pildita
Sinine|62|Pildiga
jne…
Kollane|74|Pildiga
Kollane|74|Pildita
Kuidas lahendaksid sina selle ülesande? Googeldasin netis natuke ning leidsin väga palju eksitavat informatsiooni ning koodi, mida oli keeruline lugeda ning veel keerulisem üle võtta. “Kasuta rekursiooni” on asja võti. Mõneski näites kasutati seda, kuid äärmiselt keeruliselt. Tegin siis ise. Antud olukorras oli vaja seda PHP-s. Aga allolevat koodi saab ka üldistada.
// @param $array array of arrays ={A, B, C}
// @param $text element root path. Empty as default.
// @return array of combinations
function buildCombinations($array, $text="")
{
$arrayLoc = array_pop($array);
if ($arrayLoc)
{
$out = array();
foreach($arrayLoc as $element)
{
$out = array_merge($out,(array)$this->buildCombinations($array, $text.$element."|"));
}
return $out;
}
else
{
$text[strlen($text)-1] = "\0";
return $text;
}
}

