Curriculum and Labs for Engineering Education

cancel
Showing results for 
Search instead for 
Did you mean: 

Challenge mathématique #35 : L’image miroir des nombres

1234321 !

Défi de juillet-Aout, bientôt des vacances !

(je poste le défi un peu en avance...)

A gagner cette fois le Livre LabVIEW de chez Dunod de plus de 430 pages

Pour participer c'est très simple, il suffit de créer un petit VI LabVIEW nommé Challenge 35_votre speudo.vi et de me l'envoyer à emmanuel.roset@ni.com avant le 31 Aout. (Pensez à poster un "code envoyé" pour vérifier la boite mail)

Un défi complémentaire est proposé pour ceux qui veulent jongler encore plus avec les chiffres.

Pensez à participer à la discussion pour partager vos soucis ou expériences sur ce défi et de poster un "code envoyé" pour être certain que les filtres emails me permettent d'oublier personne 

Voici le défi des vacances :

On appelle l'image miroir d'un nombre, le nombre lu à l'envers. Par exemple, l'image miroir de 324 est 423.

Un nombre est un palindrome s'il est égal à son image miroir. Par exemple, 52325, ou 6446 sont des palindromes.

À partir d'un nombre de départ, nous pouvons l'ajouter à son image miroir, afin d'obtenir un nouveau nombre, puis recommencer avec ce nouveau nombre jusqu'à obtenir un premier palindrome. À ce nombre de départ correspondent ainsi 2 valeurs : le palindrome obtenu, ainsi que le nombre d'addition qu'il a fallu faire pour l'obtenir. (Son indice)

Par exemple, pour le nombre de départ 475, nous obtenons :

        475 + 574 = 1049

        1049 + 9401 = 10450

        10450 + 5401 = 15851

Le dernier nombre, 15851, est un palindrome. Pour le nombre de départ 475, nous atteignons donc le palindrome 15851 en 3 étapes.

Dans ce challenge, l'entrée du VI sera constituée nombres choisis aléatoirement entre 100 et 1000.

Vous devez répondre en donnant la valeur du premier palindrome obtenu, et le nombre d'étapes.

Vous avez l'assurance que pour tout nombre de départ proposé, vous atteindrez forcément un palindrome en au plus 100 additions.

Pour la validation du défi, les valeurs de départ seront choisies pour ne pas entrer en dépassement de la capacité des types de données.

Par exemple, si l’entrée de commande (du type de votre choix) est constituée de valeurs telles que :

        (844, 970, 395, 287)

Vous devrez envoyer en retour dans deux indicateurs (du type de votre choix) des valeurs correspondantes telles que :

        [[7337, 3] , [15851, 3] , [881188, 7] , [233332, 7]]

Cette étape sera suffisante pour valider le challenge et être éligible pour le prix

Défi complémentaire :


Pour les plus aventureux d’entre vous (comme je l’ai fait dans des tests), un défi complémentaire serai de trouver le plus grand palindrome contenu dans les 100 premières additions, pour les chiffres de 100 à 1000. Donc non plus le premier mais le dernier. La sortie serai alors un tableau des palindromes les plus grands, et un tableau des indices.

Pour les super challengers :

Et pourquoi pas essayer de savoir s’il existe un nombre de départ des auto-additions qui permettent de constituer le chiffre de 12345678987654321.  (Qui est par ailleurs la multiplication de 111 111 111 x 111 111 111)

Bon défi

Posez des questions si besoin

Comments
ouadji
Trusted Enthusiast
Trusted Enthusiast
on

Bonjour Emmanuel,

" Vous avez l'assurance que pour tout nombre de départ proposé, vous atteindrez forcément un palindrome en au plus 100 additions.

Les additions obtenues ne sont alors pas en dépassement de la capacité des types de données. "

si tu prends le cas de "196", tu dépasses un U64 à la 39eme addition ... sans avoir trouvé le 1er palindrome.

Pour trouver le 1er palindrome de 196 (si il existe) il va falloir utiliser une gestion des "grands nombres".

Et 196 n'est pas le seul entre 100 et 1000 (196, 295, 394, 493 ... il y en a d'autres)

ou alors je n'ai pas compris. (toujours possible)

autrement dit,

Au départ de 196, et par additions successives du nombre miroir, soit : 196+691=887 ; 887+788=1675 ; 1675+5761 ... etc

aurais-tu un palindrome qui "tient" sur un U64 ?

