Choque de trenes T69987


Statement
 

pdf   zip   main.py

Representamos con una cadena de caracteres str formada únicamente por los caracteres ’+’ e ’=’ los desplazamientos de un tren hacia la derecha. Análogamente, representamos con una str formada únicamente por ’-’ e ’=’ los desplazamientos de un tren hacia la izquierda.

El carácter ’+’ significa que el tren se mueve una posición a la derecha en ese segundo; el carácter ’=’ significa que el tren permanece inmóvil ese segundo; y el carácter ’-’ indica que el tren se mueve una posición a la izquierda.

Diseña una función choque(m1: str, m2: str, d: int) -> int que, dado el desplazamiento m1 de un tren moviéndose hacia la derecha, el desplazamiento m2 de otro tren moviéndose hacia la izquierda, con m1 y m2 de la misma longitud, y una distancia inicial d > 0 que indica la separación inicial entre ambos trenes, devuelva el número de segundos que tardan en chocar. Si no chocan, la función debe devolver 0.

Se entiende que los trenes chocan en un instante si, después de ejecutar los desplazamientos correspondientes a ese segundo, la distancia entre ellos se vuelve menor que 0. Si están a distancia cero, aún no han chocado; chocarán cuando alguno de los dos se mueva y reduzca la distancia.

Los trenes no retroceden, es decir, el tren de la derecha nunca se mueve hacia la izquierda, y el tren de la izquierda nunca se mueve hacia la derecha.

Puedes usar funciones como zip o range para resolver el problema.

Ejemplo de sessión

Sample session
>>> choque('+=====+++++++', '-=====-=========', 3)
7
>>> choque('==+=++++=======', '-----=========', 10)
0
>>> choque('+++', '---', 6)
0
>>> choque('++++', '----', 6)
4
Information
Author
infbesos
Language
Spanish
Other languages
Catalan English
Official solutions
Python
User solutions
Python