Hash Code Google : SFEIR y était !


Le 11 février dernier a eu lieu le premier round de l’édition 2016 du concours Google Hash Code. Cet évènement offre la possibilité aux développeurs d’Europe, du Moyen-Orient et d’Afrique, de s’affronter en équipe et le temps d’une soirée autour d’un sujet proposé par Google.

L’épreuve dure 4 heures et le choix du langage est laissé à la discrétion des participants. Le résultat n’est pas évalué via la qualité du développement ou de l’algorithme en lui-même, mais par le résultat atteint. En effet, la solution proposée doit prendre en entrée des fichiers de données brutes de la problématique et produire des fichiers de données correspondants aux actions calculées.

Pour évaluer la qualité de la résolution, nous donnons donc au juge uniquement nos fichiers de sortie. Un score pour chaque équipe est ensuite calculé par les équipes en charge du concours. Le problème en lui-même est expliqué dans une notice qui précise notamment comment lire et interpréter les données. Cette notice détaille aussi le but du programme à créer et donne le format attendu pour les fichiers de sortie.

SFEIR Lille a bien évidemment décidé de participer à cet évènement et a donc présenté une équipe, constituée de 4 personnes. Nous nous sommes retrouvés à 18h, dans nos locaux flambant neufs d’EuraTechnologies, pour avoir le temps de nous préparer avant d’entrer en action. Le temps de remplir nos verres et de choisir avec le langage avec lequel nous allions concourir !

18h30, début de la vidéo d’introduction diffusée en streaming présentant le Hash Code et annonçant la disponibilité des sujets. L’épreuve démarre.
Le sujet est dans l’air du temps : nous allons devoir commander une flotte de drones pour qu’ils effectuent des livraisons de colis en un temps minimum.

18h45, première partie de l’épreuve : lire le sujet, et comprendre comment interpréter les fichiers donnés en entrée. Chaque fichier détaille une flotte de drones, une liste décrivant les produits livrables, une autre les commandes à honorer, et une dernière les entrepôts avec les stocks disponibles pour chaque produit.

19h00, nous entrons dans le vif du sujet : il faut tout d’abord lire les fichiers d’entrée et remplir la structure de données correspondante, qui nous permettra par la suite de les traiter plus facilement. Pour notre équipe, qui n’avait pas particulièrement prévu de plan d’action, c’est à ce moment-là que les choses commencent à se corser. Le plus motivé d’entre nous commence donc avec la lecture des fichiers de données, et pendant ce temps les autres ont du mal à trouver leur place.

19h30 : une fois cette partie terminée, nous pouvons enfin commencer à travailler en parallèle ! Nous tentons donc de construire différents algorithmes répondant au sujet. Tout d’abord sur la solution naïve, un algorithme simple qui livre les produits un par un, sans essayer d’optimiser les transports, le choix du drone ou les déplacements. Un second algorithme d’optimisation est démarré, destiné à repérer les commandes livrables en une fois, c’est à dire où l’ensemble des produits de la commande rentrent dans un seul drone. Le but étant par la suite de chaîner les deux algorithmes pour livrer dans un premier temps les commandes groupées et ensuite le reste des colis.

21h30 : diffusion du tableau des scores actuels. Notre équipe n’a pas encore soumis de résultat. Le stress monte. Les pizzas refroidissent.

22h30 : nous finissons l’épreuve en ayant réussi à soumettre un résultat, mais uniquement avec l’algorithme destiné à l’optimisation. Notre score n’est donc pas à la hauteur étant donné que nous n’honorons pas l’ensemble des commandes, mais cette épreuve nous a permis d’apprendre plusieurs choses : tout d’abord les maîtres mots de ce genre de concours sont la préparation et le travail en équipe. Une meilleure préparation nous aurait permis d’avoir des bases communes, un langage commun, mais également de mieux appréhender la structure de données à mettre en place. Cette partie de l’épreuve est primordiale pour réussir la suite ! En effet, sans une structure adéquate il est non seulement compliqué de bâtir un algorithme pour la consommer, mais également de simplement comprendre la structure pour ceux ne l’ayant pas créée.

La concentration est aussi un point important pour réussir ce genre d’évènement. Nous avons démarré l’épreuve dans un esprit assez bon enfant, et le fait que cela se déroule après une journée de travail n’aide pas à rester concentré. C’est pourtant un point crucial pour réussir à mettre au point des algorithmes précis et optimisés.

Cela ne nous a pas empêchés de passer une bonne soirée entre Sfeiriens, autour de pizzas, de code et riche d’enseignements ! Notre score final aurait probablement pu être meilleur, mais comme l’a dit Pierre de Coubertin: “L’essentiel ce n’est pas d’avoir vaincu, mais de s’être bien battu”. L’objectif pour notre équipe était aussi de s’amuser, et de ce côté-là, mission accomplie ! Nous vous donnons donc rendez-vous l’année prochaine pour l’édition 2017 !

Vous aimerez aussi...

  • Abderrazak

    Bravo les gars, keep coding