28 Jan 2015

Dojo #14

A l’occasion des 60 ans du scrabble, le dojo de cette semaine a tourné autour des mots.

Le sujet

Il s’agit de trouver les mots les plus longs parmi une combinaison de 7 lettres.

Vous avez à disposition :

  • Un fichier contenant les lettres du scrabble français avec leurs points respectifs et leur occurrence dans le jeu sous la forme [lettre]([points],[occurrence]) :
    • B(3,2)…
    • #(0,2) (la lettre blanche)
    • C(3,2)
    • A(1,9)
  • Un fichier contenant 59232 mots français que nous appellerons ‘dictionnaire’ dans la suite de cet article
    • AASABACAS…
    • ABACOST
    • ABACA
    • AA

L’exercice complet consiste à :

  1. Lire le fichier des lettres et générer un tirage aléatoire de 7 lettres
  2. A partir du tirage, trouver les mots les plus longs connus dans le dictionnaire.
  3. A partir du tirage, trouver les mots les plus forts.

Compte tenu du temps imparti, nous avons restreint l’exercice à :

  1. Trouver le mot le plus long à partir d’une combinaison donnée (sans lettre blanche) et d’une liste de mots restreinte (approche TDD plus « visible »).
  2. Si l’exercice est accompli, le refaire sur un dictionnaire complet (59232 mots donc), en veillant à avoir une temps de réponse acceptable (ie. moins de 5 secondes, et idéalement sous la seconde)
  3. Si l’exercice est accompli, faire en sorte de gérer la lettre blanche dans le tirage de lettres
  4. Si l’exercice est accompli, trouver les mots les plus forts (ie. qui ramène le plus de points).

Déroulement du Dojo

WP_20150121_13_58_52_Pro[1]

Technologies utilisées par les équipes :

  • C#,
  • Javascript,
  • Java

Briefing rapide de 5 minutes, environ 1h40 de réalisation et débrief de 15 minutes.

Le débrief a été l’occasion de faire un petit tour des solutions envisagées par les différentes équipes et de notre proposition d’implémentation disponible ici : https://github.com/AxaWebCenter/Dojo-14

Globalement plusieurs équipes ont réussi à trouver le mot le plus long dans le dictionnaire complet, mais aucune (sur Lille en tout cas) n’a pu aller jusqu’à la gestion de la lettre blanche.

Cette dernière pose en effet certains problèmes dans l’algorithme pensé initialement et oblige et à revoir sa copie, au risque de partir sur une solution brutale qui consiste à générer toutes les combinaisons possibles.

A retenir

L’exercice implique :

  • Une connaissance des limites du langage (notamment dans la comparaison brute de chaines de caractères)
  • Une certaine culture des structures de recherches optimales (dictionnaires, arbres, …) et donc sur la façon de ranger les 59232 mots pour que la recherche soit rapide
  • Un algorithme de recherche le plus rapide possible et donc :
    • de bonnes notions d’algorithmie
    • De la motivation pour trouver la solution la plus efficace

Sous la pression des délais, beaucoup de développeurs tendent à oublier ce dernier point et à s’arrêter une fois la solution obtenue sans chercher à l’améliorer.

Ceci est dommageable au projet, au fonctionnement de l’application, au budget de l’entreprise et même à l’environnement (petit clin d’œil de l’écologiste qui sommeille en moi) !

Une solution optimale est en effet :

  • Plus facile à maintenir
  • Plus robuste et plus réactive
    •  => l’application est plus agréable à utiliser et génère moins de frustration
      • par conséquent, j’ajouterai => utilisateurs contents
  • Moins consommatrice de ressources
    • => charge CPU et consommation mémoire plus faible
      • => un serveur plus disponible pour héberger d’autres applicatifs
        • => consommation électrique plus faible
          • => un comptable heureux et un environnement moins dégradé !
            • => moins de serveurs et donc moins de climatisation
Share