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.

Curriculum and Labs for Engineering Education

cancel
Showing results for 
Search instead for 
Did you mean: 

Challenge mathématique #50 : chercher des nombres complets

50e.png

Le 50eme défi résonne de manière particulière, c'est un nombre presque « complet »

 

Donc voici un petit défi dont l’énoncé est très simple.

 

Si on écrit pour un nombre « n » son carré et son cube sur une feuille, alors on pourra dire qu’il est complet si chacun des 10 chiffres de 0 à 9 est écrit au moins un fois.

 

Par exemple pour la valeur 69, son carré est 4761 et son cube 328509. Nous retrouvons exactement 1 fois chaque chiffre.

Pour 203 nous avons 41209 et 8365427. Il est complet et en plus [2,4] apparaissent 2 fois.

Enfin 356 par exemple n’est pas complet car il manque le 9.

 

Le défi est d’écrire un programme LabVIEW qui retourne un tableau d’indicateurs numériques avec les 1000 premières valeurs de nombres complets (d’ailleurs quel est le 1000e ?) je vous donne les 3 premiers pour l’exemple :

 

nombrs complets.png

 

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, mini lampe de poche porte clé, tapis de souris LabVIEW, etc…)

 

Pour participer envoyez simplement votre code LabVIEW (peu importe la version) renommé Ch50_NbComplet_Votre pseudo.vi avant le 1er Mai 2018 sur mon adresse emmanuel.roset@ni.com

 

Pour vérification des mails et liens avec votre pseudo, pouvez-vous mettre un commentaire sur la communauté lors de l’envoi. Merci.

 

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

 

Défi complémentaire :

Dernière question subsidiaire pour les plus forts. Existe-t-il un nombre super complet ? (Ça sonne comme une crêpe bretonne je sais Smiley Happy) C'est un nombre du tableau complet qui lui-même contient au moins une fois tous les chiffres de 0 à 5 ? (Sans commencer par 0) si oui, quel est le premier du tableau des nombres complets et son indice ? enfin en combien de temps pouvez-vous le trouver par programmation ? (vous comprendrez vite pourquoi pas de 0 à 9…a moins que vous ne souhaitiez tenter l'aventure)

 

Bon 50e challenge

Emmanuel

Comments
PhilB58
Active Participant
Active Participant
on

Bonjour à tous,

je ne veux rien dire mais 135 ne me parait pas complet Smiley Frustrated

Pour 135, son carré est 18225 et sont cube est 2460375.

Il manque le 9
C'est en faisant tourner mon Vi que je m'en suis rendu compte, je pensais avoir fait une erreur quelque part Smiley Very Happy

Je trouve 5361 comme millième nombre complet (mais je peux me tromper).

Pour avoir reçu les goodies, ils sont sympa 🙂 mais bon, je laisse ma place pour le tirage 😉

ben64
Trusted Enthusiast
Trusted Enthusiast
on

Je trouve 7389 comme millième nombre complet mais il est bien possible que je me trompe également!

PhilB58
Active Participant
Active Participant
on

perso, je commence le décompte à 0, c'est peut-être ça la différence???!!??
Encore que je serai étonné qu'il n'y ait pas de nombre complet entre 5361 et 7389!
Je n'ai pas mon Vi ici, je testerai et reverrai ma copie lundi, mais en attendant, 135 n'est pas un nombre complet ou alors j'ai du travail de révision des maths en perspective Smiley Very Happy

ben64
Trusted Enthusiast
Trusted Enthusiast
on

Je commence le décompte à zéro également et je retrouve 7389 à l'indice 999 de mon tableau. 5361 ne semble pas être un nombre complet car on ne retrouve pas le chiffre 9 (5361^2 = 28 740 321 et 5361^3 = 154 076 860 881). Attention à la représentation utilisée, 154 076 860 881 est supérieur à la valeur maximale I32 et U32.

PhilB58
Active Participant
Active Participant
on

Hum, oui, j'avais un doute là dessus quand j'ai fait mon Vi, mais je n'ai pas eu le temps de tester plus que ça et un doute m'a effleuré après que j'aie mis mon premier message ici!
Il semble que mon soucis vienne probablement de là, bien vu 😉

ben64
Trusted Enthusiast
Trusted Enthusiast
on

Comme premier nombre super complet contenant les chiffres de 0 à 9 je trouve 1023456789 à l'indice 820536404 (si je n'ai pas fait d'erreur bien sûr). Comme mon code n'est pas optimisé pour la performance ce fût très long! N'essayez pas de construire un tableau jusque là, un tableau de 820 536 405 éléments U64 nécessite plus de 52.5 Go de mémoire!

