Menu
CoddyTech

Asteroid Collision

MoyenPilepython iconjava iconcpp iconc iconjs icon+10

Une rangée d’astéroïdes se déplace le long d’une ligne, tous à la même vitesse. Chaque valeur de asteroids décrit un astéroïde : sa valeur absolue correspond à sa taille, et son signe indique sa direction, positive vers la droite et négative vers la gauche.

Lorsqu’un astéroïde se déplaçant vers la droite en rencontre un autre qui se déplace vers la gauche, ils entrent en collision. Le plus petit explose ; s’ils ont la même taille, ils explosent tous les deux. Les astéroïdes qui se déplacent dans la même direction ne se rencontrent jamais. Renvoie les astéroïdes restants après toutes les collisions, dans leur ordre d’origine. Le résultat peut être vide.

Fonction

asteroidCollision(asteroids: integer-array) → integer-array
asteroidsinteger-array
les astéroïdes de gauche à droite, le signe pour la direction, la valeur absolue pour la taille
Renvoieinteger-array
les astéroïdes restants de gauche à droite, éventuellement aucun

Contraintes

  • 1 ≤ asteroids.length ≤ 104
  • -1000 ≤ asteroids[i] ≤ 1000
  • asteroids[i] ≠ 0

Exemples

Entrée
asteroids = [4, 9, -6, 2, -3]
Sortie
[4, 9]
Explication
9 rencontre -6 et gagne. 2 rencontre -3 et explose, puis -3 fonce vers 9 et explose aussi. Rien d’autre ne se dirige vers quoi que ce soit, donc 4 et 9 restent.
challenge icon

Pour aller plus loin

La pile indique quels astéroïdes survivent. Comment pourriez-vous également indiquer, pour chaque astéroïde qui explose, l’indice de l’astéroïde qui l’a détruit ?

Réinitialiser le code
def asteroidCollision(asteroids):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Argument

asteroids = [4, 9, -6, 2, -3]

Résultat attendu

[4, 9]