cs_joebuz
Messages postés321Date d'inscriptionsamedi 12 février 2005StatutMembreDernière intervention21 février 2013
-
9 janv. 2006 à 22:02
cs_joebuz
Messages postés321Date d'inscriptionsamedi 12 février 2005StatutMembreDernière intervention21 février 2013
-
11 janv. 2006 à 01:10
bonjour,
Voila on m'a demandé un code pour une application a la noix qu'a l'air toute simple, j'ai dis pas de probleme, et pourtant j'y arrive pas !
Voici de quoi il s'agit,
il faut un code pour trouver toute les combinaisons possibles d'un mot en inversant les lettres, sans repeter deux fois la meme lettre, le tout afficher sous forme de liste, et fonctionnant avec le mot qu'on veut sans passer par une BDD !
j'ai essayé pour l'instant avec un mot $mot = table; //pour ex.
puis je fais ceci :
Le probleme c'est que je peux avoir deux fois la meme lettre et que ca fonctionne seulement pour le mot 'table' et que ca ne me donne pas toute les combinaisons !!
cs_joebuz
Messages postés321Date d'inscriptionsamedi 12 février 2005StatutMembreDernière intervention21 février 2013 9 janv. 2006 à 23:10
bon deja j'ai reussi à recuperer les lettres pour n'importe quel mot, voila comment je m'y prend :
- petit formulaire type text pour rentrer le mot que l'on souhaite
$mot = $_POST['mot']; // on recupere le mot di formulaire
$nb = strlen ("$mot"); // on compte de combien lettres est le mot
$sep = wordwrap($mot, 1, ",",1); //on separe les lettres par une virgule
$lettre = explode(",", $sep); //on recupere les lettres une a une
$nb2 = $nb; // on donne a la variable nb2 la valeur de nb
while (($nb2 <= $nb)&&($nb2 > 0)) { // a chaque fois que nb2 est < nb
$nb2 = --$nb2; // on desincremente nb2
echo $lettre[$nb2]."
"; // on affiche les lettres une a une
}
Voila ca c'est fait, maintenant reste plus qu'a retourner le mot dans tout les sens en contrôlant qu'on est qu'une seule fois la meme lettre, et afficher la liste
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 10 janv. 2006 à 09:47
Ca risque d'être long, en mode aléatoire ;-)
C'est mathématique ton truc, si j'ai bien compris ce que tu dois faire. Le principe est de boucler sur chaque lettre, et de les déplacer.
Par ex :
ABC peut donner :
ABC,
ACB
BCA
BAC
CBA
CAB
Par contre je pige pas le "une seule fois 1 lettre". Tu fais comment pour un mot comme 'para' ? Il y a deux 'a'.
j'arrive a generer un mot avec les lettres dans n'importe quel ordre mais pas a en afficher la liste por ceux que ça interesse :
$mot = $_POST['mot']; //on recupere le mot du formulaire
$nb = strlen ("$mot"); //on compte le nb de lettres du mot
$sep = wordwrap($mot, 1, ",",1); //on ajoute une virgule entre chaque lettre
$lettre = explode(",", $sep); //on recupere les lettres entre les virgules
$numbers = range(0,$nb); //on génére un chiffre aleatoire
srand((float)microtime()*1000000);
shuffle($numbers);
foreach ($numbers as $number) { //en fonction du chiffre on cherche la lettre
$ltr = $lettre[$number];
echo "$ltr"; //on affiche le mot
}
Je sais pas si mon compte est exact, je ne connais pas trop les fonctions srand et shuffle, mais il fonctionne, si vous trouvez un moyen de faire plus simple ou d'afficher la liste, je veux bien, merci