Le titre est ce qu'on appelle, je crois, putaclic (il est à parier qu'avec un titre plus honnête il aurait eu beaucoup moins de lectures et de commentaires ici, et probablement de contributions héhé) ;-)
Alors, pour la version simple et l'optimisée, il a énoncé les critères suivants :
on lit un fichier depuis l'entrée standard, et on ne lit pas tout le fichier en mémoire (mais par blocs pouvant être des lignes et au d'au plus 64 kibi)
on écrit le nombre d'occurrence des mots le composant du plus élevé au plus bas sur la sortie standard
on ne fait pas de distinction de casse et son résultat est en minuscule : "le" et "Le" et "LE" seront tous trois comptés "le 3"
on ne se préoccupe pas de l'encodage et des accentuations, on considère qu'on bosse sur de l'ASCII des familles (comme le document de test utilisé)
on ne cherche pas à classer les mots ayant la même fréquence d'apparition
on n'utilise que les éléments de base du langage (pas de bibliothèque supplémentaire)
on n'invente pas sa propre structure de hachage (même s'il a fait une exception pour la variante optimisée en C)
on s'évite les trucs de jedi du langage et le recours à l'assembleur ou trucs similaires
Avec ces trois derniers, il est un peu difficile de trouver un autre algo que celui proposé. Tu trouves autres chose et ce ne sera plus le même test ni le même objectif de l'entretien.
Mais fort de ces contraintes, il est normal que même la version optimisée ne touche pas fondamentalement la logique première (toute façon l'autre but, comme je le perçois, était de voir comment mettre le profilage à profit ensuite et quand il faut s'avoir s'arrêter dans l'optimisation : pour certains langages il dit qu'on peut faire mieux, mais qu'il estime que c'est trop d'effort pour des poullièmes par rapport au cadre posé)
"It is seldom that liberty of any kind is lost all at once." ― David Hume
[^] # Re: Des choux et des carottes...
Posté par Gil Cot ✔ (site web personnel, Mastodon) . En réponse au lien Performance comparison: counting words in Python, Go, C++, C, AWK, Forth, and Rust. Évalué à 2.
Le titre est ce qu'on appelle, je crois, putaclic (il est à parier qu'avec un titre plus honnête il aurait eu beaucoup moins de lectures et de commentaires ici, et probablement de contributions héhé)
;-)Alors, pour la version simple et l'optimisée, il a énoncé les critères suivants :
Avec ces trois derniers, il est un peu difficile de trouver un autre algo que celui proposé. Tu trouves autres chose et ce ne sera plus le même test ni le même objectif de l'entretien.
Mais fort de ces contraintes, il est normal que même la version optimisée ne touche pas fondamentalement la logique première (toute façon l'autre but, comme je le perçois, était de voir comment mettre le profilage à profit ensuite et quand il faut s'avoir s'arrêter dans l'optimisation : pour certains langages il dit qu'on peut faire mieux, mais qu'il estime que c'est trop d'effort pour des poullièmes par rapport au cadre posé)
"It is seldom that liberty of any kind is lost all at once." ― David Hume