Quand je suis confronté à un problème similaire, j'utilise souvent excel pour m'aider
Prenons ton cas pratique, "J'ai {manger|croquer|jeté|fini} {les gâteaux|les bonbons|la tarte|le chien} {chez moi|chez toi|chez lui|chez nous|chez vous|chez le président}"
Il y a 4, 4 et 6 possibilité donc 96 phrases à construire
tes index vont de 0 à 3 et de 0 à 5
je construit donc un tableau excel de 96 ligne qui contiendront mes index avec aucune ligne similaire
la dernière colonne change à chaque fois
l'avant dernière colonne change tous les 6 lignes
et la première change toute les 4*6 = 24 lignes
Ensuite je vais me demander comment faire une formule dans chaque colonne pour obtenir le bonne index
en dernière colonne, ligne()%6 (opérateur modulo) fonctionne très bien
en avant dernière, floor(ligne()/6)%4
et en première floor(ligne()/24)%4
On peut remarquer qu'en dernière ligne, floor(ligne()/1)%6 fonctionne aussi bien
Nous avons donc 2 chiffres à chaque fois qu'il faut déterminer avant de calculer l'index du tableau
le premier correspond à la multiplication des tailles des tableaux suivants c'est ce que je calculais avec
$index = array_product(array_slice($tab, $cle + 1));
Il faudrait cependant vérifié qu'il vaut bien 1 pour le dernier tableau (sinon tu auras une jolie erreur de division par zero
Le second correspond simplement à la taille du tableau courant
$final_tab = $spinning->results;
$debut = "j'ai ";
$tab = array();
foreach ($final_tab as $all) {
$tab[] = sizeof($all);
}
for ($i = 0; $i < array_product($tab); $i++) {
$remplacement = array();
foreach ($tab as $cle => $taille) {
$index = array_product(array_slice($tab, $cle + 1));
$final_index = floor($i / $index)%$taille;
$remplacement[] = $final_tab[$cle][$final_index]; <-------------
}
$phrase = implode($phrase, ' ');
echo $debut.$phrase;
}
Je viens de reprendre ton problème du début, je remarque donc que mes explications précédentes était incomplète mais j'ai repris tout mon cheminement intelectuel. Je t'invite à ouvrir un tableur et faire le même exercice que moi. Tu remarquera peut être que les lignes du tableur commence par 1 et non 0 qu'il faut donc un peu ruser pour s'en sortir.
Quand je suis confronté à un problème similaire, j'utilise souvent excel pour m'aider
Prenons ton cas pratique, "J'ai {manger|croquer|jeté|fini} {les gâteaux|les bonbons|la tarte|le chien} {chez moi|chez toi|chez lui|chez nous|chez vous|chez le président}"
Il y a 4, 4 et 6 possibilité donc 96 phrases à construire
tes index vont de 0 à 3 et de 0 à 5
je construit donc un tableau excel de 96 ligne qui contiendront mes index avec aucune ligne similaire
la dernière colonne change à chaque fois
l'avant dernière colonne change tous les 6 lignes
et la première change toute les 4*6 = 24 lignes
Ensuite je vais me demander comment faire une formule dans chaque colonne pour obtenir le bonne index
en dernière colonne, ligne()%6 (opérateur modulo) fonctionne très bien
en avant dernière, floor(ligne()/6)%4
et en première floor(ligne()/24)%4
On peut remarquer qu'en dernière ligne, floor(ligne()/1)%6 fonctionne aussi bien
Nous avons donc 2 chiffres à chaque fois qu'il faut déterminer avant de calculer l'index du tableau
le premier correspond à la multiplication des tailles des tableaux suivants c'est ce que je calculais avec
$index = array_product(array_slice($tab, $cle + 1));
Il faudrait cependant vérifié qu'il vaut bien 1 pour le dernier tableau (sinon tu auras une jolie erreur de division par zero
Le second correspond simplement à la taille du tableau courant
[php]$final_tab = $spinning->results;
$debut = "j'ai ";
$tab = array();
foreach ($final_tab as $all) {
$tab[] = sizeof($all);
}
for ($i = 0; $i < array_product($tab); $i++) {
$remplacement = array();
foreach ($tab as $cle => $taille) {
$index = array_product(array_slice($tab, $cle + 1));
$final_index = floor($i / $index)%$taille;
$remplacement[] = $final_tab[$cle][$final_index]; <-------------
}
$phrase = implode($phrase, ' ');
echo $debut.$phrase;
}[/php]
Je viens de reprendre ton problème du début, je remarque donc que mes explications précédentes était incomplète mais j'ai repris tout mon cheminement intelectuel. Je t'invite à ouvrir un tableur et faire le même exercice que moi. Tu remarquera peut être que les lignes du tableur commence par 1 et non 0 qu'il faut donc un peu ruser pour s'en sortir.