Bonjour ! un nouveau défi pour octobre
Recherchez les secrets de l'univers
Un précédent challenge résolu était de dessiner des nombres en suivant une spirale (avec une disposition entrante).
Des rumeurs indiquent que les nombres premiers auraient une disposition particulière dans une telle spirale de nombres.
En remplaçant les nombres par des points en noir et blanc ou en couleurs, des lignes et une organisation apparaitrait !
Voici comment disposer les chiffres en spirale et un exemple de pattern qui se dessine :
Le défi de ce mois d’octobre sera de retrouver les nombres premiers avec LabVIEW, de les disposer en spirale de nombre et de les différentier par un petit point noir. Cela permettra de révéler un motif.
A gagner ? Ce mois-ci, il me reste des Livres LabVIEW de 2eme édition, ce n’est pas la dernière version mais toujours utile de le posséder (442 pages).
Le gagnant sera tiré au sort parmi les candidats qui afficherons simplement le résultat d’un tableau de 200 x200 minimim dans un graphe XY. ( Requis pour commencer à voir apparaître un pattern)
Voici un exemple de résultat dans un graphe rempli avec des nombres aléatoires:
Si vous le souhaitez, un défi complémentaire sera de mettre en valeur les nombres premiers particuliers pour magnifier révéler au mieux les motifs. Il existe différentes méthodes pour cela. Cette « Spirale d'Ulam » pourra être affichée par exemple dans graphe d’intensité XY (qui permet différentes intensités de couleurs) ou de sélectionner plusieurs tailles de points dans un graphe.
Un défi sera également de faire attention a ne pas calculer et afficher les valeurs pendant des heures...
Pour gagner, vous pouvez m’envoyer vos codes ch37_votre pseudo.vi à emmanuel.roset@ni.com, je les publierai en fin de mois. Ainsi que poster « code envoyé » sur la communauté afin de ne pas perdre de codes dans les emails.
N’hésitez pas également à communiquer et à poster vos graphes en cours de challenge pour avoir un aperçu des résultats !
Bon défi
Bonjour Emmanuel
J'ai un problème, c'est qu'un graph 10000x10000, c'est trop grand pour mon écran. Je peux afficher en 1000x1000 (en utilisant un peu l'ascenseur), mais honêtement, je trouve que le motif est plus joli en 100x100
Bonjour à tous !
Nico_EMC, est ce que tu pourrais poster une image du motif que tu obtiens avec un graphe 100x100 ? J'ai déjà fait tout le code (affichage de la spirale avec mise en valeur des nombres premiers) et tout testé, et mes observations sont cohérentes, mais je ne suis pas satisfait du motif, j'ai l'impression qu'il est beaucoup plus marqué sur l'image d'Emmanuel... Est ce que tu utilises une intensité particulière pour certains points ? Si oui lesquels? Merci !
Sebastien
J'obtiens la même chose que toi, mais j'ai mis des points plus gros et ajusté la taille du graph pour qu'il n'y ai pas de "noir" entre les points :
Bonjour,
J'ai modifié l'énoncé afin de réduire le pattern à 200 x 200 pour la validation, qui est le minimum pour commencer à voir apparaître un pattern. (ou +100 -100 si on prend les coordonnées à 0 au centre du graphe.)
De nombreux sites montrent comment mettre en avant certains motifs et nombres particuliers. (je ne dévoile pas tout non plus).
Par contre Nico, je pense que vous avez eu la main lourde sur la taille des points, ce n'est plus des motifs cachés mais cela semble un peu chargé et les points doivent se chevaucher
Une réflexion personnelle qui n'apporte rien au défi, mais pour la structure globale, je pense plus a un motif avec une progression en 3 dimensions... comme celle-ci http://www.divisorplot.com/6.html
Salut j'envoi le code j'ai mis en parametre la taille voulu pour le graphe pour 1000 x 1000 il faut 10s de calcul
Effectivement, je me suis un peu planté. Du coup, ça devient beaucoup plus apréciable, même pour des grands nombres
Code envoyé, mais je ne mets que 0.6s pour un graph 1000x1000
Code envoyé
Waou 0,6s je veux bien voir la partie calcul NB premier 🙂 mais bon faut que je change de pc aussi je pense 😉
Pour le PC, j'ai un i5, ça peut aider.
Pour les nombres premier, c'est pas compliqué, si c'est pas un multiple d'un nombre antérieur, c'est premier.
Tu pourrais encore optimiser ton code
Euh... Il existe une fonction native sous LV qui permet de vérifier si un nombre est premier... Non ?
Bon je suis aussi a - de 1s je faisais 2000x2000 et pas 1000x1000 d'où le tps et j'ai optimisé un peu sinon la fonction LV ça simplifie bcp la vie faut que je teste ce soir suis au taf la
Code envoyé.
sur un i7 à 3.6GHz :
Salut à tous,
j'obtiens un truc dans le genre, ça vous parle???
Le challenge est double pour moi car je n'avais pas participé au challenge de la spirale de nombres, j'ai donc du commencer par là. Ça, c'est fait, maintenant l'affichage en XY des nombres premiers de la spirale, mais je ne vois pas d'image
Oui, ça resemble à ça, il faut juste enlever le cadrillage du graph XY
Merci Nico
J'enlève le cadrillage, j'optimise mon code, je commente, puis je participe
Jolie le tableau. Ca doit prendre du temps, à la craie
Ouah, vous êtes tous hyper rapides !! Je mets entre 18s et 19s juste pour un 200x200 !
Joke, tu as des conseils à donner pour de belles interfaces????
Ou alors tu as juste un truc dans ta souris qui te donne du "peps" et met de la couleur et de la structure un peu partout
Salut Phil, salut tout le monde. il suffit de créer un bouton (par exemple) sur la face avant puis clic droit (sur le bouton), "avancé" puis "personnaliser". J'ai récemment créer des controles (commandes) avec des gifs annimés.l'IHM devient alors plus parlante (et agréable) pour l'utilisateur. Il y a quelques temps, j'avais trouvé des commandes Labview un peu stylisées sur le tres bon site devellopez.com ( sans faire de pub ). Sinon quelq'un a essayé de mettre en valeur les autres nombres (pas premier) avec leur quantité de diviseurs? (comme dans la spirale d'ulam en bleu dans l'énoncé)
Salut tout le monde
Pour les temps d'exécution avec un i5 2,8GHz:
1000*1000 : 77ms
2000*2000 : 324 ms
Pour la spirale d'Ulam, les temps sont un peu plus long (le temps de calculer les diviseurs):
1000*1000 : 11817ms
2000*2000 :71068ms
Pour le moment pour mettre les diviseurs en valeurs j'utilise un graphe d'intensité:
Code envoyé au passage
Code bien recu, bravo pour la mise en valeur des diviseurs, on voit vraiment le pattern apparaitre !
Heu, je ne trouve pas la fonction native de LV pour savoir si un nombre est premier, vous avez un truc pour la trouver?
J'ai LV complet (mais version 2014)!!
Ou alors, il faut que j'optimise celle que j'ai faite parce que là, pour une matrice de 1000x1000, il me faut 7 minutes de calculs avant de pouvoir afficher le graphe XY ... mais ça marche, faut juste être patient
Normalement, sur un diagramme quelconque, tu peux faire "ctrl+espace", puis dans la barre de recherche, tu peux taper "nombre premier" (ou "prime number" si tu utilises LabVIEW in English). Ensuite, tu selectionne le bon vi (il ne devrait y en avoir qu'un...) puis tu appuies Enter !
Merci Bilsix,
Je viens d'apprendre un truc, le ctrl+espace sur le diagramme, merci
Par contre, LV construit une liste, et quand j'interroge avec "prime", ça ne donne rien, et avec "premier", LV me propose MON vi, je suis un peu déçu
Je n'aurais pas cette fonction native donc; je vais devoir optimiser , ça me fera un excellent exercice, ça fait des challenges à tiroirs
Le ctrl+espace est sans nul doute le raccourci clavier le plus utile de tous les temps ! (comment ça "j'exagère un peu" ?)
Le vi "Prime Number" n'était peut-être pas présent dans LabVIEW 14 (je travaille actuellement avec le 16). Mais on peut s'arranger en MP... En plus le vi n'est même pas "verrouillé par un mot de passe" (comme certains vi natifs sous LabVIEW), du coup je peux te l'envoyer en étant certain qu'il ne fait pas référence à d'autres vi (qui pourraient possiblement ne pas être présents dans LaVIEW 14) !
Finalement, je ne suis pas sur qu'on puisse envoyer un vi en MP, donc je passe par un snippet, c'est plus simple, et puis tout le monde peut y avoir accès. Il te suffit d'enregistrer sur ton ordi l'image que j'ai envoyée ci-dessus, d'ouvrir l'explorateur à l'endroit ou il y a l'image, de la faire glisser sur un diagramme vide et... d'observer la magie opérer !
Merci Bilsix, je vais essayer le drag and drop sur un diagramme, j'aime la magie
Mais je vais tout de même essayer d'optimiser mon code histoire de m'amuser un peu, puis comme exercice aussi, mais sans laisser passer la date limite pour le challenge
Bhuuu, ça n'a rien fait
Mais l'image est floue (ou trop petite), difficile de comprendre le code dans ces conditions, dommage!!!
Code envoyé
code envoyé
J'ai reçu une deuxième version de Didier_Bleses. Merci, il est vraiment très abouti sur l'analyse du graph et la mise en avant des patterns. Intéressant a télécharger à la fin du mois.
Plus que quelques jours
Le mois est terminé, il est temps de partager les codes et de remporter un Livre LabVIEW
Voici les codes participants, tout le monde a réussi. Si vous n'êtes pas dans la liste, dites le moi.
Prochain tirage du loto est Samedi 5. Nous prendrons le numéro chance pour départager sachant qu'il y a 8 participants. Si 9 ou 10 alors nous attendrons le suivant.
Dites moi aussi si vous laissez la chance à quelqu'un d'autre de remporter le Livre. (D'ailleurs un autre type de prix est en prévision pour l'année prochaine.)
1 et 1b -defis_37_ghost67280.vi | ok | |||||
2 - ch37_NicoEMC.vi | ok | |||||
3 - Ch37_FLBP.vi | ok | |||||
4 - ch37_Bleses_V2 | ok avec diviseurs et modifications en temps réel | |||||
5 - Challenge 37 David-K | ok avec diviseurs mis en avant | |||||
6 - CM37_Bilsix | ok | |||||
7 - PhilB58 | ok | |||||
8 - Beno72_ch37.vi | ok |
Merci pour les codes, tout le monde a réalisé des algorithmes assez différents pour y arriver. Toujours inspirant.
En tout cas bravo a Bleses, voivi un appercu de sa face avant. Il a qui a fait pas mal d'efforts pour fournir une présentation en mode diviseurs en temps réel
Hate de découvrir vos codes super-rapides !
Emmanuel, comme en témoigne mon avatar, j'ai déjà eu le bonheur d'être tiré au sort, je laisse donc plus de chance aux autres en me retirant du tirage.
hahaha super l'avatar ! c'est noté
Codes en ligne en dessous de l'énoncé
Je laisse aussi ma chance à ceux qui n'ont pas encore le livre.
Merci pour les code publiés.
Ayant déja eu le livre 2 fois, je passe mon tour pour le tirage.
Pas de gagnant pour ce challenge??
Oui oui en effet, j'étais juste un peu chargé depuis lundi.
Alors suivant ce qui a été défini, le tirage de samedi 5 novembre a donné le numéro chance 5
En tenant compte des passages de tours de chacun, voici le tableau décallé :
Ordre | ||||
1 | 1 et 1b -defis_37_ghost67280.vi | ok | ||
2 | 3 - Ch37_FLBP.vi | ok | ||
3 | 5 - Challenge 37 David-K | ok avec diviseurs mis en avant | ||
4 | 7 - PhilB58 | ok | ||
5 | 8 - Beno72_ch37.vi | ok | ||
Passent leur tour | ||||
2 - ch37_NicoEMC.vi | ok | |||
4 - ch37_Bleses_V2 | ok avec diviseurs et modifications en temps réel | |||
6 - CM37_Bilsix | ok |
Le gagnant est donc Beno72
En tout cas encore merci pour les codes qui pourront servir à de nombreux développeurs LabVIEW debutants ou expérimentés comme base de trucs et astuces. Même mes codes les plus simples sont parfois faits avec une variante de logique profitable.
Ouah, j y croyais pas du tout. Un grand merci aux trois désistements.