Curriculum and Labs for Engineering Education

cancel
Showing results for 
Search instead for 
Did you mean: 

Challenge mathématique #51 : rechercher le sous-marin

 

Bonjour,

Voici le défi LabVIEW de mai !

 

Un de vos sous-marins allié se déplace dans l’océan sans communications et afin de ne pas se faire repérer il remonte à la surface à intervalle fixe toutes les 3 heures mais à des endroits presque aléatoires. Le but sera de trouver sa position à un moment donné pour un rendez-vous prévu dans 6 jours exactement.

Ses déplacements sont régis par un générateur pseudo aléatoire fait maison dont vous connaissez la formule :

N <- (137 x N +187) Modulo 256, avec N donné comme valeur initiale au départ sur le port, elle-même arbitraire.

Toutes les 3 heures le générateur pseudo aléatoire fournit une nouvelle valeur. Suivant le résultat il se déplacera suivant cette règle :

  • Il va vers le nord de 1km si le chiffre des unités est 0
  • Il va vers l’est de 1 km si le chiffre des unités est 1
  • Il avance de 1 km dans la même direction que précédemment dans les autres cas (Nord pour la valeur initiale)

 

Prévoir donc sa position en Km (Nord, Est) dans 6 jours exactement sachant que la valeur initiale peut être arbitraire.

 

Pour une valeur initiale de 30 voici un exemple :

Heure  Nord    Est       N

0          0          0          30

3          1          0          201

6          1          1          76

9          1          2          103

 

Par exemple ici dans 9 heures pour N=30 il sera à 1 km au nord et 2 km à l’est

 

Le défi est d’écrire un code LabVIEW qui possède en entrée une commande pour la valeur initiale N et en sortie 2 indicateurs avec les coordonnées Nord et Est en km correspondant à la rencontre dans 6 jours.

Libre à vous ensuite d’ajouter d’autres graphiques ou indicateurs pour par exemple les tableaux aléatoires ou la trajectoire…

 

Exemple pour 9 heures

 

sous marin.png

 

Pour participer envoyez simplement votre code LabVIEW (peu importe la version) appelé Ch51_Sous-Marin_Votre pseudo.vi avant le 1er Juin 2018 sur mon adresse emmanuel.roset@ni.com

(Les sous-vi sont possibles à ce moment mettez les dans un fichier ZIP)

 

Un gagnant sera tiré au sort (suivant un jeu de hasard) parmi les bonnes réponses et il gagnera des goodies (tel que décapsuleur, clé USB en forme de cRIO, calculatrice, tapis de souris LabVIEW, etc…)

 

