Izziv: Dovoljena števila
Nadaljuj staro domačo nalogo Prepovedani intervali takole: napiši program, ki pove, koliko je vseh dovoljenih števil med 0 in največjo zgornjo mejo, če so prepovedana vsa števila, ki se nahajajo v naslednjih intervalih (par predstavlja zgornjo in spodnjo mejo; (12, 18)
, pomeni, da so prepovedana vsa števila od 12 do, vključno, 18).
prepovedani = [
(12, 18),
(2, 5),
(3, 8),
(0, 4),
(15, 19),
(6, 9),
(13, 17),
(4, 8)
]
V gornjem primeru mora izpisati 2, saj sta dovoljeni dve števili, 10 in 11.
Potem pa se spopadi z intervali iz datoteke intervali.txt, ki je pripeta k nalogi.
Branja datotek se še nismo učili. Lahko se potrudiš sam(a), lahko pa uporabiš naslednjo vrstico:
intervali = [tuple(int(x) for x in vrstica.split("-")) for vrstica in open("intervali.txt")]
Še en zanimiv izziv je naslednji: recimo, da tvoj računalnik ne bi imel niti toliko pomnilnika, da bi lahko shranil celotno tabelo intervalov. Če hočeš večkrat prek tabele, moraš večkrat odpreti datoteko in jo brati. Z drugimi besedami: nimamo seznamov (ali terk, slovarjev, množic ...), le posamične int-e in datoteke (ter, očitno, niz s posamično vrstico, ki jo dobiš iz datoteke, ter seznam z dvema nizoma, ki ga vrne split
te vrstice). Napiši program, ki kljub tem omejitvam v doglednem času reši nalogo. Recimo tako, da čim manjkrat prebere datoteko.
- 20 October 2020, 8:28 PM