christophe_d13 a écrit :
PS: Ce concours au final ne sert pas à grand chose (pour ce problème), il serait peut-être plus interressant dans l'avenir de proposer des problèmes plus utiles (des problèmes que l'on rencontre souvent par exemple).
On pourrait également faire 1 ou 2 concours par mois ?
|
J'ai trouvé ce concept génial et je me suis attaché à essayer de résoudre ce problème avec les outils que j'utilise couramment. Malheureusement j'utilise C#, qui est un langage managé. Donc, en termes de prefs brutes, c'est pas génial pour ce type d'application et je n'arriverai pas à atteindre les temps que vous avez réalisés.
En revanche, je continue à rechercher des solutions, et j'ai découvert tout un tas de trucs (ou plutôt des questions, pour l'instant) sur les optimisations faites par le compilateur. Au départ, sur ma machine (un P4-M 2Ghz / 400Mhz), j'ai obtenu presque le même timing que black_goddess, avec un algo quasi identique. Je me suis vite rendu compte qu'il y avait du temps à grapiller sur la division, le modulo et d'autres opérations effectuées par l'environnement d'exécution.
J'ai donc codé une division à la main, avec des bit shifts, je suis passé en mode non managé pour la partie des calculs, etc.
Actuellement, je suis descendu vers 1.3 - 1.5 sec.
Je vais essayer de trouver des solutions pour parvenir en-dessous de 1 seconde, mais je pense que ça sera difficile.
En tout cas, ça aide à maîtriser son langage dans le menu !!
Donc oui !! Je suis complètement partant pour de nouvelles aventures !!