PhilB58
Active Participant
Active Participant
on

Bonjour,

De retour sur mon Vi, j'ai épluché mes erreurs et je trouve maintenant 4781 comme 1000ème nombre complet (et 4781 est bien un complet contrairement à 5361 que j'avais pour première proposition).
Dans le doute, j'ai placé deux graphs qui me donnent l'évolution de mes nombres complet ainsi que leurs cubes, on voit que l'évolution est normale, pas de dépassement dû aux valeurs des cubes.
D'ailleurs, j'ai tout mis en U64 🙂
Je m'attaque au super complet

A+

PhilB58
Active Participant
Active Participant
on

Voilà,
Premier nombre super complet contenant 0 à 5, je trouve 102354 (et c'est bien un nombre complet aussi 😉 )
Je vais essayer 0 à 9 🙂
PS: Dommage qu'on ne puisse pas édité les messages Smiley Frustrated

Chpere
Member
Member
on

Bonjour,

Je trouve pareil que toi Phil avec pour millième nombre complet 4781 et pour premier nombre super complet 102354 qui est le 54000ème nombre complet Smiley Happy

Pour ce qui est d'un nombre contenant les chiffres de 0 à 9, j'ai lancé le programme et actuellement j'attends ...

ben64
Trusted Enthusiast
Trusted Enthusiast
on

Il semble que je vais devoir réviser mon vi Smiley Sad

PhilB58
Active Participant
Active Participant
on

oui, j'ai fini et trouve comme Chpere

nombre super complet avec 0 à 5 : 102354 indice : 54000 temps d'exécution : 108ms

nombre super complet avec 0 à 9 : 1023456789 indice : 934841214 temps d'exécution : 1319340ms

Les deux essais ont été fait sans tableau comme l'a précisé ben64, trop volumineux pour le 0 à 9 🙂

atchuuum
Member
Member
on
Bonjour, J'ai trouvé comme ben64, 7389 pour la 1000e valeur.
Leftrine
Member
Member
on

Bonjour, pour les nombres complets je trouve également 7389 pour la 1000e valeur.

Par contre, je ne suis peut-être pas doué, mais je ne comprend pas la différence entre les nombres complets et les supers complets. Quelqu'un pourrait-il m'expliquer?

merci d'avance

atchuuum
Member
Member
on
et pour le premier nombre super complet je trouve 102354 comme phil
PhilB58
Active Participant
Active Participant
on

@ LefTrine,

un nombre super complet, c'est un nombre qui se trouve dans la liste des nombres complets (ceux que tu trouves et que tu stockes dans ton tableau en réponse au challenge) mais qui lui-même est complet si on le prend seul sans son carré et sont cube et qu'il contient les chiffres imposés , 0 à 5 comme Emmanuel propose.
Je ne sais pas si je suis bien clair Smiley Very Happy

@ Atchuuum, nos résultats sont issus de nos algorithmes, ils sont sans doute similaires, mais peut-être pas justes finalement Smiley Frustrated
Faudra attendre un peu pour départager car j'ai beau retourner mon Vi dans tous les sens, je ne vois pas où ça pourrait coincer (mises à par mes pertes dues au départ parce que j'utilisais de I32).

ben64
Trusted Enthusiast
Trusted Enthusiast
on

Voici les 5 première valeurs que j'obtiens (69,128,203,302,327).

PhilB58
Active Participant
Active Participant
on

Salut Ben64,

j'ai la série (69,128,144,187,203), et après vérification, 144 et 187 sont bien des nombres complets et ils manquent dans ta série!! Smiley Frustrated

atchuuum
Member
Member
on

Salut PhilB58,

D’après ce que j'ai compris de l'exercice, 144 n'est pas dans les nombres complets.

144²=20736 et 144³=2985984, il manque le 1 selon moi.

 

Voir l'exemple donné par Emmanuel: "Par exemple pour la valeur 69, son carré est 4761 et son cube 328509. Nous retrouvons exactement 1 fois chaque chiffre."

PhilB58
Active Participant
Active Participant
on

Si, 144 est complet, tu retrouves tous les chiffres de 0 à 9, même si ils y sont plusieurs fois (puis dans 144, il y a 1 tout de même Smiley Wink); tu dois tenir compte du nombre de base également, donc 144, 20736 et 2985984 .. dans ces trois nombres tu trouves bien tous les chiffres de 0 à 9.
Si tu voulais chercher les 1000 premiers nombres complets qui n'ont qu'une seule fois 0, 1, 2, 3 ... 9, tu n'en trouverais jamais 1000 et ton Vi tournerait indéfiniment.
Le but est donc de trouver les nombres complets, donc qui contiennent au moins une fois chaque chiffre.

