Prepovedani intervali

Imamo seznam prepovedanih intervalov števil, na primer

prepovedani = [
    (12, 18),
    (2, 5),
    (3, 8),
    (0, 4),
    (15, 19),
    (6, 9),
    (13, 17),
    (4, 8)
]

To pomeni, da so prepovedana vsa števila od 12 do 18 (vključno z 12 in 18), vsa števila od 2 do 5 in tako naprej.

  1. Napiši program, ki izpiše največjo zgornjo mejo iz seznama. V gornjem primeru torej izpiše 19.

  2. Nato pa napiši program, ki za vsa števila od 0 do največje zgornje meje izpiše prvi interval, ki to število prepoveduje. Če število ni prepovedano, pa naj to pove. Konkretno, program naj izpiše tole:

0 je vsebovan v (0, 4)
1 je vsebovan v (0, 4)
2 je vsebovan v (2, 5)
3 je vsebovan v (2, 5)
4 je vsebovan v (2, 5)
5 je vsebovan v (2, 5)
6 je vsebovan v (3, 8)
7 je vsebovan v (3, 8)
8 je vsebovan v (3, 8)
9 je vsebovan v (6, 9)
10 je dovoljeno
11 je dovoljeno
12 je vsebovan v (12, 18)
13 je vsebovan v (12, 18)
14 je vsebovan v (12, 18)
15 je vsebovan v (12, 18)
16 je vsebovan v (12, 18)
17 je vsebovan v (12, 18)
18 je vsebovan v (12, 18)
19 je vsebovan v (15, 19)

Pazi: vsako število je izpisano le ob prvem intervalu s seznama, ki ga prepoveduje, četudi je morda prepovedano v večih. (Ob številu 2 izpišite, da ga prepoveduje interval (2, 5), ne (0, 4), saj je (2, 5) na spisku prek (0, 4). Program naj ne bo bolj pameten, kot je treba. :) )

Dodatna naloga

K programu dodaj še, da na koncu izpiše najmanjše dovoljeno število, to je, najmanjše celo število, ki ni vsebovano v nobenem od intervalov. V gornjem primeru je to 10.

Če so prepovedana vsa števila do maksimuma, ki smo ga poiskali v ogrevalnem delu, je najmanjše dovoljeno število tisto število, ki sledi temu maksimumu. Za preskus, ali program res deluje pravilno, ga spremeni tako, da dodaš še interval (9, 12). Program naj v tem primeru izpiše 20, saj so vsa števila do 19 prepovedana.