« 1 2
Autor Zpráva
gaminn
Profil *
Jo, máš to za domácí úkol :D Ne, díky, že se tím zabýváš, kdybys na to přišel, byl bych ti neskonale vděčný...
k
Profil *
gaminn
Jde o to ze na zitra me ceka bug kde to budu take potrebovat(skoro podobne) takze bych to musel vymyslet tak jako tak:)
gaminn
Profil *
Hlásím částečný úspěch. Na algoritmus jsem sice nepřišel, ale vytvořil jsem alespoň na základě funkce, která vytváří kombinace funkci, která vrací požadovaný výsledek. Nutno podotknout, že pracuje značně neefektivně.



function groups($elements) {
if(is_array($elements)) {


$groups = array(array());
$combinations = array(array()); # don't forget the empty arrangement!
$combinations2 = array(array());
$count = count($elements);
$i = 0;

$combinations = array(array()); # don't forget the empty arrangement!

foreach($elements as $element) {
$new_combinations = array();

foreach($combinations as $combination) {
$new_combination=array_merge($combination, (array) $element);
array_push($new_combinations, $new_combination);
}

$combinations = array_merge($combinations,$new_combinations);
}


foreach($combinations as $element) {
$new_combinations = array();

foreach($combinations2 as $combination) {
$new_combination=array_merge($combination, array($element));
array_push($new_combinations, $new_combination);

if($i++%2) {
$ar = array();

foreach($new_combination as $nk) {
$ar = array_merge($ar, $nk);
}

if(($b = count($ar)) == count(array_unique($ar)) && $b == $count) {
array_push($groups, $new_combination);
}
}
}

$combinations2 = array_merge($combinations2, $new_combinations);
}


return $groups;
}
else {
return false;
}
}


V první části se vytvoří kombinace všech stupňů z daných prvků, v druhé části se ze všech těchto kombinací vytvářejí nové kombinace všech stupňů. Z nich se pak vybírají ty, které vyhovují podmínce, aby obsahovaly vždy právě jednou každý prvek.
gaminn
Profil *
No ale nedoporučuji tedy spouštět tuto funkci s více jak 4 prvky. Už s 5 jsem si solidně zasekal počítač... takže tudy cesta nevede, alespoň ne pro počty prvků, které potřebuji (10-20).
gaminn
Profil *
Na builderu mi jeden šílenej naprogramoval celý algoritmus, je to ale v C++ - http://forum.builder.cz/read.php?13,1962671
« 1 2
Toto téma je uzamčeno. Odpověď nelze zaslat.