from random import randint, choices # item #collection clltn = [] # card = title, due, interval def generate_card (clltn=[], user="bob", shared=False): id = len(clltn) + 1 title = "".join([chr(randint(ord('a'), ord('z'))) for i in range(5)]) due = -1 #means new interval = 0 owned_by = user card = id, title, due, interval, owned_by, shared return card def generate_clltn (n_of_cards): clltn = [] #mogoče bi blo dobro met dictionary, sam žeštejemo len zgoraj... for n in range(n_of_cards): clltn.append(generate_card(clltn=clltn)) return clltn # USER ## config max_due = 15 max_new = 5 max_deck_size = max_new + max_due # setup user_clltn = generate_clltn(100) # generate deck ##1 SR - super-memo style def get_new(user_clltn, n_of_cards): for card in user_clltn: pass def get_due(user_clltn, n_of_cards): pass def generate_deck_sr(user_clltn, max_new, max_deck_size): pass def run_sr(): pass #2 Probabilistic ## problem je, da pri probabilističnem težko nardiš, da pač en dan ni nič v decku, ker pač vedno izbere glede določeno število pač glede na uteži def generate_weights(user_clltn): """generiramo uteži za due in new cards posebej; vrne tuple dveh listov za weightse...""" weights_due = [] weights_new = [] for card in user_clltn: _, _, due, _, _, _ = card if due > 0: weights_due.append(due) weights_new.append(0) else: weights_due.append(0) weights_new.append(1) return weights_new, weights_due def generate_deck_prob(user_clltn, max_new, max_due): deck, dck_due, dck_new = [], [], [] w_new, w_due = generate_weights(user_clltn) new_cards = sum(w_new) due_cards = sum(w_due) #preverimo, če imamo dovolj kartic if new_cards