Union ensembliste

cs_HiKwesT Messages postés 17 Date d'inscription mardi 15 mars 2005 Statut Membre Dernière intervention 8 janvier 2008 - 8 janv. 2008 à 14:54
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 8 janv. 2008 à 23:20
Bonjour a tous,


J'aurait aimais savoir comment réaliser en PHP des calculs de "ou ensembliste" du style AB u BC donne ABC, mais aussi valable pour des combinaisons plus longue et contenant plusieur fois la même lettre (e.g ABCAD), donc array_combine ne marche pas


j'ai deja essayer le "or", "|" et "||" sur des variables de type texte sans succés


Il s'agit d'un TP sur les graphes, et la représentation des matrices au arcs élévée a la puissance n pour les connaisseurs...


Merci

5 réponses

malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
8 janv. 2008 à 15:58
Salut,

J'ai fait un essai. Il faudrait ajouter des contrôles sur la taille des entrées mais je crois que c'est ce que tu cherches:

<?php
$a = 'ABCD';$b 'CDEF'; // a U b ABCDEF

// il faudrait faire des tests de taille, ici c'est le principe

$i = strlen($b);
do{    echo 'i'.$i.'> a : '.substr($a,-$i).', b : '.substr($b,0,$i).'
';
    if (strpos(substr($a,-$i),substr($b,0,$i))===FALSE)
        $i--;
    else{
        $result = substr($b,0,$i);
        $i=0;
    }
}
while($i>0);

echo 'En commun : '.$result.'
';
echo 'Union : '.substr($a,0,strlen($result)).$b;
?>

Résultat:
i4> a : ABCD, b : CDEFi3> a : BCD, b : CDEi2> a : CD, b : CD
En commun : CD
Union : ABCDEF
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
8 janv. 2008 à 16:01
Petite correction:
echo 'Union : '.substr($a,0,strlen($a)-strlen($result)).$b;

*****
noisy communication - wherever, be everywhere!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 janv. 2008 à 22:10
Hello,

je suis terriblement nul en math...hein. Donc je ne sais pas si je ne vais pas dire une connerie, mais ce n'est pas plus simple avec des tableaux ?
<?php
$group1 = array('A', 'B', 'C', 'D');
$group2 = array('C', 'D', 'E', 'F');
$union = array_unique(array_merge($group1, $group2));
print_r($union);
?>
Ca ne donne pas une union ? Ou peut-être n'est-ce pas correct mathématiquement parlant ?
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
8 janv. 2008 à 22:34
Nah, t'as po compris ;-)

Avec array_unique, l'ordre ne compte pas, ce qui est important pour l'union: ABC U BCD = ABCD mais ABC U  DBC vaut ABCDBC (en tous cas si moi j'ai compris ce qu'il veut).

Dessine chaque sommet et trace le chemin:
A -- B -- C
        B -- C -- D
donne
A -- B -- C -- D en terme de chemin

*****
noisy communication - wherever, be everywhere!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 janv. 2008 à 23:20
Ah en effet je n'avais pas du tout compris ça comme ça :-)
Bon ben alors ouais, les tableaux ça risque de pas le faire et ta solution reste la meilleure à priori!
0
Rejoignez-nous