Last active
November 14, 2017 19:56
-
-
Save johannchopin/86bd67affb8c23ff513680ec6c1b5576 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ----Ma version (9.84 µs)---- | |
def longest_streak(elements): | |
counter = 1 | |
acc = [0] | |
previous_element = "" | |
for element in elements: | |
if previous_element == element: | |
counter += 1 | |
else: | |
counter = 1 | |
previous_element = element | |
acc += [counter] | |
return(max(acc)) | |
# ----La version (5.06 µs)---- | |
def longest_streak(elements): | |
counter = 0 | |
best_so_far = 0 | |
previous_element = None | |
for element in elements: | |
if element == previous_element: | |
counter += 1 | |
else: | |
counter = 1 | |
previous_element = element | |
if counter > best_so_far: | |
best_so_far = counter | |
return best_so_far |
Nouvelle version que je n'aime pas beaucoup bien qu'elle soit environs deux fois plus rapide que la précédente (5.99 µs contre 10.5 µs). A vous de juger maintenant ;)
[Rev 3]
Ah oui, intéressant, donc le premier programme était effectivement deux fois plus lent.
- Ton nouveau programme ne marche pas pour
longest_streak(["", 1, 2])
. acc
ne sert à rien, sans doute un reste de brouillon?- Les initialisations sont un peu trop complexes. En fait, cherche toujours des initialisations « naturelles » (i.e., qui sont correctes à l'étape 0).
- Peux-tu utiliser une variable dont le nom se termine par
_so_far
comme dans le schéma de recherche? Merci.
C'est un algorithme un peu complexe à mettre au point.
Bon comme pas mal de gens l'ont remarqué, la deuxième version est la meilleur (je n'ai pas réussi à faire un autre programme équivalent ET plus rapide comme vous pouvez le constater). Une prochaine fois peut être Grand Guidoux ;)
[Rev 4]
Bonne conclusion 😃
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Je ne sais pas. Le problème de ta version est qu'elle n'inclut pas le schéma de recherche du meilleur élément, dont elle est censée être une application (ce schéma est dissimulé dans le
max()
final). Essaie donc de repartir de ce schéma. La différence est qu'il faut traiter non seulement la rencontre d'un meilleur élément, mais aussi d'un élément équivalent. Mais le schéma de recherche est tout de même inclus dans l'algorithme.