def na_pol(mn): '''Vrne dve množici tako, da množico mn razdeli na dve polovici''' tab = list(mn) koliko = len(tab) // 2 prva_mn = set(tab[:koliko]) druga_mn = set(tab[koliko:]) return (prva_mn, druga_mn) def na_pol_V2(mn): '''Vrne dve množici tako, da množico mn razdeli na dve polovici brez uporabe tabel''' prva_mn = set() druga_mn = set() v_prvo = True for elt in mn: if v_prvo : prva_mn.add(elt) else: druga_mn.add(elt) v_prvo = not v_prvo return (prva_mn, druga_mn) def na_pol_V3(mno): '''Razdelimo množico mno na dve polovici''' koliko = len(mno) st_el = koliko//2 # koliko elementov bo v novi množici nova = set() for x in mno: # najprej poberemo pol elementov iz mno if len(nova)== st_el: # dobili smo že dovolj elementov break nova.add(x) # ustvarimo še drugo polovico druga = mno.difference(nova) return (nova, druga)