Hallo,
ich habe hier ein Script mit dem ich die nächstliegende Kombination von Bauplatten der Länge 2.5 und 4 ermitteln möchte:
Mir erscheint die Lösung nah, indem ich in 0.5er Schritten die Länge ermittle, die passt:
Leider gibt die function den Wert total nicht zurück. Weiß jemand wie ich das hinkriege?
ich habe hier ein Script mit dem ich die nächstliegende Kombination von Bauplatten der Länge 2.5 und 4 ermitteln möchte:
Mir erscheint die Lösung nah, indem ich in 0.5er Schritten die Länge ermittle, die passt:
PHP-Code:
<?php
$totals = array();
$x=0;
function getAllCombinations($ind, $denom, $n, $vals=array()){
global $totals, $x;
if ($n == 0){
foreach ($vals as $key => $qty){
for(; $qty>0; $qty--){
$totals[$x][] = $denom[$key];
}
}
$x++;
return;
}
if ($ind == count($denom)) return;
$currdenom = $denom[$ind];
for ($i=0;$i<=($n/$currdenom);$i++){
$vals[$ind] = $i;
getAllCombinations($ind+1,$denom,$n-($i*$currdenom),$vals);
}
}
function ceiling($number, $significance = 1)
{
return ( is_numeric($number) && is_numeric($significance) ) ? (ceil($number/$significance)*$significance) : false;
}
$array = array(2.5, 4);
$sum = 0.5;
$length = ceiling(11.4, 0.5);
while(empty(getAllCombinations(0, $array, $length))) {
$length = $length + 0.5;
}
getAllCombinations(0, $array, $sum);
echo "<pre>";
print_r($totals);
echo "</pre>";
Kommentar