Representem amb una cadena de caràcters str formada
únicament pels caràcters ’+’ i ’=’ els
desplaçaments d’un tren cap a la dreta. Anàlogament, representem amb una
str formada únicament pels caràcters ’-’ i
’=’ els desplaçaments d’un tren cap a l’esquerra.
El caràcter ’+’ significa que el tren es mou una posició
cap a la dreta en aquest segon; el caràcter ’=’ significa
que el tren roman immòbil aquest segon; i el caràcter ’-’
indica que el tren es mou una posició cap a l’esquerra.
Dissenya una funció
choque(m1: str, m2: str, d: int) -> int que, donat el
desplaçament m1 d’un tren que es mou cap a la dreta, el
desplaçament m2 d’un altre tren que es mou cap a
l’esquerra, amb m1 i m2 de la mateixa
longitud, i una distància inicial d > 0 que indica la
separació inicial entre ambdós trens, retorni el nombre de segons que
triguen a xocar. Si no xoquen, la funció ha de retornar 0.
S’entén que els trens xoquen en un instant si, després d’executar els desplaçaments corresponents a aquell segon, la distància entre ells esdevé menor que 0. Si estan a distància zero, encara no han xocat; xoquen quan algun dels dos es mou i redueix la distància.
Els trens no reculen, és a dir, el tren de la dreta mai es mou cap a l’esquerra, i el tren de l’esquerra mai es mou cap a la dreta.
Pots fer servir funcions com zip o range
per resoldre el problema.
>>> choque('+=====+++++++', '-=====-=========', 3) 7 >>> choque('==+=++++=======', '-----=========', 10) 0 >>> choque('+++', '---', 6) 0 >>> choque('++++', '----', 6) 4