From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Générateur de phrases unique

Bonjour tout le monde!

 

Premièrement si vous êtes en train de lire ceci, merci de prendre de votre temps pour m'aider!

 

Je suis en train (d'essayer) de programmer un "spinner" et je m'arrache les cheveux depuis plusieurs jours au point où j'ai même de la difficulté à dormir tellement cette "simple" routine me hante.

 

C'est un problème d'analyse combinatoire et selon moi il doit y avoir plusieurs solutions à ce projet (comme c'est souvent le cas avec Labview me direz-vous), laissez moi vous donner un exemple de la routine que j'utilise. Je suis peut-être partis dans la mauvaise direction dès le départ, à ce moment je vous serez super reconnaissant de mettre la doigt là où je me trompe.

 

Voici la phrase d'input :

 

Hey [bonjour, salut, hey, yo] Laurent! [Comment vas-tu, Sa va, Wassup]? Le [chien, chat, oiseau, rat, cheval, maringouin] [bleu, vert, rouge, jaune] à Jacques est mort!

 

Mon programme analyse la phrase, détermine qu'il y a 4 variables et 4*3*6*4 possibilités, soit 288 phrases unique possible.

 

Le programme construit ensuite 2 array, le premier contient les constantes (Hey, Laurent!, ? Le, à Jacques est mort) et le deuxièmes les variables (Bonjour, salut, hey, yo | Comment vas-tu, etc.).

Je fais ensuite une première étape de reconstruction qui résulte en un array 2D du genre :

 

[Hey bonjour | Hey salut | Hey hey | Hey yo]
[Laurent! Comment vas-tu | Laurent! Sa va | Laurent! Wassup]

[? Le chien | ? Le chat | ? Le oiseau | ? Le rat | ? Le cheval | ? Le maringouin]

[bleu | vert | rouge| jaune]

 

Ensuite j'utilise un système de pointeurs XY que j'incrémente par itération pour créer les phrases, et là c'est le bordel car je veux que le truc marche même s'il y a 200 variables avec chacune un nombre de possibilités différente. Le pointeur Y représente la variable à analyser (la ligne) et le pointeur en X représente quelle possibilité de cette variable choisir (la colonne). Sur le principe c'est simple, j'initialise un array de nombre entier de longueur égal au nombre de variables (dans ce cas présent, 4), le tout dans une boucle while. Ce nouvel array, je l'ai appellé "Mémoire PX", car c'est lui qui mémorise le pointeur X de chaque variable. Chaque tour de boucle représente un troncon d'une phrase unique, cette boucle devra donc s'executer 288 fois (nombre de phrase unique) fois 4 variables (4 tronçon de phrase).

 

Cependant, impossible (du moins je n'y suis pas encore arrivé) d'obtenir la bonne séquence pour "Mémoire PX". La séquence ressemble beaucoup à un compteur binaire, excepté que chaque bit peut prendre une valeur entre 0 et le nombre de possibilités de chaque variable. Dans ce cas présent, la séquence de "mémoire PX" devrait être

 

[0,0,0,0] = Hey Bonjour Laurent! Comment vas-tu? Le chien bleu à Jacques est mort (cette partie provient de la dernière ligne du premier array généré)

[0,0,0,1] = Hey Bonjour Laurent! Comment vas-tu? Le chien vert à Jacques est mort

[0,0,0,2] = Hey Bonjour Laurent! Comment vas-tu? Le chien rouge à Jacques est mort

[0,0,0,3] = Hey Bonjour Laurent! Comment vas-tu? Le chien jaune à Jacques est mort

[0,0,1,0] = Hey Bonjour Laurent! Comment vas-tu? Le chat bleu à Jacques est mort

[0,0,1,1] = Hey Bonjour Laurent! Comment vas-tu? Le chat vert à Jacques est mort

[0,0,1,2] = Hey Bonjour Laurent! Comment vas-tu? Le chat rouge à Jacques est mort

[0,0,1,3] = Hey Bonjour Laurent! Comment vas-tu? Le chat jaune à Jacques est mort

[0,0,2,0] = Hey Bonjour Laurent! Comment vas-tu? Le oiseau bleu à Jacques est mort

etc... jusqu'à
[3,2,5,3]

 

Voilà donc à priori c'est très simple et je me sens limite mal à l'aise de venir chercher de l'aide ici, mais comme je vous dis cela fait bientôt une semaine que je suis là-dessus et ça commence à perturber mon sommeil (oui je sais je devrais peut-être allez me faire soigner lol). Ce serait peut-être trop demander d'avoir le bout de code tout cuit qui irait m'incrémenter la mémoire, mais il y a peut-être une logique à laquelle je n'ai pas pensé, qui est toute bête et qui me permettrait de faire ce que je veux (des fois on se complique la vie alors qu'il y a un truc très simple qui fait ce qu'on se casse la tête à essayer de faire).

 

Je vous ai joint ce que j'ai fait jusqu'à présent. Bonne chance pour vous y retrouver dans le bordel, je n'ai vraiment pas l'habitude de coder ainsi, vous en témoignerai par la partie supérieure gauche qui elle, est très propre. J'ai rajouter des annotations qui devrait vous permettre de vous y retrouver facilement.

 

Cordialement,

Bastien

 

0 Compliments
Message 1 sur 6
3 503 Visites

Bonjour,

 

Voici un exemple simple qui je le crois répond à votre problématique.

 

Cordialement,

Rodéric L
Certified LabVIEW Architect
Message 2 sur 6
3 498 Visites

Bonjour Rodéric et merci de ta solution!

 

Cependant, elle n'est valide que pour 4 variables. Si j'en ai 200, il faut que je code 200 boucles "For" intriqués, je cherche la solution la plus polyvalente possible.

 

Merci tout de même!

 

Cordialement,

Bastien

0 Compliments
Message 3 sur 6
3 491 Visites

Quelqu'un pour proposer une solution??

 

Merci d'avance,

Bastien

0 Compliments
Message 4 sur 6
3 450 Visites

Bonjour,

 

Un exemple qui peut-être une piste de réflexion.

 

Cordialement

Message 5 sur 6
3 424 Visites

Bonjour Marco!

 

Je te remercie de ton aide. Après avoir jouer un peu avec l'exemple que tu m'as fournis je ne suis toujours pas en mesure d'obtenir la séquence adéquate. Si j'utilise un Array-2D "rectangulaire" (i.e : tous les éléments sont remplis de 0 à n pour chaque ligne -je ne suis pas sûr si c'est bien clair tout ça hehe-), pas de problèmes.

 

Mais si j'ai seulement Mot-00 et Mot-01 et que la ligne d'après j'ai Mot-10, Mot-11 et Mot-13, je vais avoir une phrase qui va commencé par un "empty string". Il faudrait que je me penche un peu plus sur ta routine et que j'essaie d'y intégrer une comparaison avec la longueur de l'array pour savoir si oui, il faut incrémenter l'index de 1 ou si non, il faut le remettre à zéro. Bref, je me retrouve au point de départ car c'est à peu près là où j'ai bloqué dans mon VI.

 

Merci tout de même pour ton aide 🙂

 

Cordialement,

Bastien

0 Compliments
Message 6 sur 6
3 391 Visites