Combinaisons PHP d'une chaine - PHP - Programmation
Marsh Posté le 02-06-2007 à 13:27:03
Euh ...
Euh ...
Spoiler : Euh ... |
Marsh Posté le 02-06-2007 à 13:28:03
ta d'autres conseils du genre?
Marsh Posté le 02-06-2007 à 13:28:15
Euh ...
Edit : Enfin j'avais quand même commencé à répondre, à coup de "comptage de lettre", puis de monter le tout au carré, pour en faire une boucle ... et ensuite trouver le moyen suivant l'itération de la boucle de changer le caractères X, Y ou Z ... mais àa doit être chaud
Edit : ou alors il faut compter les chars, puis trouver leur position, et changer le 1er, puis le 2eme, puis le 3eme, puis le 4eme, puis le 1er ET le 2eme, puis le 2eme ET le 3eme etc...
Marsh Posté le 02-06-2007 à 13:30:04
tu te marres peutetre parce que je veux remplacer un o par un 0 c'est ça ?
c'est juste un exemple, qui me permettra ensuite tout seul de faire un truc plus complexe
J'ai simplifié au maximum mon probleme, je fais pas comme certains qui donnent tout leur code en bloc et demande la solution.
EDIT: je me disais qu'en utilisant 2 tableaux, et en les recombinant, c'etait peutetre possible.
Ca doit pas etre si chaud que ça si?
Marsh Posté le 02-06-2007 à 13:32:05
2 tableaux ? c'est à dire ?
Marsh Posté le 02-06-2007 à 13:37:36
Non, je viens de reflechir, ça marcherait pas avec deux (avec 4 pour 2 o a remplacer en fait)
L'idée serait de splitter en tableau la string.
le o se situe en [5] et en [7]
On copie le tableau1 dans tableau2, avec [5] qui devient O
On copie le tableau1 dans tableau3, avec [7] qui devient O
etc.
Plus j'y reflechi et plus ça me semble chaud.
Evidement je doute qu'il y ait pour le coup une fonction toute faite...
Marsh Posté le 02-06-2007 à 13:39:10
Si, la fonction doit s'appeler un truc du genre : str_replace_under_drugs();
Marsh Posté le 02-06-2007 à 13:40:01
Marsh Posté le 02-06-2007 à 14:16:54
Ja pas bien compris ton problème
Citation : Je voudrais remplacer les o par des 0, mais sur le premier, sur le deuxieme, sur les deux.. |
tu veux dire SOIT sur le prmier, SOIT sur le deuxieme SOIT sur les deux ? en alternant ? ou bien ?
ya surement moyen de faire ketchoz avec les expressions rationnelles, si j'ai pas rien compris. Enfin j'ai pas tout compris c'est sur.
Marsh Posté le 02-06-2007 à 14:29:22
Je veux dire alternativement sur aucun, sur l'un, sur l'autre, puis sur les deux
A partir de
Hello World
Je veux recuperer
Hello World
Hell0 World
Hello W0rld
Hell0 W0rld
Ensuite ça devra marcher aussi pour plus de 2 "o" a remplacer, genre Hello World Poto (mais ça ne change pa grand chose au probleme).
Tu as une idée ?
Marsh Posté le 02-06-2007 à 14:36:32
Dac, et si t'as 4 "o", tu veux faire tous les solutions (oooo, Oooo, oOoo, ooOo, OOoo etc), ou que 4 (oooo, OOOO, oOoO, OoOo) ?
edit : il est joli mon post
Marsh Posté le 02-06-2007 à 14:38:27
Je veux faire toutes les solutions possibles, sans doublon
Marsh Posté le 02-06-2007 à 14:44:49
ZePRiNCE a écrit : Je veux faire toutes les solutions possibles, sans doublon |
Ok
my method :
1) tu compte les nombre de "o" dans ton mot ($x)
2) tu génères toutes les solutions possibles de suites de $x * "o" (avec une fonction récursive ?)
3) tu génères chaque chaine a partir de chacune de ces solutions
je tente un truc si j'ai le tps
Marsh Posté le 02-06-2007 à 14:51:57
Ouais, je vois un peu l'idée, pour le 1) je crois que ça va aller..
Par contre apres, qu'appelle tu une fonction recursive ?
Si tu as le temps, c'est super
Merci de ton aide !
Marsh Posté le 02-06-2007 à 15:31:09
admettons que tu as ton $nombre_o (http://fr2.php.net/manual/fr/function.substr-count.php)
tu fais un truc style :
Code :
|
quelle abnégation de ma part
(pas testé par contre) (et c'est l'idée, après c'est surement un poil crade)
Donc ce code énumère dans le tableau $tableau toutes les possibilités avec 2 chiffres possibles par case (0 et 1) et 4 cases.
Démerde toi tout seul pour comprendre comment ça marche
Après tu te sers de ce tableau de chiffres pour remplacer les o. (a mon avis c'est mieux si tu gardes un système de chiffres et qu'après seulement tu t'en serve pour remplcer dans tes chaines)
Et donc une fonction récursive c'est une fonction qui s'apelle elle-même, comme là.
Marsh Posté le 02-06-2007 à 15:35:20
Merci, je vais regarder ça !
Marsh Posté le 02-06-2007 à 15:42:30
J'ai un peu de mal a comprendre ton nb_cases
C'est uniquement les o decoupé en tableau ?
Marsh Posté le 02-06-2007 à 15:45:54
theredled a écrit : admettons que tu as ton $nombre_o (http://fr2.php.net/manual/fr/function.substr-count.php)
|
Marsh Posté le 02-06-2007 à 15:49:04
il est balaise hein ?
Marsh Posté le 02-06-2007 à 15:51:00
ZePRiNCE a écrit : J'ai un peu de mal a comprendre ton nb_cases |
ben là dans mon code il est pas question de "o" ou de chaine de caractères ou quoi que ce soit, il est juste question de faire un tableau avec chaque possibilité, chaque possibilité étant elle-même un tableau de ($nb_cases) cases.
En gros ça va te retourner dans $tableau :
0 => array(0, 0, 0, 0)
1 => array(0, 0, 0, 1)
2 => array(0, 0, 1, 0)
3 => array(0, 0, 1, 1)
4 => array(0, 1, 0, 0)
etc
et si tu mets $nb_cases = 2 et $nb_signes = 3 tu va avoir :
0 => array(0, 0);
0 => array(0, 1);
0 => array(0, 2);
0 => array(1, 0);
0 => array(1, 1);
0 => array(1, 2);
etc
(par ex si dans Hello World tu veux remplacer les o par des "o", "O", ou ":o" )
Marsh Posté le 02-06-2007 à 15:51:34
dans le sens ou je me suis pris la tete ou dans le sens ou c'est crado ?
Marsh Posté le 02-06-2007 à 15:53:51
theredled a écrit : dans le sens ou je me suis pris la tete ou dans le sens ou c'est crado ? |
Dans le sens où tu t'es pris la tête
Donc ensuite tu fais une boucle sur le tableau. Et à l'itération 0,1,1,0 par exemple, ça veut dire qu'il faut remplacer le 2ème et le 3ème caractère par sa seconde forme, c'est exact ?
Marsh Posté le 02-06-2007 à 15:55:55
Dj YeLL a écrit : Dans le sens où tu t'es pris la tête Donc ensuite tu fais une boucle sur le tableau. Et à l'itération 0,1,1,0 par exemple, ça veut dire qu'il faut remplacer le 2ème et le 3ème caractère par sa seconde forme, c'est exact ? |
Y3P
Marsh Posté le 02-06-2007 à 16:01:10
Et le premier qui me trouve une fonction php native qui fait la même chose je le défonce
Marsh Posté le 02-06-2007 à 16:01:18
Donc il faut coupler ça avec une tableau qui regroupe la position des différentes lettres
Genre si tu as 4 lettres, que les position sont 2, 8, 14, 25
0 1 1 0
2 8 14 25
Tu remplaces le caractère 8 et le caractère 14 \o/
V'la le border sur une phrase par contre, car c'est exponentiel ...
Marsh Posté le 02-06-2007 à 16:05:26
Dj YeLL a écrit : Donc il faut coupler ça avec une tableau qui regroupe la position des différentes lettres Genre si tu as 4 lettres, que les position sont 2, 8, 14, 25 0 1 1 0 Tu remplaces le caractère 8 et le caractère 14 \o/ |
Ouey c'est cool ça, aussi
Dj YeLL a écrit : V'la le border sur une phrase par contre, car c'est exponentiel ... |
factorielle($le_nb_de_o) même, si mes souvenirs sont bons
En même temps c'est sacrément con déja à la base
Marsh Posté le 02-06-2007 à 16:12:06
c'est pas plutot 2^nb_de_o ?
2 car o ou O
j'essaie de trifouiller là, galere
Marsh Posté le 02-06-2007 à 16:14:04
ZePRiNCE a écrit : c'est pas plutot 2^nb_de_o ? |
C'est tout à fait juste
fuck you
Marsh Posté le 02-06-2007 à 16:14:29
theredled a écrit : Ouey c'est cool ça, aussi |
Ohé, tu vas me parler autrement hein
Marsh Posté le 02-06-2007 à 16:26:17
Pfiou, j'y capte vraiment rien
Marsh Posté le 02-06-2007 à 16:28:03
Pour compter le nombre d'occurence :
$str = 'Hello World';
$char = 'o';
$count = substr_count($str, $char);
Marsh Posté le 02-06-2007 à 16:28:59
Oui, moi j'avais fait
Code :
|
Donc là j'ai le nb d'occurences, et les combinaisons possible.. mais apres....
Marsh Posté le 02-06-2007 à 16:33:57
ZePRiNCE a écrit : Oui, moi j'avais fait
|
Euh le nombre d'occurences possibles c'est tout simplement count($tableau) hein
Marsh Posté le 02-06-2007 à 16:35:35
Elle marche au moins ma fonction, si tu mets un print_r($tableau) après ?
Marsh Posté le 02-06-2007 à 16:38:20
Vi, ça fait 16 possibilités.
Array
(
[0] => Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
)
[1] => Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 1
)
[2] => Array
(
[0] => 0
[1] => 0
[2] => 1
[3] => 0
)
[3] => Array
(
[0] => 0
[1] => 0
[2] => 1
[3] => 1
)
[4] => Array
(
[0] => 0
[1] => 1
[2] => 0
[3] => 0
)
[5] => Array
(
[0] => 0
[1] => 1
[2] => 0
[3] => 1
)
[6] => Array
(
[0] => 0
[1] => 1
[2] => 1
[3] => 0
)
[7] => Array
(
[0] => 0
[1] => 1
[2] => 1
[3] => 1
)
[8] => Array
(
[0] => 1
[1] => 0
[2] => 0
[3] => 0
)
[9] => Array
(
[0] => 1
[1] => 0
[2] => 0
[3] => 1
)
[10] => Array
(
[0] => 1
[1] => 0
[2] => 1
[3] => 0
)
[11] => Array
(
[0] => 1
[1] => 0
[2] => 1
[3] => 1
)
[12] => Array
(
[0] => 1
[1] => 1
[2] => 0
[3] => 0
)
[13] => Array
(
[0] => 1
[1] => 1
[2] => 0
[3] => 1
)
[14] => Array
(
[0] => 1
[1] => 1
[2] => 1
[3] => 0
)
[15] => Array
(
[0] => 1
[1] => 1
[2] => 1
[3] => 1
)
)
J'ai du mal a voir comment concretiser ça..
Marsh Posté le 02-06-2007 à 16:39:26
T'as plus qu'à arranger ça pour qu'au lieu des 0 ça foute false, et qu'au lieu des 1 ça foute la position du caractères
Marsh Posté le 02-06-2007 à 16:40:38
tin c'est la première fois que je code sur papier et que ça marche direct
Ben après tu fais le truc de Dj Yell, tu bloque où ?
Marsh Posté le 02-06-2007 à 16:41:53
Dj YeLL a écrit : T'as plus qu'à arranger ça pour qu'au lieu des 0 ça foute false, et qu'au lieu des 1 ça foute la position du caractères |
Ou tout simplement qu'au lieu des 0 ça foute "o", et au lieu des 1 ca foute "O"
edit : ah oui nan ok j'ai pigé, mais du coup ça marche pas si il veut mettre "o", "O", "0", et ":o"
Marsh Posté le 02-06-2007 à 16:41:55
Ben je suis pas un expert en tableau du tout
A la base les tableaux je m'en sers pour recuperer des données mysql, mais rien d'autre.
Bref, je suis novice en tableau php.
Je vais essayer de faire ce que Dj Yell a dit
EDIT: theredled, ouaip plutot, je crois que j'ai compris
Marsh Posté le 02-06-2007 à 13:10:44
Oui, le titre veut pas dire grand chose, je sais.
Voici ce que je voudrais faire.
Imaginons :
$string = "Hello World";
Je voudrais remplacer les o par des 0, mais sur le premier, sur le deuxieme, sur les deux..
L'idée c'est de recuperer ensuite
Hello World
Hell0 World
Hello W0rld
Hell0 W0rld
J'ai pensé à faire un str_split, mais je suis pas un expert en tableau, et je vois pas comment faire du tout.
Je sais c'est une question tres sogrenu, mais je suis tres curieux (et puis ça pourrait me servir pour autre chose).
Une idée ?
Merci d'avance
Message édité par ZePRiNCE le 02-06-2007 à 13:11:06
---------------
A VENDRE: Razer Chroma ARGB Controller / Boitier / Support Triple Screen / Ventirad / Carte USB3