Skip to content

Instantly share code, notes, and snippets.

@johannchopin
Last active November 14, 2017 19:56
Show Gist options
  • Save johannchopin/86bd67affb8c23ff513680ec6c1b5576 to your computer and use it in GitHub Desktop.
Save johannchopin/86bd67affb8c23ff513680ec6c1b5576 to your computer and use it in GitHub Desktop.
# ----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
@laowantong
Copy link

[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.

@johannchopin
Copy link
Author

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 ;)

@laowantong
Copy link

[Rev 4]
Bonne conclusion 😃

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment