1

Salut, on m'a posé une énigme recemment:

Déterminer un nombre entier constitué de tous les chiffres de 1 à 9 utilisés une et une seule fois qui vérifie la propriété suivante : le nombre formé par ses n premiers chiffres est divisible par n (n peut prendre toutes les valeurs entières de 1 à 9).

j'y ai réfléchi, et j'ai été amené a vouloir programmer en Basic un algo donnant toutes les permutations d'un nombre (pour un nombre de n chiffres, il y en a n!)

Mais je n'ai absolument pas su par ou commencé.

Alors je voudrais savoir, si vous connaissez une méthode pour retourner toutes les permutations, et si vous arrivez a résoudre l'énigme.

Merci
Ancien patriarche nostalgique de Ti-fr v1.

2

tu fais n FORs imbriqués grin => récursivité
mais tu sais que n! ça monte très vite wink ? vaudrait mieux le faire sur pc

3

Bon là je vais pas répondre à ta question, mais en tout cas on peut faire bien mieux que n! tongue

* le 5è chiffre est un 5
* les chiffres d'indices pairs sont pairs, donc les chiffres 2,4,6,8 sont une permutation de 2,4,6,8 ; et par conséquent les chiffres 1,3,7,9 sont une permutation de 1,3,7,9.

A partir de là, les conditions 1, 2 et 5 sont tjs vérifiées; pour les autres, le nb de possibilités pour le chiffre d'indice k étant donnés les chiffres d'indices 1, 2, ... k-1 est borné par le nb d'entiers différents ayant la même valeur modulo k dans l'ensemble {2,4,6,8} (respectivement {1,3,7,9}) si k est pair (resp. impair).

Par exemple, pour la condition 3, [1,3,7,9] mod 3 = [1,0,1,0], le chiffre 1 apparaît 2 fois, donc il y a 2 possibilités pour le 3è chiffre à partir des 2 premiers.
Pour la condition 4, [2,4,6,8] mod 4 = [2,0,2,0], il y a 2 possibilités.
Pour la condition 6, [2,4,6,8] mod 6 = [2,4,0,2], il y a 2 possibilités.
Pour la condition 7, [1,3,7,9] mod 7 = [1,3,0,2], il y a une seule possibilité.
Pour la condition 8, [2,4,6,8] mod 8 = [2,4,6,0], il y a une seule possibilité.
Pour la condition 9, [1,3,7,9] mod 9 = [1,3,7,0], il y a une seule possibilité.

Donc ça fait au maximum : N = 4 choix pour le 1er chiffre x 4 choix pour le 2è chiffre x 2 choix pour le 3è chiffre x 2 choix pour le 4è chiffre x 2 choix pour le 6è chiffre.
Soit N = 128 vérifications de combinaisons (et encore, c'est une borne supérieure assez large, et qui ne tient même pas compte du fait que les chiffres sont 2 à 2 distincts)

Rien à voir avec 9! = 362880 combinaisons ^^

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

4

Et sinon, vous trouvez un nombre qui vérifie l'énoncé de l'énigme ??

J'ai conclu qu'il n'en existait pas moi ...
Ancien patriarche nostalgique de Ti-fr v1.

5

bah avec l'explication de pollux, un programme verifiant ça est vite fait ^^
en fait avant de lire le truc de pollux, j'avais compris les n chiffres les de droite et pas de gauche résultat c'etait impossible cheeky dehors
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

6

En effet, ca n'était pas possible pour ceux de droite. C'est bien ceux de gauche !

Mon programme etait érroné !

j'avais une chaine de caractere du style "123456789" et je voulais faire un test dessus, donc je devais faire:

expr(str)->nb

Et moi j'ai fait:

string(str)->nb

Et donc forcement, le test ne pouvait pas être fait, et j'ai mal géré le retour d'erreur de mon sous-pregramme, et du coup j'ai perdu l'énigme.

Mais en le modifiant, il y a bel et bien un nombre qui vérifie ca:

http://me.yaronet.com:8080/up/npremier.JPG


Mais maintenant nouvelle énigme:

Quel est le produit maximal de deux nombres constitués de tous les chiffres de 1 à 9 utilisées une et une seule fois (pour l'ensemble des deux nombres) ?
Ancien patriarche nostalgique de Ti-fr v1.