Pour vérification des mails, pouvez-vous mettre un commentaire sur la communauté (Ex : « code envoyé » lors de l’envoi. Merci.

Publication des codes à la fin du mois en pièce jointe dans l’énoncé pour la communauté.

 

Bonnes vacances a ceux qui font les ponts Smiley Happy

 

Comments
PhilB58
Active Participant
Active Participant
on

Bonjour Emmanuel,

tout d'abord merci pour ce nouveau challenge 😉

J'ai un petit soucis avec les N successifs, si je tiens compte du calcul pseudo-aléatoire (comme je le comprends), je trouve:
N0 = 30

N1 = (137 x 30 + 187) % 256 = 16 (tenant compte de la priorité de la multiplication par rapport à l'addition et prenant N-1 en compte dans le calcul, soit 30)

N2 = (137 x 16 + 187) % 256 = 9

N3 = (137 x 9 + 187) % 256 = 5

et ainsi de suite, je ne trouve pas les mêmes valeurs que toi pour les N successifs.

J'ai donc dû comprendre quelque chose de travers, ça devient une habitude Smiley Very Happy
Pourais-tu préciser le fond de ta pensée pour ce calcul pseudo aléatoire?

Merci Smiley Wink

ML927
Active Participant
Active Participant
on

Salut Phil,

 

Je tombe bien sur les mêmes résultats qu'Emmanuel.

Pour moi l'ordre des priorité est le suivant : A = 137 * N-1 ; B = A + 187 ; N = B % 256.

En tout cas je vérifie ce résultat par deux méthodes : directe et par étapes.

Mais peut-être que je dis une bêtise 🙂

CLAMaxime -- Kudos are a great way to say thank you
ML927
Active Participant
Active Participant
on

@Emmanuel : Que se passe-t-il si le N de départ termine par autre chose que 0 ou 1 ? Il doit suivre la même direction que précédemment mais est-ce le Nord ou l'Est ?

CLAMaxime -- Kudos are a great way to say thank you
PhilB58
Active Participant
Active Participant
on

Salut ML927,

je résonne comme toi, tout haut 🙂

 

A = 137 x N-1  soit  A = 137 x 30 = 4110 (premier pseudo aléatoire avec N-1 = 30)
B = A + 187    soit  B = 4110 + 187 = 4297
N = B % 256   soit  4297 % 256 = 16 (+ reste)

A moins que modulo 256 ne signifie pas la même chose pour moi, je pense que c'est la division de N par 256 🙂
Mais je viens de comprendre 🙂 je prenais la partie entière du modulo et pas le reste, tout est dit 🙂
Merci

ML927
Active Participant
Active Participant
on

En effet, le modulo donne le reste et non la partie entière de la division 😉

CLAMaxime -- Kudos are a great way to say thank you
ML927
Active Participant
Active Participant
on

Je trouve Nord = 18 km et Est = 30km après 6 jours. Quelqu'un pour confirmer/infirmer ? 🙂

 

 

CLAMaxime -- Kudos are a great way to say thank you
PhilB58
Active Participant
Active Participant
on

je confirme, après correction de mon erreur sur le modulo (quel idiot je fais Smiley Frustrated) je trouve pareil que toi Smiley Happy

emmanuel-fr
Member
Member
on

@maxime, bien vu pour le N. Si le modulo donne une valeur autre que 0 ou 1 au départ alors on dit Nord pour la valeur initiale. Désolé je suis en congés et la tête ailleurs Smiley Very Happy

ML927
Active Participant
Active Participant
on

@Emmanuel : Merci pour ta confirmation. Profite bien de tes vacances 🙂

 

@Phil : Merci pour la validation !

 

Code envoyé 🙂

CLAMaxime -- Kudos are a great way to say thank you
kpele
Member
Member
on

code envoyé 🙂

Cordialement,

Kevin
Associate developer
Julien_V.
Active Participant
Active Participant
on
Bonjour, Code envoyé.
Cordialement,

Julien V.

[FIRST]

[LabVIEW Programming]


[FIRST]

Chpere
Member
Member
on

Codé envoyé Smiley Happy

LGC
Member
Member
on

 Bonjour, bonjour,

Code envoyé !

PhilB58
Active Participant
Active Participant
on

Code envoyé 😉
(et je laisse ma place au tirage du gagnant 😉 )

lulu44
Active Participant
Active Participant
on

Code envoyéSmiley Happy

Cordialement
L.MICOU
Kaythul_PK
Member
Member
on

Code envoyé!

guillaumeMa
Member
Member
on

Bonjour ,code envoyé même valeur que ML927.

Bilsix
NI Employee (retired)
on

Code envoyé !

 

Pour l'instant ce n'est qu'une version 1.0, mais j'aimerais bien me pencher sur la création d'un graph suivant la trajectoire... Si j'ai le temps, je m'y mets !

Bilsix.
ML927
Active Participant
Active Participant
on

Bilsix,

 

Prevois-tu de faire une interpolation particulière entre tes points ou juste afficher la position Nord vs Est ?

 

CLAMaxime -- Kudos are a great way to say thank you
emmanuel-fr
Member
Member
on

Pour information, nombreux sont ceux qui ont ajouté la trajectoire du sous-marin avec même un fond en image de mer !

 

En ce qui concerne les codes, je crois pas qu'il en ai d'identique. Ce qui démontre qu'il y a énormément de méthodes pour arriver au même résultat... Avec plus ou moins d'optimisations forcément. Les méthodes de chacun pourrons encore bénéficier à la communauté.

JFI
Member
Member
on

Code envoyé Smiley Tongue

PhilB58
Active Participant
Active Participant
on

Encore une fois, Emmanuel apporte une réelle motivation à avancer dans la connaissance de LV avec du partage de tous les participants à ses challenges bien sympathiques 😉

Un grand merci à lui pour son implications et ses propositions!!!!

Bilsix
NI Employee (retired)
on

@ML927, de prime abord, je pensais essayer de faire une interpolation entre chaque point obtenu toutes les 3h, c'est plus sympa de voir la trajectoire !

J'ai toujours eu du mal avec les graphs, ce n'est pas mon point fort, c'est pour ça que j'aimerais m'exercer... 🙂

Bilsix.
atchuuum
Member
Member
on
Code envoyé 🙂
emmanuel-fr
Member
Member
on

bonjour Atchuuum, je n'ai rien reçu par email pour info

ghost67
Member
Member
on

Salut à tous 

Code envoyé 😄 avec erreur de nom jai mis ghost67280

Didier_Bleses
Member
Member
on

Code envoyé.

ben64
Trusted Enthusiast
Trusted Enthusiast
on

Code envoyé.

Bilsix
NI Employee (retired)
on

En marchant dans la rue, j'ai croisé par hasard un agent de la Police des Jeux Sans Gagnants. Il m'a indiqué qu'il avait à l'oeil le Challenge Mathématique LabVIEW n°51, et qu'il voulait nous donner un premier PV pour retard dans la désignation d'un vainqueur. J'ai gagné du temps en invoquant la préparation des NI Days 2018, mais je ne sais pas si ça tiendra éternellement. Emmanuel, sauve nous !

Bilsix.
emmanuel-fr
Member
Member
on

Oui en effet, NIDays 2018 et de nouvelles responsabilités plus larges ne me permettent plus en ce moment de me concentrer sur les challenges autant que je le voudrait.

Je vais trouver du temps pour finaliser le challenge de Mai et pour le vainqueur du sous marin. Et surtout publier les codes avec les animations !

Par contre il n'y aura pas de challenge pour Juin voir juillet. Mais restez connectés, je donne pas mon dernier mot.Smiley Happy

 

 

guillaumeMa
Member
Member
on

Est il possible que je poste un petit défi de manipulation d image pour juin ?

ben64
Trusted Enthusiast
Trusted Enthusiast
on

Je me suis permis de poster un challenge non-officiel pour le mois de Juin. Si vous êtes intéressés vous pouvez le trouver sur la page du forum de Discussion au sujet de NI LabVIEW.

 

Ben64

emmanuel-fr
Member
Member
on

Ca y est enfin, les codes ont été publiés. Ben64 a passé du temps dessus avec images, un radar et du son !

 

Voici la liste des participants pour le tirage au sort de ce soir 18 juin.

 

Attributions des boules du Loto, première boule compte (à moins d'un désistement alors c'est la suivante car j'ai mis tout le monde...)

Nombre de participants : 14

Ch51_Sous-Marin_ML927    =>   1,2,3,
Ch51_Sous-Marin_kpele    =>   4,5,6,
Ch51_Sous-Marin_Julien_V    =>   7,8,9,
CH51_Sous-Marin_Chpere    =>   10,11,12,
Ch_51_Sous-marin_LGC    =>   13,14,15,
Ch51_Sous-Marin_PhilB58    =>   16,17,18,
Ch51_Sous-Marin_lulu44.vi    =>   19,20,21,
 Ch51_Sous-Marin_Kaythul_PK    =>   22,23,24,
Ch51_Sous-Marin_guillaumeMa.vi    =>   25,26,27,
Ch51_Sous-Marin_Bilsix    =>   28,29,30,
Ch51_Sous-Marin_JFI    =>   31,32,33,
ch51_Sous-Marin_atchuuum    =>   34,35,36,
Ch51_Sous-Marin_Bleses    =>   37,38,39,
Ch51- Ben64    =>   40,41,42,

 

bonne chance et bravo à tous 🙂

ML927
Active Participant
Active Participant
on

Je me desiste, ayant déjà gagné le mois dernier 😉 

 

Merci pour le partage de code ! 

CLAMaxime -- Kudos are a great way to say thank you
PhilB58
Active Participant
Active Participant
on

Pareil je me désiste aussi, on laisse place à ceux qui n'ont pas encore gagné 😉

ben64
Trusted Enthusiast
Trusted Enthusiast
on

Je me désiste également, bonne chance aux participants!

Bilsix
NI Employee (retired)
on

Merci les amis, c'est noble !

Bilsix.
emmanuel-fr
Member
Member
on

Suite au tirage de Lundi 18, nous avons dans l'ordre 34,2,7,13,44, chance 8.

 

Le gagnant est donc : atchuuum

 

Merci a tous pour votre participation à ce défi, tout le monde a trouvé la position du sous-marin.

atchuuum
Member
Member
on

Super ! Maintenant que j'ai suivi les formations labview, j’espère pouvoir donner des codes plus jolis.

J'ai encore du chemin à parcourir pour atteindre le niveau de certains participants.

LabAJO
Member
Member
on
Bonjour,
Pas de challenge mathématique #52 en perspective ? L'occasion peut-être de gagner le livre récemment sorti "Programmation et applications - Introduction à LabVIEW NXG" Smiley Happy

 

Bonne journée !

emmanuel-fr
Member
Member
on

Pour le moment les challenges sont mis en attente car on est dans la période des NIDays

beno72
Member
Member
on

Bonjour,

Pas de nouveaux challenges en perspective ?

emmanuel-fr
Member
Member
on

C'est une bonne question, je crois bien que notre activité locale ne permet plus pour l'instant d'aminer ces défis, je le regrette aussi. Si j'ai des nouvelles on en fera la promotion immédiatement !

Contributors