Primeri uporabe množice

Primer 1

Za primer vzemimo, da je tabela prosteUre videti tako:

[ {15, 17, 18, 19}, {14, 17, 19, 21},
  {17, 19, 22}, {16, 17, 18, 19, 20} ]

V tem primeru se lahko dobijo bodisi ob 17. ali pa ob 19. uri. Rezultat je torej množica {17, 19}.

Poiskati moramo torej vse elemente (proste ure), ki nastopajo v vseh množicah. Ti elementi tvorijo ravno presek vseh množic. Presek množic v tabeli izračunamo na podoben način, kot bi na primer izračunali vsoto števil v tabeli.

Ustvarimo pomožno množico, recimo ji m, in jo nastavimo na kopijo prve množice v tabeli (prosteUre[0]). Nato se sprehodimo po tabeli prosteUre in vsakokrat izračunamo presek množice m in trenutne množice v tabeli. Rezultat ponovno zapišemo v množico m. Po prvem obhodu zanke bo množica m (še vedno) enaka množici prosteUre[0], po drugem pa bo vsebovala skupne elemente prvih dveh množic v tabeli prosteUre (torej presek množic prosteUre[0] in prosteUre[1]). Po tretjem obhodu bo množica m vsebovala skupne elemente prvih treh množic itd. Zapišimo našo funkcijo:


Izvedi Počisti



Kaj bi se zgodilo, če bi stavek m = prosteUre[0].copy() nadomestili s preprostejšim m = prosteUre[0]? Funkcija bi sicer še vedno delovala pravilno, bi pa imela nepričakovan stranski učinek, saj bi spremenila del svojega vhoda – množico prosteUre[0]! Če ne razumeš, zakaj, si oglej tole.

Vaja