emmanuel-fr
Member
Member
on

Bonjour,

En effet les chiffres peuvent croitre très vite si on fait des additions, cependant ce que je voulais dire c'est que les chiffres de départ pour la validation seront comme dans les examples donnés, choisis pour ne pas entrer en dépassement. Il y en a beaucoup qui sont dans les 10 premiers par exemple. J'ai mis ainsi la limite à 100 pour être plus général et vague. Je vais changer ma phrase pour être plus clair, merci.

Cette "option" simplifiée est destinée à pour ceux que les additions sur grands nombres rebutent et ainsi ils peuvent participer pour obtenir le livre.

Mais c'est vrai que c'est plus fun de pouvoir aller plus loin et utiliser des additions sur des grand nombres et ainsi chercher plus de correspondances jusqu'à la limite mémoire ou le temps de calcul.

ouadji
Trusted Enthusiast
Trusted Enthusiast
on

ok, Emmanuel, compris. (merci)

Je suis trop curieux de voir où se trouve le palindrome de notre "196"  .. je vais bosser sur une solution "grands nombres".

PS : accessoirement, pour le challenge #33 (avec la suite de Fibonacci) je ne vois pas en pièce jointe la distribution de l'ensemble des codes. On y traite des grands nombres, cela pourrait aider ceux ou celles qui aimeraient essayer d'implémenter une solution "plus ouverte".

Bonne journée Emmanuel.

emmanuel-fr
Member
Member
on

A priori ils sont bien publiés en pièce jointe, peut être faut il rafraichir le cache du browser pour les voir ?

Code réponses challenge Mai 2016.zip (247.3 K)

Effectivement les derniers défis ont utilisés des grands nombres et c'est le but de ces challenges de fournir du code utile pour tous avec des astuces.

Merci Ouadj d'ailleurs pour ces contributions avec des codes toujours poussés et clairs

ouadji
Trusted Enthusiast
Trusted Enthusiast
on

" avec des codes toujours poussés et clairs "

arrête  ... je vais devoir acheter une pelle pour faire un trou et me cacher dedans. 

Je fais juste "mon possible".

ouadji
Trusted Enthusiast
Trusted Enthusiast
on
ouadji
Trusted Enthusiast
Trusted Enthusiast
on

une question :