atchuuum
Member
Member
on

oui mais je ne prend pas 144 dans mon raisonnement, uniquement le carré et le cube.

Dans le cas du nombre 69, il y aurait 2 fois 6 et 2 fois 9 si on prend le nombre de base. "Nous retrouvons exactement 1 fois chaque chiffre."

Chpere
Member
Member
on

J'ai exactement la même série que Phil (69 128 144 183 203).

Chpere
Member
Member
on

Phil, je pense qu'on s'est trompé.

Il  ne faut prendre le chiffre de base mais uniquement le carré et le cube. En relisant l’énoncé c'est clair.

Merci Atchuuum

PhilB58
Active Participant
Active Participant
on

Ok, j'ai relu l'énoncé, il semble en effet que le nombre ne doit pas être pris en compte! Smiley Frustrated

Désolé pour ceux que j'ai "trompé" Smiley Surprised  ... je me suis trompé aussi tout seul Smiley Very Happy
Après modif de mon Vi, je trouve la série 69, 128, 203, 302, 327, 366, .... 

Julien_V.
Active Participant
Active Participant
on

Salut à tous,

 

Je trouve 7389 comme millième valeur et le début de la série est 69, 128, 203, 302, 327 ... (pas de 144 😉 ).

Cordialement,

Julien V.

[FIRST]

[LabVIEW Programming]


[FIRST]

Didier_Bleses
Member
Member
on

Premiers tests , je n'intègre pas le nombre n dans le test de la présence des chiffres :

  • 1000ieme valeur : 7389
  • nombre super complet avec 0 à 5 : 102354         indice : 36497         , temps d'exécution : 104 à 130 ms

  • nombre super complet avec 0 à 6 : 1023456       indice : 570757       , temps d'exécution : 1334 ms

  • nombre super complet avec 0 à 7 : 10234567     indice : 7319018     , temps d'exécution : 16 s
  • nombre super complet avec 0 à 8 : 102345678   indice : 84250897   , temps d'exécution : 196 s
  • nombre super complet avec 0 à 9 : 1023456789 indice : 913637850 , temps d'exécution : 2 330 s

J'ai pas trop cherché à optimiser le code de calcul.

 

ML927
Active Participant
Active Participant
on

Code envoyé 🙂

J'ai bien les mêmes résultats que tout le monde mais j'ai hâte de voir vos réalisations ainsi que les différentes optimisations !

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

Codes envoyés Smiley Wink
Mêmes résultats après correction de mon erreur de compréhension du challenge Smiley Very Happy

Julien_V.
Active Participant
Active Participant
on

Bonjour,

 

Code envoyé.

 

ps : je ne reçois pas les notifications mail des nouveaux messages du forum ...

Cordialement,

Julien V.

[FIRST]

[LabVIEW Programming]


[FIRST]

Chpere
Member
Member
on

Bonjour,

Code envoyé également Smiley Happy

 

 

nitad54448
Active Participant
Active Participant
on

Bonjour

Code envoyé,.. je trouve le 1000ème (7389) en 19 msec (sans rien optimiser). vous avez quoi en benchmark ?

(le 10^6 numéro je le trouve en 5592 msec)

cordialement

nd

Didier_Bleses
Member
Member
on

Code envoyé.

PhilB58
Active Participant
Active Participant
on

Pour info puisque ça en intéresse certains Smiley Happy

0 à 6 en 912ms

0 à 7 en 10s

0 à 8 en 103s

0 à 9 en 1116s
Mais ça dépend aussi du pc sur lequel tourne LV

Et pour info également, je ne reçois aucune notification non plus!!!

emmanuel-fr
Member
Member
on

Oula ! j'avais pas vu non plus les 32 messages ! je ne reçois plus non plus les notifications. Je vais regarder pourquoi du coté web.

(je me suis même dit que tout le monde était silencieux pour le 135...Smiley Happy)

 

Du coup pour le 135 de l'exemple, je n'ai pas eu le temps de réagir. C'est en effet une erreur. Il y en a qui suivent. Le 3e chiffre qui suit est celui proposé dans l'énoncé (203). Sinon je confirme que la recherche n'inclus pas le chiffre lui même.

 

C'est largement faisable en un seul VI. Cela fait juste intervenir des astuces de manipulation de données qui pourront servir à la communauté.

 

Pour le supercomplet de 0 à 9 c'est une autre histoire à cause des dépassements à moins de se limiter sur moins de chiffres

