Reconocimiento de recorridos correctos

Se usará la misma representación del ejercicio anterior para las subidas y bajadas en el autobús; es decir, una lista de pares donde los primeros elementos es el número de viajeros que suben y los segundo es el de los que bajan.

Un recorrido es correcto si en cada bajada tanto el número de viajeros que suben como los que bajan son positivos, el número de viajeros en el autobús no puede ser mayor que su capacidad y el número de viajeros que bajan no puede ser mayor que el número de viajeros en el autobús. Se supone que en la primera parada el autobús no tiene viajeros.

Definir la función

tal que (recorridoCorrecto n ps) se verifica si ps es un recorrido correcto en un autobús cuya capacidad es n. Por ejemplo,

el segundo ejemplo es incorrecto porque en la última para se supera la capacidad del autobús; el tercero, porque en la primera para no hay viajeros en el autobús que se puedan bajar y el cuarto, porque en la 2ª parada el autobús tiene 3 viajeros por lo que es imposible que se bajen 7.

Soluciones

16 Comentarios

    1. Realmente no nos importa el valor de a en la primera guarda de f, por tanto podemos mejorar la eficiencia de la siguiente forma:

      1. Aunque habría que añadirle que a debe ser mayor que d para corregirle un error:

        1. Y ya que estamos, para corregir los casos con ps = [] y n < 0 quitamos la última línea, y también nos podemos ahorra comprobar b == 0 y de paso el segundo argumento:

    1. Buenas, la definición es incorrecta. Por ejemplo:

      Donde recorridoCorrecto2 es tu función.

      1. Cierto es, el error radica en que cuando defino numeroDeViajeros olvido el valor inicial, quedaría así:

        Muchas gracias.

        1. Una última variación :

          1. Me he dado cuenta de un problema con los negativos, así como que numeroDeViajeros no era correcta

    1. Buenas, la definición no es correcta. Por ejemplo:

      Donde recorridoCorrecto2 es tu función.

      1. Falla en el primer ejemplo,

        y debería de dar True.

Escribe tu solución