Python affichage trop long

Bonjour, Je travaille sur l'énigme 5, et je ne passe pas le test de vitesse, sûrement pour les grandes valeurs. Je travaille avec Python, j'ai fais un nombre important de modifications, jusqu'à que je ne sois plus capable d'optimiser mon programme avec mes compétences. J'ai alors cherché avec la librairie time quelle partie de mon code mettait du temps avec des valeurs importantes (quelques milliers de statuettes), et je me suis rendu compte que ce qui mettait du temps était pas vraiment le programme lui même, mais l'affichage. En effet, afficher 128 valeurs en sortie sur une ligne met 0.4 secondes, je comprends avec ça que je dépasse le temps pour des valeurs plus grandes. Je parle bien d'afficher seulement, ma chaîne à afficher est déjà prête avant. Je voulais donc savoir si il y avait moyen d'afficher autrement qu'avec un print, ou si j'étais condamner à changer de language, c'est à dire ne pas réussir l'énigme vu l'heure. Merci d'avance.

6 jan. 2019 à 19:42:27 Modifié le 6 jan. 2019 à 19:42:43

Bonjour,

Sur quelle taille d'entrée as-tu testé ton programme ? Je ne pense pas que ces appels à print soient ce qui t'empêche de valider l'exercice, ils sont probablement plus lents dans tes tests car ils écrivent dans une console graphique, et le temps utilisé ne vas de toutes façons pas exploser quand la taille du problème augmente.

Je crois qu'en python une fonction plus bas niveau serait sys.stdout.write mais je pense que tu auras a peu près les mêmes résultats.

Bon courage !

J'ai testé pour quelques milliers de statuettes (3480 par exemple). Le temps d'affichage augmente bel et bien en fonction de la longueur du texte à afficher, mais cela doit effectivement être dû au fait que j'utilise une console graphique contrairement au correcteur automatique. sys.stdout.write permet de réduire par 3 le temps d'affichage, donc merci pour la méthode :) Le problème doit donc quand même venir de la solution que j'utilise (qui représenté malgré tout 10% du temps d'exécution), donc faudra que je me renseigne mieux sur ce qui se fait en algorithmie pour l'année prochaine ou les finales (je crois avoir compris qu'il suffisait de répondre au questionnaire et aborder les énigmes pour être qualifié?). Encore merci pour la réponse.

Une bonne partie des candidats n'auront pas résolut l'exercice 5 donc tu n'as effectivement pas à t'en inquiéter trop ;)

On publiera des corrections dans quelques jours, n'hésites pas à y jeter un œil !

Répondre au sujet

Vous devez vous enregistrer ou vous connecter pour poster des messages.