un nombre qui est dès le départ un palindrome peut-il (ou non) être lui-même considéré comme sa propre 1ere bonne réponse  ? (avec dans ce cas : nombre d'additions = 0)

exemple : ... le nombre 5

Faut-il au minimum 1 addition ? ... le 1ere palindrome de 5 ne serait pas 5 lui-même, mais 11.

Est-ce bien cela ... 1 addition minimum ?

(j'en suis quasi convaincu, mais j'aimerais avoir confirmation, merci Emmanuel)

Pierre-Alexis
Member
Member
on

Ah j'ai fait plus simple, j'ai considéré tout palyndrome d'entrée comme étant déjà un palyndrome. Appelons un chat un chat!

Quand aux chiffres qui croissent trop rapidement, n'y aurait il pas un moyen de les traiter en string, en additionnant caractère par caractère et en considérant une retenue comme un incrément du caractère suivant? De la même manière qu'on apprend les additions à l'école, en commençant par le dernier caractère. Evidemment il y aura toujours des limites mémoires, mais elles seraient bien plus élevées.

Que dites vous de cette idée, le jeu en vaut il la chandelle? Ou est ce à abandonner de suite?

Ingénieur Instrumentation Michelin
Certifié CLD
ouadji
Trusted Enthusiast
Trusted Enthusiast
on

" ... De la même manière qu'on apprend les additions à l'école, en commençant par le dernier caractère "

si ... bien sur qu'il y a moyen. 

Il ne faut pas partir d'un string et agir caractère par caractère ... personnellement, je travaille avec un Tableau de U32 et j'effectue mon addition comme si je me trouvais en "base 1E+9" .. et j'ai une retenue comme une addition en base 10. Cela fonctionne tip-top et me permet de ne pas avoir de limites quant à la taille du nombre (mis à part les limites mémoire du PC)

" Ou est ce à abandonner de suite? "

abandonner ? non, certainement pas ... (mis à part quelques modifs ... pas un string mais un Tableau de numériques)

Cette façon de faire est la seule manière d"accéder aux "grands nombres" (quasi sans limites)

"J'ai fait plus simple ... j'ai considéré tout palyndrome d'entrée comme étant déjà un palyndrome"

oui, par définition qu'un chat est un chat.

Mais un palindrome "immédiat" n'est pas un palindrome par "addition successives du nombre miroir"

Juste mon avis ... Emmanuel précisera ...

De toute façon la différence de code entre l'un et l'autre est minime.

emmanuel-fr
Member
Member
on

Bonjour, voici les réponses:

- Dans l'énoncé, la valeur d'entrée est indiquée de 3 chiffres au départ (>100) donc pas besoin de se préoccuper des premières valeurs unitaires type 5. (Cette question était prévue)

- Toutes les valeurs de départ sont éventuellement possibles en entrée donc peuvent être déjà un palindrome ou pas.

- Le premier palindrome d'inversion miroir possible sera en une étape, par exemple 100 donne [101, 1] qui est le premier des 90 parlindromes implicites à 3 chiffres. Donc il faudra au moins une inversion miroir. Pas besoin d'analyser la valeur d'entrée pour savoir si elle est elle même un palindrome implicite. Par ex. 101 donne [202,1]. Le but est d'utiliser (et écrire) l'algorithme miroir qui analyse ensuite si le nombre obtenu est un palindrome ou pas.

Pierre-Alexis
Member
Member
on

Bien vu les tableaux Ouadji, et bien plus simple qu'un string sur de nombreux points!

Mon token LabVIEW est expiré, je vais devoir attendre le nouveau pour continuer à coder

Je reviendrai t'embêter si j'ai des soucis

Bon week end à vous tous

Ingénieur Instrumentation Michelin
Certifié CLD
PhilB58
Active Participant
Active Participant
on

salut à tous,

voilà, j'ai mon code, et j'ai utilisé des strings, pour diverses raisons dont les outils qui accompagnent LabView et qui me plaisent bien.
J'ai dû créer un sous-VI pour facilité la lecture du VI principal ... qui en est devenu simple du coup

J'affiche le résultat (palindrome) sous forme de string, cela pose un problème????
Merci

ouadji
Trusted Enthusiast
Trusted Enthusiast
on

@PhilB58 : " J'affiche le résultat (palindrome) sous forme de string, cela pose un problème ? "

Pour moi, non, pas de problème ... l'énoncé stipule ceci :

" vous devrez envoyer en retour dans deux indicateurs (du type de votre choix) des valeurs ... etc ... "

Donc, cela me semble clair, tu peux "sortir" le résultat sous la forme que tu désires.

Moi-même, je rentre et je sors les données sous forme de string.

Pour visualiser un grand nombre (>U64), un string est nettement plus "accessible" qu'un Tableau de U32.

PhilB58
Active Participant
Active Participant
on

Merci Ouadji

En effet, même en U64, on est vite dépassé dans ce challenge, j'ai aussi opté pour des strings pour cette raison.

Et en parlant de string, quelle en est la limite en longueur sous LabView, jen'ai pas trouvé d'info, ou je suis passé à côté!!??!!

Edit: je viens de tester avec 196, je n'ai pas trouvé de palindrome; par contre, ma chaine de caractère a atteint plus de 4000 caractères, puis j'ai stopé la recherche!
Faut savoir aussi que plus le résultat de l'addition est long (de nombreux chiffres ou caractères) moins on a de probabilité de trouver un palindrome, même si cette probabilité n'est pas nulle!

ouadji
Trusted Enthusiast
Trusted Enthusiast
on

longueur maximum d'un string sous labVIEW .... en principe 2^32 caractères.

http://digital.ni.com/public.nsf/allkb/D7DE361F72CAC11F86256FC500099D2B

PS :

pour 196 tu ne trouveras pas. C'est "un vieux problème" ce 196.

Il y en a beaucoup d'autres, mais 196 est le plus petit nombre dont on a jamais trouvé de palindrome.

On appelle ces nombres les nombres de Lyrchel  https://fr.wikipedia.org/wiki/Nombre_de_Lychrel

Pour "196" ... abandonne

en 2006 une recherche a atteind les 300 millions de caractères (un nombre avec 3E+8 chiffres) .... sans jamais trouver de palindrome.

PhilB58
Active Participant
Active Participant
on

Ok pour l'info

Je testais le 196 pour voir jusqu'où mon code pouvait aller, j'ai perdu patience avant lui

ouadji
Trusted Enthusiast
Trusted Enthusiast
on

Un d'entre vous aurait-il eu "un écho" concernant le nombre "12345678987654321" ?? (défi complémentaire n°2)

soit avoir une chance de fou ... dans ce cas, je conseille de faire un Lotto immédiatement

soit une "méthode x" ... je suis sceptique, je n'y crois pas trop.

... car avec une approche "force brute", il me faudrait minimum 5.000 ans.

et pour rendre une solution avant le 31 août, ça va faire un peu "juste" 

PhilB58
Active Participant
Active Participant
on

Je ne me suis pas encore penché sur ces challenges complémentaires, mais ma curiosité est piquée, je vais donc y consacrer un peu de temps

J'avais une question concernant mon vi avec sous-vi:
J'ai développé mon code à la maison et j'y ai bien sûr développé mon sous-vi également, je m'envoie le vi principal ici au boulot pour le transférér à Emmanuel, mais je constate que mon sous-vi manque.

Comment dois-je faire pour que mon sous-vi suive mon vi principal?

Désolé, je suis novice dans LV, j'ai encore plein de choses à connaitre

emmanuel-fr
Member
Member
on

Pas de soucis, il y a plusieurs méthodes pour cela. Le plus simple est de faire un Zip des VIs personnalisés (en nommant "Main" son VI principal) et d'envoyer le ZIP complet. En effet les sous-VI dépendant qui ne sont pas déjà dans la blibliothèque LabVIEW (VI.LIB) doivent être copié manuellement car LabVIEW ne les connait pas.

Une autre méthode est d'utiliser systèmatiquement un fichier Projet et d'y placer ces sous-VI. Le principe est le même (il y aura des fichiers indépendant sur le disque) mais cela évite de les oublier et les perdre. En ajout à cette méthode, si vous avez la version Pro ou l'Application Builder alors vous pouvez créer une "distribution de code source", ajouter la liste des VI, Sous-VI + doc etc.. C'est un outil dédié au partage de code source avec un collègue par ex. pour ne rien oublier et avoir un message de Sous-VI manquant.

Sebastien_D
Member
Member
on

Salut,

J'ai fini le premier  défi et je m'attaque aux défis complémentaires. Ouadji, si tu as déjà fini, je te propose qu'on échange des résultats? Je n'ai pas envie de vérifier "à la main" si mon programme a raison Voici mes résultats pour différentes entrées :

Résultats Challenge complémentaire 1

Capture.JPG

Concernant le challenge complémentaire 2, je ne trouve pas pour l'instant de méthode vraiment mathématique.... alors je pars de 12345678987654321 et je décrémente et teste si la somme du nombre et de son miroir forment le chiffre. Ca tourne depuis quelques minutes déjà, je posterai si j'ai un résultat !

ouadji
Trusted Enthusiast
Trusted Enthusiast
on

@ Sebastien_ D :

Je confirme Sébastien, j'ai les mêmes résultats, super.

Pour tester son code : http://jasondoucette.com/worldrecords.html#solved

Pour le défi complémentaire n° 2 (N = 12345678987654321) ...

toi tu décrémentes ... et moi j'incrémente (hihi).

Je suis arrivé à 16.200.000.000 .... à chaque fois je stoppe les additions quand le résultat de l'addition est supérieur à N.

Et je n'ai toujours pas trouvé un "nombre_origine" qui aboutit a ce palindrome N.

Rien ne dit que ce nombre existe. Au feeling ... il y a pas mal d'infos (et de fous à ce sujet ) sur le Net.

Ce nombre "12345678987654321" est un nombre "particulier".

Je ne sais pas ... mais si ce palindrome avait un "nombre_origine" ... il me semble que l'on en parlerait sur le net.

Or ... pas de trace de ce N ... j'ai un doute sur l'existence d'un "nombre_origine".

De plus, en "force brute", j'aurais besoin de 2 ou 3.000 ans pour tout scanner !!! (minimum)

Emmanuel, pourrais-tu "reculer" l'échéance du 31 août de 3.000 ans ? (à l'avance, merci    )

