À l’approche d’Halloween, nous rencontrons un problème de taille…. Les zombies ont envahi la ville et nous avons besoin de vous pour les anéantir ! #codingame
Jeudi 25 octobre 2018, Raphaël et Romain ont remporté notre Codingame sur le thème « Zombies » ! Aujourd’hui, ils nous expliquent leur stratégie gagnante.
« Pour résumer l’ensemble de notre stratégie, l’un codait et l’autre (« le cerveau de l’équipe ») observait le jeu afin de prévenir d’éventuelles erreurs de code. Bien entendu, nous échangions les rôles dès que l’un de nous se sentait plus à l’aise sur une feature en particulier. Avec cette méthode, nous avons gagné beaucoup de temps !
Je pense que cette collaboration a été la clé de notre réussite. Avec le pair programming, la productivité est facilement augmentée grâce à une bonne répartition des tâches. Dans un premier temps, nous avons élaboré une stratégie sur papier qui nous a permis de visualiser le problème et les solutions envisageables, puis nous avons confronté nos idées afin de choisir la plus pertinente.
Pour le langage, nous avons décidé d’utiliser le JAVA. Fortement typé et orienté objet, le code est facile à la relecture et à l’identification de bugs. Nous avons ensuite choisi une IA évolutive. Notre stratégie ? Partir de choses simples et génériques pour pouvoir les améliorer à chaque évolution de score. Cette méthode nous garantissait d’avoir dans tous les cas un score final. Si nous avions travaillé sur une IA trop complexe dès le départ, nous aurions pris le risque de ne pas la terminer.
Concernant l’IA elle-même, nous avons commencé par une phase d’analyse qui consistait à déterminer l’importance, l’urgence et le niveau d’alerte liés à tous les humains présents sur la carte. Cette stratégie nous a permis de déterminer qui sauver en premier. De plus, nous avons aussi établi un « diagnostic » pour chaque humain. Ainsi, nous avons enregistré directement comme « condamné » tous les personnages qui, selon nous, ne pouvaient être sauvés par le héros Ash.
Pour finir, nous avons calculé un rayon pour déterminer l’emplacement des zombies et des humains. Cet élément clé nous a permis de prioriser les sauvetages de notre héros et donc d’obtenir les plus gros combos ! Cela nous a vraiment aidé à gagner !!
Aujourd’hui, si nous devions améliorer notre stratégie, nous prendrions également en compte la possibilité d’un « dilemme » qui consisterai à choisir entre deux humains « sauvables ». Pour résoudre ce dilemme nous utiliserions le combo et nous regarderions, par la suite, quels sont les humains à proximité des deux individus « sauvables » pour protéger plus de personnages. »