Compare commits

...

2 Commits

Author SHA1 Message Date
Kostanjevec 0159f5b184 dodal funkcijo za generiranje prob decka 2022-04-29 18:55:36 +02:00
Kostanjevec 94f0fd7f41 dodal funkcijo za generiranje uteži 2022-04-29 18:09:54 +02:00
1 changed files with 58 additions and 13 deletions

71
test.py
View File

@ -1,4 +1,4 @@
from random import randint
from random import randint, choices
# item
#collection
clltn = []
@ -21,8 +21,9 @@ def generate_clltn (n_of_cards):
# USER
## config
deck_size = 3
max_new = 1
max_due = 15
max_new = 5
max_deck_size = max_new + max_due
# setup
user_clltn = generate_clltn(100)
@ -38,7 +39,7 @@ def get_due(user_clltn, n_of_cards):
pass
def generate_deck_sr(user_clltn, max_new, deck_size):
def generate_deck_sr(user_clltn, max_new, max_deck_size):
pass
@ -46,17 +47,49 @@ def run_sr():
pass
#2 Probabilistic
## problem je, da pri probabilističnem težko nardiš, da pač en dan ni nič v decku...
## 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
#TODO
def generate_deck_prob(user_clltn, deck_size, max_new):
deck = []
for c in range(deck_size):
deck.append(user_clltn[c]) # tu vzame prvic ampak moralo bi random c brez ponavljanja obteženih z "due". rabimo tudi naključnih/najnovejših? max_new novih cardov.
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<max_new:
max_new = new_cards
if due_cards<max_due:
max_due = due_cards
if due_cards:
dck_due = choices(user_clltn, cum_weights=w_due, k=max_due)
if new_cards:
dck_new = choices(user_clltn, cum_weights=w_new, k=max_new)
deck = dck_due + dck_new
return deck
print(generate_deck_prob(user_clltn, max_new, max_due))
#TODO?
def prob_eval(card):
id, title, due, interval, owned_by, shared = card #due je tukaj interest rate
@ -87,5 +120,17 @@ def run_prob(deck, user_clltn):
# random python stuff
"""
Output = [item for item in Input
if item[0] == 3 or item[1] == 3]
## kako najt tuple v listu in ga spremeniti?
## kako vzet weight iz tuple in ga assignat pri izbiranju?
recordlist = [('sku1','item1','bro1'),('sku2','item2','bro2')]
for index, item in enumerate(recordlist):
itemlist = list(item)
if itemlist[0] == 'sku1':
itemlist[1] = itemlist[1]+','+'item'
item = tuple(itemlist)
recordlist[index] = item
print(recordlist)
"""