from random import randint from numpy.random import choice # card = id, title, due, interval, owned_by, shared 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 card = dict() card["id"]= id card["title"] = title card["due"] = due card["interval"] = interval card["owned_by"] = user card["shared"] = 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 ##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["due"] 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, due_cards = [], [], [], 0 w_new, w_due = generate_weights(user_clltn) #treba je sestet non zero weights new_cards = sum(w_new) for w in w_due: if w > 0: due_cards += 1 #preverimo, če imamo dovolj kartic if new_cards