Skip to content

Instantly share code, notes, and snippets.

@johannchopin
Last active November 4, 2017 17:42
Show Gist options
  • Save johannchopin/82d1a2c652026600f806cb2b79e155eb to your computer and use it in GitHub Desktop.
Save johannchopin/82d1a2c652026600f806cb2b79e155eb to your computer and use it in GitHub Desktop.
LOWER_CASE_TO_CAPITAL = ord('a') - ord('A')
def my_title(title):
acc = ""
previous_letter = ""
for letter in title:
if ("a" <= letter <= "z") and not("a" <= previous_letter <= "z") and not("A" <= previous_letter <= "Z"):
letter = chr(ord(letter) - LOWER_CASE_TO_CAPITAL)
previous_letter = letter
acc += letter
return acc
@laowantong
Copy link

Je recommenterai quand tu auras restructuré 😃

@johannchopin
Copy link
Author

Hehe voilà un code qui passe tous les tests mais qui ne va pas vous plaire :)

@laowantong
Copy link

Déjà, bravo d'avoir passé tous les tests, y compris les nouveaux !

Ceci dit, en effet, ton code ne me plaît pas vraiment, pour deux raisons:

  • Il contient plusieurs maladresses d'expression, qui peuvent facilement se simplifier. Par exemple la ligne 11 devrait s'écrire:
if not "a" <= letter <= "z":

J'ai fait plusieurs simplifications de ce type dans ton code (y compris dans les structures de contrôle), pour obtenir un code strictement équivalent, et qui ne contient plus que deux expressions booléennes (ce qui est optimal) mais:

  • Il y a toujours ce counter de logique tri-valuée dont la sémantique n'est pas claire (et je ne suis pas sûr qu'elle le soit pour toi).

@laowantong
Copy link

PS: ton programme échoue sur au moins un des nouveaux tests.

@johannchopin
Copy link
Author

Et le voilà qui passe tous les tests et cela sans le "compteur" qui vous a arraché les yeux :)

@laowantong
Copy link

Version très claire, et que je préfère même à la mienne (cf. commentaires du code d'Alexandre). Bravo!

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