Moviment

Dissenya funció moviment que ha d’executar el miniprocessador que controla un ascensor. Aquesta funció, un cop l’ascensor arriba a una planta, aplica unes regles i retorna un enter que indica si l’ascensor ha d’anar cap amunt (1), cap avall (-1) o quedar-se quiet (0). La funció té un paràmetre enter i dos paràmetres booleans. L’enter indica si de dins de l’ascensor s’ha polsat per anar cap amunt (1), cap avall (-1) o no hi ha res polsat (0). El primer paràmetre booleà indica si hi ha una sol·licitud de l’ascensor en alguna planta superior (True) o no (False). El segon paràmetre booleà indica el mateix per alguna planta inferior.

La regla que s’aplica és que l’ascensor obeeix primer el que se li indica des de dins de la cabina i, en cas que no se li indiqui res, obeeix la crida d’altres pisos donant prioritat a pujar en cas que hi hagi crides des de plantes superiors i inferiors a la vegada.

Desa la funció al fitxer moviment.py. La funció ha de passar el següent doctest:

>>> moviment(0, True, True)
1
>>> moviment(-1, True, False)
-1
>>> moviment(1, True, True)
1
>>> moviment(1, True, False)
1
>>> moviment(0, False, True)
-1
>>> moviment(0, False, False)
0

Nota

Pots descarregar el fitxer amb tests moviment.txt

Solució

Disposes de solucions al fitxer moviment.py