Saltar al contenido

Las partículas que chocan

Enunciado

Anneliese Brandt, física experimental, apaga el haz del acelerador lineal y necesita saber qué partículas siguen vivas en el tubo de vacío. Recibes particulas, la fila del tubo de izquierda a derecha: enteros distintos de 0 (puede venir vacía). El signo es la dirección (positivo a la derecha, negativo a la izquierda) y el valor absoluto, la masa. Todas van a la misma velocidad: solo chocan una que va a la derecha y la que tiene justo después, si esa va a la izquierda. Dos en la misma dirección nunca se alcanzan, y un -2 seguido de un 1 se alejan. En un choque se desintegra la de menos masa y la otra sigue igual; con masas iguales, las dos. Al quitar una, sus vecinas quedan pegadas y pueden chocar: repite hasta que no haya ningún choque pendiente. Regresa las que sobreviven, en su orden, o [] si no queda ninguna. Con [3, -7, 2, 4, -4]: 3 choca con -7 y el 3 se desintegra; 4 y -4 pesan igual y se van las dos; el 2 ya no tiene con quién chocar. Regresas [-7, 2].

Ejemplos

  • El ejemplo

    [3, -7, 2, 4, -4] → [-7, 2]

  • La pesada se come a la ligera

    [5, 10, -5] → [5, 10]

  • Masas iguales, se van las dos

    [8, -8] → []

  • Se alejan y nadie choca

    [-2, -1, 1, 2] → [-2, -1, 1, 2]

  • Un choque abre otro

    [10, 2, -5] → [10]

  • Una sola partícula

    [4] → [4]

Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.

Empiezas con esto

Python

def sobrevivientes(particulas):
    pass

JavaScript

function sobrevivientes(particulas) {
}
Resolver este reto

Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.

Más retos de O(n²)

Ver todos los retos →