ouadji
Trusted Enthusiast
Trusted Enthusiast
on

@ Sebastien_D :

et celui-ci ... si tu as celui-là, tu les as tous 

nombre de départ   : 1186060307891929990

nombre d'additions : 261

palindrome : 44562665878976437622437848976653870388884783662598425855963436955852489526638748888307835667984873422673467987856626544

emmanuel-fr
Member
Member
on

Ok Aout 3016 ! Mais je pense que les ordinateurs seront plus puissants d'ici là donc on peut encore réduire la durée.

Je ne sais pas si quelqu'un a déjà essayé pour ce chiffre par la méthode mirroir, ca serai une première !

ouadji
Trusted Enthusiast
Trusted Enthusiast
on

par la méthode miroir ? ... hummm ... "tu m'intéresses là" ...

explique un peu plus à quel type d'approche (algorithme) tu penses ?

mentalement, quelle est (serait) ta démarche ?

Sebastien_D
Member
Member
on

@Ouadji : Tu viens de secouer les foncdations de mon programme là ! Mon sous-VI qui transforme l'U64 en entrée en tableau de chiffres modifie certqins chiffres...aïe je vais devoir corriger ça ! Merci pour le défi

EDIT : VI corrigé ! Ca marche!

ouadji
Trusted Enthusiast
Trusted Enthusiast
on

