par
epommate2 » 17 juin 2011, 08:09
Pourquoi il y a un 4ème paramètre sur ta fonction alors que la fonction en compte que 3 ?
Une erreur de ma part
500MO alloué est déjà pas mal, il essaie d'allouer .....24 octects ? truc qui cloche lol ?
Non, il a déjà alloué 500Mo et du coup, il essaye d'allouer un tout petit tableau de 24 octets supplémentaire et il n'y arrive pas ....
J'ai ca dans mon php.ini :
memory_limit = -1
Mais, je me suis apercu d'une petite erreur : array_unique ne fonctionne pas sur des tableaux grr...
$somme_a_trouver = 150;
$nb_element_max = 5;
$all_numero = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40);
function super_unique($array) {
$result = array_map("unserialize", array_unique(array_map("serialize", $array)));
return $result;
}
function trouve($all_numero,$somme,$nb_max){
if ($nb_max == 4){
static $test;
$test++;
echo "$test/".count($all_numero)."\n";
}
if ($nb_max == 1){
if (in_array($somme,$all_numero)){
return array(array($somme));
return true;
} else {
return array();
}
}
$r = false;
$solution = array();
foreach($all_numero as $numero){
$trouve = trouve($all_numero,$somme-$numero,$nb_max-1) ;
foreach ($trouve as $i => $s){
$trouve[$i][] = $numero;
sort($trouve[$i]);
$solution[] = $trouve[$i];
}
}
$solution = super_unique($solution);
return $solution;
}
$result = trouve($all_numero,$somme_a_trouver,$nb_element_max);
print_r($result);
Par contre, j'ai une question... A quoi ca sert ?
[quote="Nico"]Pourquoi il y a un 4ème paramètre sur ta fonction alors que la fonction en compte que 3 ?[/quote]
Une erreur de ma part :-)
[quote="Nico"]500MO alloué est déjà pas mal, il essaie d'allouer .....24 octects ? truc qui cloche lol ?[/quote]
Non, il a déjà alloué 500Mo et du coup, il essaye d'allouer un tout petit tableau de 24 octets supplémentaire et il n'y arrive pas ....
J'ai ca dans mon php.ini :
memory_limit = -1
Mais, je me suis apercu d'une petite erreur : array_unique ne fonctionne pas sur des tableaux grr...
[php]
$somme_a_trouver = 150;
$nb_element_max = 5;
$all_numero = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40);
function super_unique($array) {
$result = array_map("unserialize", array_unique(array_map("serialize", $array)));
return $result;
}
function trouve($all_numero,$somme,$nb_max){
if ($nb_max == 4){
static $test;
$test++;
echo "$test/".count($all_numero)."\n";
}
if ($nb_max == 1){
if (in_array($somme,$all_numero)){
return array(array($somme));
return true;
} else {
return array();
}
}
$r = false;
$solution = array();
foreach($all_numero as $numero){
$trouve = trouve($all_numero,$somme-$numero,$nb_max-1) ;
foreach ($trouve as $i => $s){
$trouve[$i][] = $numero;
sort($trouve[$i]);
$solution[] = $trouve[$i];
}
}
$solution = super_unique($solution);
return $solution;
}
$result = trouve($all_numero,$somme_a_trouver,$nb_element_max);
print_r($result);
[/php]
Par contre, j'ai une question... A quoi ca sert ?