Page 1 of 2

Nombres Digisibles

PostPosted: 12 May 2013, 13:57
by Persalteas
Salut,

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 :P (PARCE QUE VISIBLEMENT OUI, HEIN SAMOS/LINKAKRO ! )...

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: Select all
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 ? ;)

Re: Nombres Digisibles

PostPosted: 12 May 2013, 14:14
by noelnadal
Ahah, j'ai les barèmes si vous voulez :P
Entre vous trois ça s'était joué sur l'optimisation, il me semble. Linkakro et Samos avaient réalisé un code strictement identique, d'où le même score. :P

Re: Nombres Digisibles

PostPosted: 12 May 2013, 14:15
by Persalteas
Mais justement !
Pour le coup, je ne trouve plus rien à optimiser dans mon code... :o

Re: Nombres Digisibles

PostPosted: 12 May 2013, 14:16
by noelnadal
Le programme le plus optimisé était largement celui de 42maelstrom. Là, y'avait pas photo :D
Mais en termes de rigueur, par conter, ça y était pas. :D

Re: Nombres Digisibles

PostPosted: 12 May 2013, 14:18
by Persalteas
AH j'ai trouvé ! eux, ils ont pas mis d'espace entre le "ENTIER" et le ">=10:" :P

Re: Nombres Digisibles

PostPosted: 12 May 2013, 14:19
by mdr1
On s'en fout de la "rigueur" dans ces langages, on sait tous très bien que les programmes les plus optimisés sont incompréhensibles.

Re: Nombres Digisibles

PostPosted: 12 May 2013, 14:21
by Persalteas
Ce que Noelthebest appelle rigueur, c'est le fait que quoique l'utilisateur rentre, ça ne renvoie pas de message d'erreur de la part de l'interpréteur de la calculatrice.

C'est pourquoi je m'embête à utiliser une chaine pour l'input.

Re: Nombres Digisibles

PostPosted: 12 May 2013, 14:21
by noelnadal
et surtout >9 c'est plus optimisé que >=10 :troll:

mdr1 -> le sujet indiquait clairement que la rigueur était de mise. C'était possible d'avoir 100/100, vous savez...

et puis persalteas, c'était pas que ça, la rigueur, vous vous êtes presque tous pris 10 points parce que vous avez presque tous oublié qqch :troll:

Re: Nombres Digisibles

PostPosted: 12 May 2013, 14:23
by mdr1
Eh bien tu t'es embêté pour rien car un bon programme est censé indiquer à l'utilisateur l'erreur s'il en fait une, ce qui ici est pris en partie en charge par l'OS en demandant un nombre.

Re: Nombres Digisibles

PostPosted: 12 May 2013, 14:25
by Persalteas
et surtout >9 c'est plus optimisé que >=10 :troll:


MEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERDEEEEE !!!

*Persalteas s'excuse pour tant de vulgarité concentrée

mais mdr1, mon programme redemande à l'utilisateur un ENTIER >=10, c'est clair comme message, non ?

Si ça passe pas, l'utilisateur est en mesure de deviner que c'est que ça ne respecte pas la seule condition que je lui ai demandée...