@ Sebastien_D :

Je l'ai toujours dit ... quelque chose "qui fonctionne" n'a jamais fait avancer personne.

Toutes mes excuses d'avoir lâcher une  explosion_001.gif dans ton code Sébastien 

emmanuel-fr
Member
Member
on

Ouadj, rien de spécial, je voulais dire par cette méthode d'addition mirror qui sert de base au défi.

ouadji
Trusted Enthusiast
Trusted Enthusiast
on

Bonjour Emmanuel,

C'est ce que Sébastien et moi même faisons. Soit N la cible "12345678987654321". Lui part de N et il décrémente, et moi je suis parti de 1 et j'incrémente. A chaque nombre on effectue l'addition miroir en cascade et après chaque addition on vérifie si le résultat de cette addition est égal à N. Personnellement, je stoppe les additions quand son résultat est > à N. Le soucis est que N est de l'ordre de 12 millions de milliards ... et que même en égrenant les possibilités à raison de 100.000/sec, il faut quand près de 4.000 ans pour les passer toutes en revue ! J'ai testé tous les nombres de 1 à 16 milliards ..4 ou 5 nuits de PC non-stop. J'arrête ... ... je suis en train de chercher un trèfle à 5 feuilles.

Sebastien_D
Member
Member
on

En plus je ne pense pas que LabVIEW soit super-optimisé pour ce genre de calculs... Sur le site que @Ouadji a mis en lien, il parlait plutôt d'assembleur et de Fortran qui permettrait d'économiser quelques années de calcul (mais est ce que passer de 4000 à 2000 (voire 150) ans est vraiment un gain profitable ?).

Du coup j'ai commencé à réfléchir à une solution pour grandement réduire le nombre de possibilités et je crois que j'arrive à quelque chose d'intéressant ! Corrige moi si je fais une hypothèse fausse dans la suite!

On va écrire les nombres sous formes de vecteurs lignes pour "simplifier" la notation.

On note Y=12345678987654321 sous la forme [ Y17 Y16 Y15.....Y1] avec Y17=1, Y16=2, etc.

Soit X un nombre tel que la somme de X et Xmir (son miroir) soit égale à Y. On peut déduire que X est un nombre de 16 ou 17 chiffres, sinon X+Xmir ne serait pas un nombre de 17 chiffres.

On peut alors observer que chaque Yi est la somme de Xj, de X(17-j+1) [ou 16 si le X fait 16 chiffres) et de la retenue de l'addition précédente (à droite).

Si X est à 17 chiffres, on peut noter ses chiffres de X1 à X17.

On remarque alors que X9+X9(du miroir)+retenue=9 ou 19 (9 avec une retenue) (le chiffre "central" de 12345678987654321). Comme le double d'un chiffre est forcément pair, cela veut dire que l'opération précédente X8+X10(du miroir)+retenue=quelque chose >10, pour qu'il y ait une retenue qui déborde.

De l'autre côté, cela implique que X10+X8(du miroir)+retenue (si X9+X9+retenue=19)=qqchose au dessus de 10.

Et ainsi de suite.

Un raisonnement similaire est applicable si X est à 16 chiffres.

Il est ainsi possible de faire un arbre de décisions qui devrait donner un système d'équations permettant de résoudre le problème.

Ca me semble trop "simple" pour être vrai si d'autres se sont déjà cassés les dents dessus (même si pour l'instant je n'en ai pas trouvé de trace...).

Une autre méthode qui peut être intéressante est d'utiliser un algorithme génétique. Bref, il y a de quoi faire au lieu d'utiliser de la brute force pendant 4000 ans

