Un petit divertissement de codage LabVIEW pour l’été. Calculer le parcours d’un escargot malchanceux.
Ce challenge LabVIEW est sponsorisé par Programmez, le gagnant aura un abonnement de 1 an à ce magazine au format PDF.
Voici l’aventure :
Un escargot veut gravir une tour de 324 mètres. Le premier jour, il monte de x centimètres. La première nuit, il glisse (vers le bas) de y centimètres. Chaque jour supplémentaire, il monte de 1 centimètre(s) de moins que la journée précédente. En revanche, la nuit il glisse toujours de y centimètres.
Dans la région où est située cette tour, il pleut toutes les 8 nuits. Lorsque ça se produit, au bout de la nuit, l'escargot se retrouve au même endroit que 48 heures auparavant.
En appelant le jour 0 celui de son départ (il part le matin), et sachant qu'il vient de pleuvoir la nuit dernière, quel jour l'escargot arrive-t-il en haut de la tour ?
Pour vérifier la compréhension de l'énoncé, voici le début du parcours de l'escargot, pour x=1330 et y=300
Fin du jour 0 : altitude = 1330 cm
Fin de la nuit 0 : altitude = 1030 cm
Fin du jour 1 : altitude = 2359 cm
Fin de la nuit 1 : altitude = 2059 cm
Fin du jour 2 : altitude = 3387 cm
Fin de la nuit 2 : altitude = 3087 cm
Fin du jour 3 : altitude = 4414 cm
Fin de la nuit 3 : altitude = 4114 cm
Fin du jour 4 : altitude = 5440 cm
Fin de la nuit 4 : altitude = 5140 cm
Fin du jour 5 : altitude = 6465 cm
Fin de la nuit 5 : altitude = 6165 cm
Fin du jour 6 : altitude = 7489 cm
Fin de la nuit 6 : altitude = 7189 cm
Fin du jour 7 : altitude = 8512 cm
Fin de la nuit 7 : altitude = 6165 cm
Fin du jour 8 : altitude = 7487 cm
Fin de la nuit 8 : altitude = 7187 cm
Fin du jour 9 : altitude = 8508 cm
Fin de la nuit 9 : altitude = 8208 cm
...
Les données d'entrées fournies sont les valeurs de x et y. Par exemple x = 1370 et y = 280
Pour participer vous devez me renvoyer un code LabVIEW avec en entrée les deux paramètres x et y et en sortie un indicateur format texte donnant les étapes chaque jour tel qu’indiqué dans l’exemple et enfin un indicateur numérique avec le nombre de jours au final pour atteindre le haut de la tour.
Envoyez votre code nommé Ch45_escargot_votre pseudo_ici.vi à emmanuel.roset@ni.com avant le 1er Aout. Et postez s’il vous plait sur la communauté un message « code envoyé » ou équivalent pour vérifier la boite email en cas de non réception ou de congés…
Le gagnant sera tiré au sort (avec un jeu de hasard) parmi les bonnes réponses avec un code fonctionnel.
Les codes seront publiés et partagés à la fin du mois
Bon amusement avec ce codage
Bonjour Emmanuel,
Merci pour ce défi fort intéressant.
Quel calvaire pour ce pauvre escargot, il met quasiment 2 ans à monter en haut de la tour.
Bonne journée.
Bonjour à tous,
Code envoyé 🙂
Pour x=1330 et y=300, ce pauvre escargot mettra 3620 jours pour monter les 324 mètres de la tour.
Je ne suis pas expert en logique, mais il semblerait qu'à partir de 1030 jours cet escargot ne soit plus en mesure de vraiment avancer, donc s'il n'avait pas atteint les 324m à ce moment là, autant dire qu'il ne les atteindrait plus jamais...
Personellement je me prononcerais sur un 39 jours, mais bon, peut être que je me trompe.
En effet on est déjà à 82 mètres au bout de 9 jours dans l'exemple de valeurs, il est raisonnable de penser que pour ces chiffres c'est plus dans les 1 mois et plus... en gros quoi
Attention aux millimètres et aux mètres et bien sur aussi attention à la pluie qui se répète le bon jour sachant que le premier jour compte déjà pour 1.
Je trouve également 39 jours, ce qui fait tout de même un sacré périple pour notre petit escargot
Quoi on m'aurait menti 1000 cm ne font pas 1 mètre -_-.........
Donc après correction de cette magnifique boulette, je me rapproche de votre valeur, mais pour ma part, je tombe à 41 jours.
Afin de couper la poire en deux, je dirais 40 jours vu que l'escargot atteindrait le sommet à la fin du jour 39 (donc on compte le jour 0)
Merci Michael.C, je suis rassuré de ne pas être le seul à avoir fait la boulette des 1000cm par mètre 🙂
En effet 40 jours vu que l'on démarre au jour 0.
Dommage qu'il n'y ai pas de défis complémentaire, pour une fois que j'ai le temps de m'y mettre correctement
J’ai bien noté l’intérêt d'un défi complémentaire optionnel histoire de passer un peu le mois de juillet à aider cet escargot sportif.
Idée complémentaire : Imaginons que cet escargot va en fait rejoindre sa dulcinée en haut de la tour, et qu'une limace voulant être témoin de l'action décide de le suivre une semaine plus tard.
A quel vitesse devra-t-elle monter pour arriver en même temps au sommet. Heureusement pour elle, alléger par son absence de coquille, elle pourra aller plus vite, tout en subissant les mêmes inconvénients que notre valeureux escargot (pluie, fatigue,...).
Code envoyé
Une tour de 324m et un escargot qui fait une ascention de 40 jours.. ça choque personne?.. bon je m'y met..
On va dire qu'il mange la mousse sur la tour et que la rosée du matin lui donne l'ingrédient pour la glisse...
Code envoyé !
Pour laisser un peu de mou, je me suis permis de laisser à l'utilisateur le choix de la distance à parcourir, et également de donner un petit coup de pouce du destin au pauvre escargot en donnant une altitude initiale... Du coup Michael C, je peux déjà te dire que la limace arrivera avec 9 jours d'avance !
code envoyé
Mdr, bien joué Bilsix ^^
Je me suis amusé à proposer cela avant de partir en vacance, donc je n'ai même pas réfléchi au code associé 😄
Et c'est même pas dit que j'ai le temps, vu la charge de boulot qui tombe pour gérer les différents départs en vacance :s
Code envoyé!
Finalement je n'ai pas eu autant de temps que prévu pour faire le code donc j'ai juste rajouté un calcul de la hauteur maximale atteignable par notre escargot (en fonction des x et y en entrée) et la possibilité de modifié la fréquence des jours pluvieux.
Bonjour,
Code envoyé !
A+
Dorian
Bien le bonjour,
code envoyé.
Mais perso j'ai trouvé 43 jours...
j'ai trouvé 40 jours, soit j'ai fait une erreur, soit c'est toi 🙂
Mais je pense ne pas être le seul à trouver 40 jours, donc, peut-être a tu un petit soucis de boucle, une étape passée (p.e.) ou comptée en trop??!!??
Bonsoir tout le monde, est-ce que vous compter la dernière nuit ou pas? Pour moi, il arrive en haut de la tour avant la fin de la 39ème journée. Avec ces mêmes conditions, j'obtiens une distance maximum possible par ce petit escargot de 447047 cm en 1088 jours pour X=1370 et Y=280.
De mon côté, je trouve également qu'il arrive à boucler ses 326m à la fin de la 39ème journée, en commençant à la journée 0...
@PhilB58, quand tu dis que tu trouves 40 jours, tu commences au jour 1 ou au jour 0 ?
@Rodolph, c'est marrant cette histoire de distance maximum. Je trouve 447043cm. Comment peut-on être certain que c'est la distance maximum ?
J'ai considéré que la tour faisait 324m donc il ne pourrait pas aller plus haut et qu'il ne pouvait pas creuser le sol non plus. Avec les données x=1370 et y=280, mon code me dit qu'il parcours moins distance pour monter que pour descendre à partir de là.
je commence à compter le premier jour comme jour 1!
Si tu comptes le premier jour comme étant le jour 0 (zéro), et que tu arrives en haut de la tour au jour 39, le premier jour passe à la trappe, il faut donc commencer par le compter comme étant le jour 1 (imagine que l'ascension dure 1 jour, tu aurais comme réponse : 0 jour d'ascension)
ma réponse est celle-ci:
Fin du jour 1 : altitude = 1330cm
Fin de la nuit 1 : altitude = 1030 cm
Fin du jour 2 : altitude = 2359cm
Fin de la nuit 2 : altitude = 2059 cm
.....
Fin du jour 39 : altitude = 31637cm
Fin de la nuit 39 : altitude = 31337 cm
Fin du jour 40 : altitude = 32628cm
Fin de la nuit 40 : altitude = 30345 cm
l'escargot atteint bien le sommet le 40ème jour (324m soit 32400cm) .. maintenant, on aurait pu calculer quand dans la journée 🙂
@Rodolph, Dans notre cas, si tu décides d'arrêter ton code dès que tu sors de l'intervalle [0;distance à atteindre], ce qui est parfaitement logique, alors oui, tu es certain que c'est la distance max 🙂
Mais... admettons que l'escargot soit capable de creuser. Comment peut-on être certain qu'il ne va pas, d'un coup, se mettre à remonter (de la même manière que, d'un coup, aux alentours de 1088 jours, alors qu'il n'arrêtait pas de monter, il s'est mis à descendre) ? Comment peut-on connaitre à l'avance le nombre de points où la courbe change de variation uniquement avec les données de notre problème ?
@PhilB58, Ce que tu dis est juste. On est beaucoup à avoir trouvé 39 jours car on est beaucoup à avoir suivi l'exemple qu'Emmanuel a indiqué pour la bonne compréhension de l'énoncé (à savoir "premier jour" = "jour 0"). Bon, je ne trouve pas que dire "0 jour d'ascension" soit un véritable problème (après tout, s'il va vite et qu'il monte la distance voulu en moins d'une journée, on ne peut pas exactement dire qu'il a mis une journée pour monter), mais c'est une question de point de vue (un fan de sport sera d'acord avec toi par exemple, puisque si un but est marqué au bout de 30 secondes, on dira "but à la première minute de jeu", et non "à la zérotième").
Code envoyé
Bonjour à tous,
@Bilsix, je n'adhère pas parfaitement à ton explication. Peut être que je la comprends mal.
Mais pour moi, l'origine du problème est juste de la terminologie :
Le jour 0 est une référence temporelle, qui va t'indiquer ton point de départ, et cela correspondra bien à 1 journée de trajet, cette valeur correspondant à une durée.
Donc dans mon cas, en démarrant mon itération à 0 pour répondre au schéma proposé par Emmanuel (Jour 0 , Nuit 0 , ..... , Jour N), j'aboutis bien à une durée de voyage de notre valeureux escargot de 39 jours.
Donc je pense que les personnes qui ont trouvé 40 jours, c'est qu'il y a un souci dans leur programme.
Cela vient plus de ton critère d'arrêt (j'ai eu le problème sur mon développement).
La variabilité de la réponse va dépendre du moment auquel vous estimez qu'il faut considérer le franchissement de la ligne d'arrivée :
J'espère avoir été claire ^^ Sinon c'est l'été, ne vous faites pas une migraine, aller faire de la randonnée 😄
Je suis un peu d'accord avec toi Michael, et ce serait une erreur de penser qu'il glisse le dernier jour alors qu'on peut se permettre de penser qu'une fois arrivé au sommet, le sol est plat.
Par contre si on considère qu'on part du jour 0, et que le périple se finit le jour 39, je pense qu'on doit dire que l'aventure à duré 40 jours. Si on fait une analogie avec les tableaux en programmation, un tableau de 40 valeurs possède un "i" maximal de 39.
Bonjour,
Le débat du jour d'arrivée et du nombre de jours fait parti du défi. En effet, comme pour les acquisitions de données temporelles on démarre à T0 le matin du 1er jour de voyage (à la fin de la nuit 0 il a passé déjà 1 jour à voyager). Il arrive donc dans la journée du 39e jour en haut de la tour et s'arrête. Son voyage a duré 40 jours en tout.
La plupart des codes reçus sont justes et indiquent bien l'arrivée pendant le jour 39 avec un indicateur séparé ajoutant +1 pour le nombre de jours au total. J'accepte tous les codes dont l'algorithme fonctionne dans cet esprit même si vous avez indiqué "fin du jour 1" à la fin du premier jour, pas de soucis.
Défi complémentaire pour ceux qui le souhaitent (comme l'a suggéré PhilB58) , à quelle heure:minute arrive t'il en haut de la tour ?
Merci Emmanuel pour cette conclusion.
Effectivement, je viens de relire mon post au moment de la fourniture du code, et j'ai bien arrivée Jour 39 -> Durée 40 jours.
Sinon pour ton défi complémentaire (que je n'aurai pas le temps de faire :D), on est bien d'accord que tu considères un top départ de notre escargot jour 0 à 00h00 GMT 😄
Mais alors histoire de corser le débat ^^, faut il prendre les données météorologiques, pour s'adapter à la course du soleil, afin de tenir compte de l'allongement des journées en été, et de la nuit en hiver :D..... (Si vous me cherchez je suis déjà parti )
Oui en effet il faut préciser.
Le Top départ de l'escargot sera à 9h00 du jour 0 (c'était le matin dans l'énoncé). Pour simplifier un jour est de 12h de 9h du matin à 21h et la nuit de 12h de 21h à 9h.
Zut, pourrai pas participer au défit complémentaire, je suis en congés depuis aujourd'hui, loin de mon ordi (professionnel) et de mon Vi 😞
Pour l'histoire des jours (39 ou 40 dans le cas du défit d'origine), ça n'a finalement pas beaucoup d'importance, moi, j'ai juste compté comme un être humain (en commençant par 1), pas comme un ordi 🙂
Salut,
Code envoyé.
Prenant les conditions de l'énoncé, j'ai trouvé qu'il arriverait au jour 39 à 18h26min44s.
Michael.C a écrit :
Mais alors histoire de corser le débat ^^, faut il prendre les données météorologiques, pour s'adapter à la course du soleil, afin de tenir compte de l'allongement des journées en été, et de la nuit en hiver :D..... (Si vous me cherchez je suis déjà parti
)
Et avec le soleil il va sécher alors il avancera de moins en moins vite au fil de la journée ?
A++
Code envoyé. Bonne soirée à tous.
Bonjour la communauté ! De retour de congés je suis en train d'analyser les codes.
Pour gravir la tour de 324 m soit de 32400 cm, il lui faut 40 jours en partant du jour 0 et en arrivant à la fin du jour 39. La valeur atteinte ce jour est de 32628 et dépasse donc 32400.
Pour donner un peu de souplesse au résultats je ne tiens compte que du texte demandé dans l'indicateur déroulant afin de vérifier le code. (certains ont mis 39 ou 40 jours)
Il y a eu plusieurs belles animations graphiques de l'escargot bien sympathique.
Voici les résultats des codes, dites moi si j'ai loupé quelqu'un parmi mes Mails, je ferai une recherche
Trois malchanceux n'ont pas mis d'indicateur texte de vérification de hauteur en sortie jour par jour ce qui rend impossible la validation (surtout que le jour n'est pas le bon), mais ils ont bien travaillé sur les codes alors je les remercie quand même beaucoup et leurs codes sont exploitables pour des astuces à partager.
Tirage au sort dans quelques jours basé sur un loto pour savoir qui a gagné le prix. Publication des codes également.
1 | Ch45_escargot_MichaelC.vi | Fin du jour 39 = 32628 | OK | ||
2 | Ch45_escargot_beno72.vi | Fin du jour 39 = 32628 | OK | ||
3 | Ch45_escargot_Bilsix.vi | Fin du jour 39 = 32628 | OK | ||
4 | Ch45_escargot_PhilB58.vi | Fin du jour 39 = 32628 (commencé à 1) animation | OK | ||
5 | CH45_escargot_Kaythul_PK.vi | Fin du jour 39 = 32628 | OK | ||
6 | CH45_escargot_yopYyop.vi | Fin du jour 39 = 32628 | OK | ||
7 | Ch45_escargot_vdparter.vi | Fin du jour 39 = 32628 | OK | ||
8 | Ch45_escargot_OlivierL.vi | Fin du jour 39 = 32628 | OK | ||
Ch45_escargot_Julien V.vi | Pas d'indicateur texte de sortie (mais belle animation graphique) | NO | |||
Ch45_escargot_Ottawh.vi | Pas d'indicateur texte de sortie (code retourne 42 jours) | NO | |||
CH45_escargot_Rodolph.vi | Pas d'indicateur texte de sortie (code retourne 41ème jour) | NO |
Bonjour les Labviewllengers, bonjour Emmanuel !
Je n'ai pas tout suivi : le tirage a-t-il déjà été effectué du coup ? Et le prochain challenge aura donc lieu au mois d'octobre ?
Bonjour,
En effet c'est de ma faute, nous sommes dans la préparation de NIDays en Novembre, la journée NI annuelle où nous présentons les nouveautés, des travaux pratiques et des sessions en salle. Du coup pas mal occupé. Nous allons d'ailleurs faire une petite pause sur les défis jusqu’à décembre pour reprendre de plus belle. (nidays.fr)
Nous allons donc faire un tirage en utilisant la première boule du loto de ce soir le 13 sept. voici les attributions des numéros:
Nombre de participants : 8
Ch45_escargot_MichaelC.vi => 1,2,3,4,5,6,
Ch45_escargot_beno72.vi => 7,8,9,10,11,12,
Ch45_escargot_Bilsix.vi => 13,14,15,16,17,18,
Ch45_escargot_PhilB58.vi => 19,20,21,22,23,24,
CH45_escargot_Kaythul_PK.vi => 25,26,27,28,29,30,
CH45_escargot_yopYyop.vi => 31,32,33,34,35,36,
Ch45_escargot_vdparter.vi => 37,38,39,40,41,42,
Ch45_escargot_OlivierL.vi => 43,44,45,46,47,48,
codes publiés dans l'énoncé
Avec un peu de retard... voici le résultat du Loto du Mercredi 13 septembre
18 | 45 | 4 | 25 | 33 |
1 |
La boule 1 étant le 18, selon les attributions il s'agit de Bilsix !! qui remporte l'abonnement PDF au magazine programmez.
Merci a tous de votre participation aux galères de ce pauvre escargot. Le prochain défi sera après NIDays (7 Novembre à Paris) pour reprendre nos aventures de codage souvent mathématiques pour découvrir des astuces et les bizarreries de la structure mathématique de notre univers.
Super, ravi d'avoir remporté la mise !!! Merci Emmanuel, merci Michael, et merci à tous !
Rdv dans un mois, on se croisera peut-être aux NI Days...
C'est vrai que c'était sympa de se creuser les méninges pour trouver des petites solutions avec LabVIEW. On a jamais franchi le pas du 52e challenge. Je suis toujours chez NI mais plus au marketing technique, j'étais le seul sur le coup pour la création et suivi. Depuis ce n'est plus dans mes attributions d'avoir du temps alloué au forum. J'ai réussi cependant à ce que les anciens post et challenges soient transférés sur la nouvelle plateforme web, car le nombre de visites était très conséquent, plusieurs dizaines de milliers de vues. De mon coté ce ne sera pas possible pour le moment de reprendre. Mais je garde un œil sur les opportunités au cas où. Merci pour cet intérêt, ca me fait plaisir.