У меня есть 9 цифр 3...11. В сети нашел функцию которая генерирует все возможные перестановки в этом ряду
function pc_permute($items, $perms = array( )) {
if (empty($items)) {
$return = array($perms);
} else {
$return = array();
for ($i = count($items) - 1; $i >= 0; --$i) {
$newitems = $items;
$newperms = $perms;
list($foo) = array_splice($newitems, $i, 1);
array_unshift($newperms, $foo);
$return = array_merge($return, pc_permute($newitems, $newperms));
}
}
return $return;
}
Эта функция скомбинировала !9 различных комбинаций, массив на выходе получился просто огромный. Но мне еще нужно проверить каждую комбинацию на наличие определенных условий. Но foreach отказывается это делать, хотя с маленьким массивом работает.
$value = array(3, 4, 5, 6, 7, 8, 9, 10, 11);
$combs = pc_permute($value);
$count = 0;
foreach ($combs as $comb) {
$x1 = $comb[0]*$comb[1]*$comb[2];
$x2 = $comb[0]*$comb[3]*$comb[2];
$y1 = $comb[3]*$comb[4]*$comb[5];
$y2 = $comb[1]*$comb[4]*$comb[7];
$z1 = $comb[6]*$comb[7]*$comb[8];
$z2 = $comb[2]*$comb[5]*$comb[8];
if ($x1 == $x2 && $y1 == $y2 && $z1 == $z2) {
$count++;
echo '<pre>'.implode($comb);
}
}
echo $count;
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости