Escribir una función casillas_seguras(n,m,lst) tal que dadas las dimensiones de un tablero de ajedrez n × m y una lista lst de posiciones donde podemos encontrar torres (las piezas de ajedrez), retorne cuántas casillas seguras, fuera de peligro, hay en el tablero. En este problema, decimos que una casilla es segura o está fuera de peligro si no está ocupada ni está amenazada por ninguna torre. Las posiciones vienen dadas por tuplas de dos elementos (f,c) donde 1 ≤ f ≤ n, 1 ≤ c ≤ m.
Por ejemplo, invocando la función:
casillas_seguras(4,6,[(1,2),(1,4),(2,4),(4,4),(4,6)])
el resultado debe ser 3 (para entenderlo mejor, es aconsejable dibujar el tablero y las torres).
Hay más ejemplos en los juegos de pruebas públicos.
Entrada
La función tiene dos enteros n ≥ 1 y m ≥ 1 y una lista de posiciones como parámetros.
Se nos garantiza que la lista de posiciones no tiene más de n × m elementos, todas las posiciones son correctas (están dentro del tablero) y no hay posiciones repetidas (es decir, si la lista tiene t elementos, significa que hay t torres diferentes en el tablero).
Observaciones
No puede usarse ningún módulo adicional.
Una vez definida la función, al probarla en el REPL de Python debería salir lo mismo que puede observar más abajo.
>>> casillas_seguras(4,6,[(1,2),(1,4),(2,4),(4,4),(4,6)]) 3 >>> casillas_seguras(1,1,[(1,1)]) 0 >>> casillas_seguras(2,3,[(1,1)]) 2 >>> casillas_seguras(2,3,[(1,1),(2,3),(2,1)]) 0 >>> casillas_seguras(200,100,[(1,1),(200,1),(1,100),(200,100)]) 19404 >>>