ML927
Active Participant
Active Participant
on

Juste hors discussion : je reçois bien les notifications que ce soit sur ce topic ou d'autres 😉

CLAMaxime -- Kudos are a great way to say thank you
ben64
Trusted Enthusiast
Trusted Enthusiast
on

J'obtiens des résultats comparables à Didier mais passé 0 à 6 je ne retrouve pas les nombres super complets aux mêmes indices.

  • nombre super complet avec 0 à 5 : 102354         indice : 36497         , temps d'exécution : 150 ms

    nombre super complet avec 0 à 6 : 1023456       indice : 570757       , temps d'exécution : 1450 ms

    nombre super complet avec 0 à 7 : 10234567     indice : 7148291     , temps d'exécution : 16 s
  • nombre super complet avec 0 à 8 : 102345678   indice : 77608212   , temps d'exécution : 161 s

    nombre super complet avec 0 à 9 : 1023456789 indice : 820536404 , temps d'exécution : 1666 s

 

PhilB58
Active Participant
Active Participant
on

pour info, j'ai les mêmes valeurs de nombres super complets et d'indice que Didier ... à moins que je me sois encore trompé Smiley Very Happy

nitad54448
Active Participant
Active Participant
on

Salut

J'ai re-écrit le même code en NXG, il me semble un peu plus rapide.

a+

N

PhilB58
Active Participant
Active Participant
on

Perso et après relecture des messages avec plus d'attention, je trouve tous les mêmes résutats que Ben64!!.
Décidément, trop motivé par le challenge et faute de temps, je lis entre les lignes et des choses m'échappent, faudrait que je fasses attention Smiley Embarassed

ben64
Trusted Enthusiast
Trusted Enthusiast
on

Bien content que Phil obtienne les mêmes résultats que moi, j'avais beau regarder attentivement mais je ne trouvais rien. Par curiosité Phil, qu'est-ce que tu as changé / interprété différemment?

PhilB58
Active Participant
Active Participant
on

Ben pas grand chose 🙂
En fait, au début, je m'étais trompé en prenant le nombre lui-même avec son carré et son cube pour déterminer s'il était Complet, et forcément j'avais tous les Complets comme toi, mais d'autres aussi en plus, et donc pas les mêmes indices non plus forcément.
Puis après correction, j'ai eu le même résultat que toi, mais en voyant ton message "J'obtiens des résultats comparables à Didier mais passé 0 à 6 je ne retrouve pas les nombres super complets aux mêmes indices" et n'ayant pas tout lu (distrait, pas le temps, ... ), j'ai cru qu'il y avait un couac dans mon Vi (ou le tiens) et j'ai donc cherché un moment d'où ça pouvait provenir.
....pour enfin me rendre compte qu je n'ai pas pris le temps de lire correctement ton message et qu'en définitve, nous avions les mêmes réponses.
Donc tout va bien dans nos Vi Smiley Very Happy

Et désolé pour tout ce désordre que j'ai créé Smiley Frustrated

 

emmanuel-fr
Member
Member
on

Bonjour,

J'ai vérifié avec notre service web, il est possible que certains ne reçoivent plus de notifications automatiquement depuis quelques jours (comme moi). Il faut juste vérifier que dans le menu Option en haut de page l'abonnement à la page soit bien validé. Sinon il faut aller dans les notifications dans le profil pour vérifier.

guillaumeMa
Member
Member
on

code partagé 😉

PhilB58
Active Participant
Active Participant
on

perso, je viens de vérifier mes abonnements et l'option au sujet, je suis bien abonné  ... mais ne reçois rien comme courrier d'avertissement!!!

emmanuel-fr
Member
Member
on

Pour l'abonnement il faut aller sur la page principale des challenges (https://forums.ni.com/t5/Challenges-LabVIEW-et-documents/tkb-p/8305) et aller dans Options pour s'abonner. Chez moi cela fonctionne

 

cristov222
Member
Member
on

Code envoyé.

 

LGC
Member
Member
on

Code envoyé !

Bilsix
NI Employee (retired)
on

Code envoyé !

Bilsix.
ben64
Trusted Enthusiast
Trusted Enthusiast
on

Code envoyé.

ML927
Active Participant
Active Participant
on

Des nouvelles de ce challenge ? J'aimerais bien voir les optimisations de chacun 🙂

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

Ah ben oui en effet. Avec les vacances c'est passé un peu de coté. Je viens de publier les réponses.

Pour le gagnant, nous tirerons au sort par le jeu du loto comme d'habitude. Je reviens vers vous pour les modalités et les attributions.

Contributors