#1 Wed 02 April 2008 11:22
- pyjoubert
- Participant assidu
- Lieu: Lyon
- Date d'inscription: 21 Mar 2006
- Messages: 347
Comparaison d'élements de liste
Bonjour,
Dans un traitement, j'ai un SPATIALRELATOR qui à comme paramètre "ma_liste" et nb_candidats.
Dans le cas où le nombre de candidats est supérieur à 1, je voudrais comparer certaines valeurs de chaque entité deux à deux.
exemple :
_ma_liste{0}.STRUCT avec _ma_liste{1}.STRUCT
_ma_liste{0}.MATER avec _ma_liste{1}.MATER
...
et faire ressortir les 2 entités dans un log si il y a au moins une différence
et ensuite faire de même en comparant l'es index suivants (1 et 2) puis 2 et 3
Je ne vois pas comment m'y prendre.
Avez-vous une idée ?
Merci de votre aide et bonne journée
Hors ligne
#2 Wed 02 April 2008 12:33
Re: Comparaison d'élements de liste
Ce problème me parait très complexe à traiter de manière générique avec un nombre de candidats non connu.
Le nombre de comparaison peut être très important : C2/n. Avec 5 candidats cela fait 5*4/2 = 10.
A mon avis, il est plus simple de recherche le candidat qui satisfait le plus à un critère numérique et de trier les candidats par ce critère.
Hors ligne
#3 Wed 02 April 2008 14:18
- jaykayone
- Participant actif
- Date d'inscription: 15 Feb 2007
- Messages: 95
Re: Comparaison d'élements de liste
Bonjour,
je pense que ce serait un cas typique pour utiliser un custom transformer avec une boucle.
C'est un peu compliqué à mettre en oeuvre, mais en gros vous pouvez faire le premier traitement, faire passer vos données dans un "Loop Output", les faire revenir, incrémenter l'index, faire votre comparaison et sortir de la boucle une fois que vous avez atteint la taille de la liste ...
http://www.fmepedia.com/index.php/Loop
Jeff
Hors ligne
#4 Wed 02 April 2008 15:08
- pyjoubert
- Participant assidu
- Lieu: Lyon
- Date d'inscription: 21 Mar 2006
- Messages: 347
Re: Comparaison d'élements de liste
Bonjour,
Je me suis mal exprimé. Quand je dis deux à deux, c'est en fait 0 avec 1, 1 avec 2, 2 avec 3 ....
C'est à dire pour 5 candidats on aura 4 comparaisons d'entités
Hors ligne
#5 Thu 03 April 2008 11:35
- pyjoubert
- Participant assidu
- Lieu: Lyon
- Date d'inscription: 21 Mar 2006
- Messages: 347
Re: Comparaison d'élements de liste
Bonjour,
Est ce que quelqu'un a un exemple tres simple utilisant le "loop"
Merci d'avance
Hors ligne
#6 Thu 03 April 2008 12:09
- pyjoubert
- Participant assidu
- Lieu: Lyon
- Date d'inscription: 21 Mar 2006
- Messages: 347
Re: Comparaison d'élements de liste
En complement de mon message précédent, je cherche un exemple de "Loop", traduisant l'algo ci-dessous
Pour chaque indice compris entre 1 et i (que je connais)
faire
- récuperer la valeur de ma_liste{i}.STRUCT
- récupérer la valeur de ma_liste{(i - 1)}.STRUCT
- les comparer
fin
merci de aide
Hors ligne
#7 Thu 03 April 2008 13:24
Re: Comparaison d'élements de liste
Je n'ai pas d'exemple à vous fournir mais plutôt une suggestion :
Pourquoi ne pas utiliser TclCaller pour développer votre algo en TCL ?
Ce serait beaucoup plus que d'utiliser des Transformers recursifs.
Hors ligne
#8 Thu 03 April 2008 13:38
- jaykayone
- Participant actif
- Date d'inscription: 15 Feb 2007
- Messages: 95
Re: Comparaison d'élements de liste
Bonjour,
en annexe, j'ai mis un exemple qui fait partie du concours "FME Idol" de la conférence d'utilisateurs à Vancouver.
Il s'agissait de parcourir une chaîne de caractère et de remplacer chaque caractère par une valeur définition dans un dictionnaire.
Je l'ai résolu avec un looping transformer...
Il n'y a pas de commentaires, mais ça peut certainement vous être utile pour comprendre comment on peut s'y prendre.
Bonne chance,
Jeff Konnen
Hors ligne
#9 Fri 04 April 2008 07:41
- pyjoubert
- Participant assidu
- Lieu: Lyon
- Date d'inscription: 21 Mar 2006
- Messages: 347
Re: Comparaison d'élements de liste
Olivier et jaykayone, merci de vos 2 solutions
Hors ligne