Top Code 2024, les challenges sont de nouveau disponibles dans les boards pour les participant(e)s => Boards

Illustration visuelle du challenge de code : Attaque des Titans

Attaque des Titans

Le caporal Levi doit affronter des Titans dans le district de Trost. Aide-le à venir à bout de tous les Titans !

Code : ATTACK_OF_TITANS

Avant-propos : Si tu n’as jamais vu l’Attaque des Titans, voici une vidéo très courte qui te permettra de comprendre de quoi il est mention dans l’énoncé ci-dessous : https://www.youtube.com/watch?v=fHvqaBQhZhw&t=70 


Mission

Le caporal Levi doit affronter plusieurs Titans. Heureusement, il est entouré d’habitations et il va pouvoir utiliser son équipement tridimensionnel pour se déplacer et attaquer les titans avec ses épées.

Pour se déplacer, Levi consomme le gaz de son équipement tridimensionnel. Il y fait attention pour être sûr de ne pas se retrouver sans gaz lorsqu’il approche un Titan.

Levi va essayer de venir à bout de tous les Titans présents, mais selon son gaz, il ne pourra peut-être pas tous les éliminer…

Règles

Les Titans ont 3 caractéristiques :

  • Taille
  • Vitesse
  • PV (Points de Vie)

Les habitations ont 2 caractéristiques :

  • Hauteur
  • Distance

On considère que les Titans se trouvent sur la position « 0 » en permanence, et donc toujours à une distance fixe d’une habitation.


Levi respecte ces règles pour attaquer les Titans :

  • Il attaque les Titans dans l’ordre décroissant de leur taille, le + grand en premier donc.
  • Pour affronter un Titan, il va chercher à se positionner sur une habitation qui se trouve au-dessus du Titan, tout en étant le + proche possible. Par exemple, si un Titan a un une taille de 20 m, et qu’il y a 2 habitations de 21 m et 23 m. Levi ira sur celle de 21 m. Peu importe la distance.
  • S’il n’y a pas d’habitation + haute que la taille du Titan, il va sur l’habitation la + haute possible.
  • Quand il affronte un Titan, il fait des allers-retours entre l’habitation et le Titan, mais ne change pas d’habitation.
  • Quand un Titan meurt, il choisit alors le nouveau Titan à affronter et peut donc changer d’habitation à ce moment-là.

Pour réussir le challenge, Il faut compter les coups portés par Levi : (et retourner le total)

  • 1 coup d’épée = 1 pt (même si c’est le coup fatal).
  • 1 titan abattu = 100 pts

S’il faut 3 coups pour tuer un Titan, Levi engrange 103pts.

Voici les formules qui permettent de calculer la puissance des coups de Levi, et le gaz consommé à chaque fois :

Si Levi se trouve au-dessus du Titan :

  • Puissance = (hauteur de l’Habitation – taille du Titan) * 10 + distance de l’Habitation * 2 – vitesse du Titan.
  • Gaz consommé = (hauteur de l’Habitation – taille du Titan + distance de l’Habitation)

Si Levi se trouve en dessous du Titan :

  • Puissance = Abs(hauteur de l’Habitation – taille du Titan) * 5 + distance de l’Habitation * 2 – vitesse du Titan.
  • Gaz consommé = Abs(hauteur de l’Habitation – taille du Titan + distance de l’Habitation)

Abs représente la fonction « Valeur Absolue ».


Derniers éléments :

  • La puissance correspond au nombre de PV que perdra le Titan à chaque coup. Le Titan meurt lorsque ses PV tombent à zéro (ou moins).
  • 2 Titans n’ont jamais la même taille.
  • 2 Habitations n’ont jamais la même hauteur.
  • Pour monter sur une Habitation, Levi consomme en Gaz l’équivalent de la hauteur de l’Habitation
  • Si Levi change d’Habitation, il consomme en Gaz l’équivalent de la différence de hauteur entre les 2 Habitations. Pour passer d’une Habitation de 27 m à une Habitation de 20 m, Levi consomme 7 de Gaz.
  • Jetez un œil aux jeux de données pour être sûr de bien tout comprendre

Résoudre le challenge

Pour coder ce challenge, plusieurs possibilités. Si tu débutes, utilise la Sandbox en ligne. Si tu es plus à l'aise, regarde la documentation de notre API, pour coder en local. Tu peux aussi copier/coller un jeu de données ci-dessous.

Quelques ressources pour t'aider : Données et logique algorithmique Méthodologies Corrigés

Accompagnement à la résolution

Progresse dans les challenges en utilisant nos aides à la résolution : outils, techniques et conseils pour t'aider à surmonter les challenges de programmation les plus complexes avec méthodologie, assurance et créativité.

Jeu de données et logique algorithmique

A partir des données et de la réponse attendue, aide toi du déroulé pour déterminer la logique à mettre en oeuvre.

Afficher les données et le déroulé

Méthodologies

Développe une approche structurée grâce à nos guides de résolution. Travaille des concepts précis comme la programmation orientée objet ou les tests unitaires, pour améliorer ta manière de coder et progresser.

Pas de méthodologie encore pour ce challenge, mais on y travaille ! Suis-nous pour être informé de la sortie !


Corrigés

Les corrigés te permettent de découvrir certains concepts techniques mais vont aussi te donner une solution au challenge. Code le challenge par toi même avant de consulter les corrigés ;)

Concept(s) de programmation utilisables pour résoudre ce challenge : Conditions, Programmation Orientée Objet, Tableaux, Fonctions

Keep coding

Autres challenges à réaliser

Intermédiaire
WALL-E #4 : un peu de rangement

WALL-E #4 : un peu de rangement

Wall-E s’ennuie un peu et décide de ranger tous les blocs de déchets qu’il a construit.

Comportemental
Intermédiaire
WALL-E #1

WALL-E #1

Wall-E est un robot dont la mission est de nettoyer la Terre. Tu dois coder son fonctionnement pour qu’il traite efficacement ces déchets. Néanmoins, sois vigilant pour ne pas épuiser sa réserve d’énergie !

Comportemental Corrigés dispos : PHPPHP
Débutant
Les dev perdus sur une île

Les dev perdus sur une île

Des dev échoués sur une île déserte vont mettre leur connaissance en commun pour se sortir de ce mauvais pas !

Comportemental Méthodologie proposée

Ta newsletter chaque mois

Corrigés, challenges, actualités, veille technique... aucun spam.