J'essayerai la première méthode ce soir si j'ai le temps, et l'algo génétique sera pour plus tard !

ouadji
Trusted Enthusiast
Trusted Enthusiast
on

oui ... je suis (aussi) persuadé qu'il y a moyen de "rationaliser" la recherche.

Ton raisonnement est cohérent en soi ... il fait appel à une série de simples déductions logiques.

Le hic (à mon avis) sera la complexité du système d'équation à résoudre.

Je reconnais être un peu fainéant sur ce coup là 

mais bon ... si tu t'y colles ... je vais essayer de "bouger" aussi alors 

Mais sans réelle conviction ... intuitivement, je ne "sens" rien d'évident.

Mais il est vrai que de trouver la "dernière addition" serait la cléf.

Peut-être commencer avec une cible plus petite.

Trouver la (ou les) dernières additions pour arriver à une cible de 3 ou 4 chiffres.

Sans "brute force" ... 100% via un algorithme.

Je vais réfléchir à ça.

PhilB58
Active Participant
Active Participant
on

Code envoyé

emmanuel-fr
Member
Member
on

Bonjour PhilB58, je n'ai rien recu dans ma boite mail

voici les pseudos des codes que j'ai déjà recu :

1 - ch35_lulu44.vi
2 - Challenge 35_JFI
Sebastien_D
Member
Member
on

@ Ouadji : Je reviens avec une bonne et des mauvaises nouvelles !

La bonne : Ma méthode marche. Je l'ai testée avec 1234321 et je trouve 2 équations qui me donnent 12 solutions. C'est vérifié par mon programme LabVIEW (résultats en PJ)

Capture.JPG

Les mauvaises : En testant avec mon programme, je remarque que les palindromes "escaliers" dont le chiffre central est impair ne semblent pas avoir d'origine par auto-addition miroir.

Ex : 121, 1234321, 12345654321 marchent (testés), mais 12321 et 123454321 ne marchent pas (aussi testés). La coïncidence me semble trop grosse pour n'être qu'un hasard !

Même si ça ne fait pas beaucoup d'échantillons pour tester, je pense malheureusement qu'il n'y a pas de solution

ouadji
Trusted Enthusiast
Trusted Enthusiast
on

bravo pour les résultats.

Je suis en train de regarder la 1/2 finale de l'Euro ... je pensais me pencher sur le sujet "en nocturne" ...

... tu as été trop rapide sur ce coup là.

et si je dois être honnête ... je serais bien intéressé de voir ton code ! (il pique ma curiosité )

Sebastien_D
Member
Member
on

C'est dans tes mails

ouadji
Trusted Enthusiast
Trusted Enthusiast
on

ok, merci Sébastien.

pouce-haut.gif

histoire "d'équilibrer" je t'ai envoyé le mien. J'ai jeté un coup d'oeil au tien ... joli code.

C'est très amusant de voir comment "les choses" peuvent être abordées (résolues) de façons différentes.

