Maintenant que le tour 2 du TI-Concours est fini, j'avais envie de partager mon programme NBDIG, histoire de voir si quelqu'un aurait réussi a faire mieux

Rappel du sujet du tour2, les nombres digisibles:
Sujet : Un nombre est dit digisible s’il respecte les trois conditions suivantes :
- il ne comporte aucun 0 ;
- tous les chiffres qui le composent sont différents les uns par rapport aux autres ;
- il est divisible par chacun des chiffres qui le composent.
Vous réaliserez un programme qui demande un nombre entier naturel supérieur ou égal à 10 et qui affiche 1 s’il est digisible, 0 s’il ne l’est pas.
Note : ce sujet est fortement inspiré des Olympiades de mathématiques 2012.
Consignes :
Les consignes sont d’ores et déjà données plus haut. A cela est rajoutée une contrainte supplémentaire : vous devrez réaliser le programme le plus rigoureux possible, c’est-à-dire que celui-ci devra tout faire pour qu’il n’y ait aucune erreur signalée par l’interpréteur de la calculatrice quoi qu’il arrive (dans la mesure du possible).
Nom du programme : votre programme aura comme nom NBDIG suivi de votre code personnel à deux chiffres (disponible sur le site internet dans le menu en haut à gauche). Les sous-programmes ne sont pas autorisés.
Durée : une semaine, soit jusqu’au 7 avril 2013 à 23h 59mn 59s (GMT+2) : au-delà de cette limite, il y aura un point de pénalité tous les quarts d’heure (la note devant toujours être supérieure ou égale à 1).
Barème :50 points sont consacrés au respect des consignes et au bon fonctionnement du programme, 30 points portent sur l’optimisation du programme, et enfin les 20 derniers points concernent la rigueur (voir plus haut).
Coefficient : le coefficient est de un dans la note finale.
et donc, mon humble participation:
- Code: Tout sélectionner
Repeat A>=10
Input "ENTIER >=10:",Str1
If min(seq(inString("0123456789",sub(Str1,K,1)),K,1,length(Str1
expr(Str1->A
End
1+iPart(log(A->B
seq(int(10fPart(A/10^B+1-K))),K,1,B->L1
SortA(L1
not(not(min(L1))+not(min(DeltaList(L1
If Ans
min(seq(not(fPart(A/L1(K))),K,1,B
DelVar L1DelVar ADelVar BDelVar KDelVar Str1Ans
Qui dit mieux ?