Un même problème, deux gars ... 2 codes complètement différents (c'est intéressant)

ouadji
Trusted Enthusiast
Trusted Enthusiast
on

J'ai également fait de multiples essais ... même constat que toi.

(bravo d'avoir découvert cette "propriété" ... qui semble bien se confirmer)

Les palindromes qui comportent un nombre impair de chiffres et dont le chiffre "central" est impair,

ne semblent pas avoir de solution "addition-miroir".

Si cela est ... notre 12345678987654321 serait un palindrome qui ne possède aucune solution par "additions-miroir".

L'idée "de base" pour arriver à cette conclusion est de toi Sébastien ... et là je dis : respect !  

Par contre, si je remplace le "9" par un "8" .... soit : 12345678887654321

j'ai une réponse sans soucis : 12345678400000000

(12345678400000000 + 487654321 = 12345678887654321)

Sebastien_D
Member
Member
on

Il ne reste plus qu'à prouver cette idée et la médaille Fields est à moi

Très très beau code, propre, avec gestion des erreurs et des événements, bravo ! Mes petits projets en école d'ingé ne m'ont pas encore poussé à faire quelque chose d'aussi propre et stable, mais ça viendra avec le temps j'espère !

PhilB58
Active Participant
Active Participant
on

@ Emmanuel,

j'ai envoyé mon code une nouvelle fois aujourd'hui, mais il y a deux Vi contenus dans un .Zip, peut-être que ta boite bloque le message par sécurité???!!!??

Si tu n'as rien reçu aujourd'hui, j'enverrai un message avec les Vi non zippés, ça devrait passer.

Merci

emmanuel-fr
Member
Member
on

Bravo Sebastien_D pour la découverte, bien joué pour la recherche en commencant par 1234321 etc.. Je ne suis pas étonné des "trous" dans les valeurs c'est souvant le cas dans les suites pas facile a voir dans un premier temps.

Il y a un autre petit essai intéressant sur les valeurs qui se suivent 123456789... c'est 1/(9.. ^2), soit 1/81 etc... ca n'a rien a voir mais on est dans le même thème. Il manque des valeurs aussi a certains endroits.

Image1.png

Image2.png

emmanuel-fr
Member
Member
on

@PhilB58, je n'ai toujours rien recu, ni dans les courriers indesirables ou bloqués. En général je reçois tout ou presque, zip, .vi, images, etc.

PhilB58
Active Participant
Active Participant
on

Code envoyé une troisième fois sous forme non compressée et après nettoyage de ma messagerie!

En espérant que ça passe cette fois-ci

Sebastien_D
Member
Member
on

Pour ceux que ça intéresse, un petit thread sur 196 et sur les palindromes en général :http://mathoverflow.net/questions/117104/status-of-the-196-conjecture

Vers le bas du thread, un membre a posté (avec la formulation mathématique et rigoureuse) la"méthode" que j'ai utilisée pour montrer que 1234321 a un antécédent mais pas 12321 par exemple.

Petite question concernant les grands nombres: d'après vous (en particulier Ouadji et Emmanuel), quelle est la méthode la plus efficace (en terme d'opérations CPU, pas en terme de simplicité d'utilisation sur LabVIEW) pour gérer les grands nombres : String ou tableaux d'entiers ? J'utilise uniquement les tableaux parce qu'intuitivement (pour moi en tout cas) c'est plus facile à gérer et que les strings sont lourds en mémoire, mais je me base peut-être sur de fausses informations. Il me semble qu'Ouadji jongle un peu avec les deux, donc je ne sais plus quoi croire

ouadji
Trusted Enthusiast
Trusted Enthusiast
on

ouadji "jongle" avec les 2 ...

Quand je fais une addition, j'utilise un Tableau ... mais un Tableau de U32

Je fais mon addition de "façon traditionnelle" ... mais en considérant que je suis en base 1E+9.

Donc chaque U32 pourra contenir un nombre de 0 à 999.999.999

Mes U32 doivent obligatoirement afficher 9 digits (pour visualiser le résultat de façon correcte)

999.999.999 + 23 = 1.000.000.022

Mon Tableau_résultat me donnera :

U32 n°0 : 000000022

U32 n°1 : 000000001

Pour moi, au niveau de l'addition, utiliser un Tableau de U32 (et travailler en base 1E+9) est la meilleure solution.

Maintenant ... pour calculer le nombre miroir

Cette histoire du nombre miroir est un cas particulier, ce n'est pas un réel calcul, c'est une transformation ... et qui pour moi est d'avantage d'ordre géométrique (visuel) que arithmétique. Retourner un nombre quand il est sous la forme d'un Tableau de U32 n'est pas évident. (000000022 / 000000001 doit devenir "200000001 / 000000002")

Pour ce cas particulier, passer par un String est nettement plus facile.

J'utilise les strings pour le nombre miroir et pour "l'interface utilisateur".

La représentation "string" étant directement (visuellement) plus accessible à la compréhension.

A part ces deux cas (qui ne sont pas de l'ordre du calcul à proprement parler),

pour faire de véritables opérations sur un grand nombre, pour moi, l'approche Tableau est la meilleure..

PS : pas mal du tout ton lien.

_jiheel
Member
Member
on

Bonjour à tous,

"code envoyé" sauf le "super challenge"

emmanuel-fr
Member
Member
on

Merci, encore quelqu'un d'actif en vacances

ouadji
Trusted Enthusiast
Trusted Enthusiast
on

voila, voila ... code envoyé ! 

Sebastien_D
Member
Member
on

Bon si tout le monde rend, je m'y mets aussi !

Code envoyé !

emmanuel-fr
Member
Member
on

Merci pour ces nouveaux codes

Yann_50
Member
Member
on

Bonjour, code envoyé.

le nombre 1186060307891929990 fonctionne donc ca devrait etre ok

Contributors