|
|
@ -232,6 +232,7 @@ def gen_rocniky(last_rocnik, size): |
|
|
|
def gen_cisla(rocniky): |
|
|
|
slovnik_rocnik_cisla = {} |
|
|
|
for rocnik in rocniky: |
|
|
|
otec = True |
|
|
|
slovnik_cisel = {} |
|
|
|
cisel = rnd.randint(4, 8) |
|
|
|
node = None |
|
|
@ -261,6 +262,10 @@ def gen_cisla(rocniky): |
|
|
|
) |
|
|
|
node2 = CisloNode.objects.create(cislo = cislo, succ = node) |
|
|
|
node = node2 |
|
|
|
if otec: |
|
|
|
otec = False |
|
|
|
rocnik.RocnikNode.first_child = node |
|
|
|
rocnik.save() |
|
|
|
|
|
|
|
slovnik_cisel[ci] = cislo |
|
|
|
slovnik_rocnik_cisla[rocnik] = slovnik_cisel |
|
|
@ -268,10 +273,6 @@ def gen_cisla(rocniky): |
|
|
|
|
|
|
|
def gen_temata(rocniky, slovnik_rocnik_cisla): |
|
|
|
slovnik_rocnik_temata = {} |
|
|
|
for rocnik in rocniky: |
|
|
|
temata = {} |
|
|
|
for cislo in slovnik_r[rocnik] |
|
|
|
if cislo <= 3: |
|
|
|
jake = ["Hravé", "Fyzikální", "Nejlepší", "Totálně masakrální", |
|
|
|
"Šokující", "Magnetické", "Modré", "Překvapivé", |
|
|
|
"Plasmatické", "Novoroční"] |
|
|
@ -279,6 +280,12 @@ def gen_temata(rocniky, slovnik_rocnik_cisla): |
|
|
|
"drama", "kuře", "moře", "klání", "proudění", "čekání"] |
|
|
|
poc_oboru = rnd.randint(1, 2) |
|
|
|
poc_op = rnd.randint(1, 3) |
|
|
|
n = 1 |
|
|
|
for rocnik in rocniky: |
|
|
|
temata = {} |
|
|
|
slovnik_cisel = slovnik_rocnik_cisla[rocnik] |
|
|
|
for cislo in slovnik_cisel |
|
|
|
if cislo.cislo <= 3: |
|
|
|
t = Tema.objects.create( |
|
|
|
# atributy třídy Problem |
|
|
|
nazev=" ".join([rnd.choice(jake), rnd.choice(co)]), |
|
|
@ -286,42 +293,72 @@ def gen_temata(rocniky, slovnik_rocnik_cisla): |
|
|
|
zamereni=rnd.sample(["M", "F", "I", "O", "B"], poc_oboru), |
|
|
|
autor=rnd.choice(organizatori), |
|
|
|
garant=rnd.choice(organizatori), |
|
|
|
# FIXME: téma má kód podle čísla, až jich bude |
|
|
|
# více, tak udělat kód podle pořadí vygenerování |
|
|
|
kod=str(cislo), |
|
|
|
kod=str(n), |
|
|
|
# atributy třídy Téma |
|
|
|
tema_typ=rnd.choice(Tema.TEMA_CHOICES), |
|
|
|
rocnik=rocnik) |
|
|
|
rocnik=rocnik |
|
|
|
) |
|
|
|
n+=1 |
|
|
|
konec_tematu = rnd.randint(cislo.cislo, 7) |
|
|
|
for i in range(cislo.cislo, min(konec_tematu, len(slovnik_cisel))): |
|
|
|
node = TemaVCisleNode.objects.create(tema = t) |
|
|
|
otec = slovnik_cisel[i].CisloNode |
|
|
|
bratr = otec.first_child |
|
|
|
node.succ = bratr |
|
|
|
otec.first_child = node |
|
|
|
node.save() |
|
|
|
otec.save() |
|
|
|
|
|
|
|
t.opravovatele=rnd.sample(organizatori, poc_op) |
|
|
|
t.save() |
|
|
|
temata[cislo] = t |
|
|
|
slovnik_rocnik_temata[tema] = temata |
|
|
|
|
|
|
|
def gen_ulohy_k_tematum(rocniky, slovnik_rocnik_cisla, slovnik_rocnik_temata): |
|
|
|
|
|
|
|
def gen_ulohy_k_tematum(rocniky, slovnik_rocnik_cisla, slovnik_rocnik_temata): #Tahle funkce je nedodělaná |
|
|
|
# ulohy resene v cisle |
|
|
|
jaka = ["Šachová", "Černá", "Větrná", "Dlouhá", "Křehká", "Rychlá", |
|
|
|
"Zákeřná", "Fyzikální"] |
|
|
|
co = ["kostka", "smršť", "díra", "zrada", "toulka", "tyč", |
|
|
|
"úloha", "blecha"] |
|
|
|
sloveso = ["Najděte", "Spočítejte", "Zapište", "Změřte", "Odhadněte"] |
|
|
|
koho = ["délku", "počet", "množství", "dílky"] |
|
|
|
ceho = ["všech", "správných", "konstatních", "zelených"] |
|
|
|
jmeno = ["řešení", "tahů", "čísel", "kalhot", "koulí", "hadů"] |
|
|
|
kde = ["na zemi", "ve vesmíru", "ve vzduchu", "na šňůře", "v letadle"] |
|
|
|
obor = ["M", "F", "I", "O", "B"] |
|
|
|
reseni = ["to je přece jasné", "triviální", "omlouváme se," |
|
|
|
"otevřený problém", "neřešitelné", "triviálně triviální", |
|
|
|
"použitím věty z prvního semestru na matfyzu", |
|
|
|
"jednoduše pomocí látky z druhého semestru na matfyzu", |
|
|
|
"netriviální aplikace diferenciálních rovnic", "zadání je vnitřně" |
|
|
|
"sporné", "nepopsatelně jednoduché", "pokud jste na to nepřišli," |
|
|
|
"tak jste fakt hloupí"] |
|
|
|
for rocnik in rocniky: |
|
|
|
slovnik_cisel = slovnik_rocnik_cisla[rocnik] |
|
|
|
cisel = len(slovnik_cisel) |
|
|
|
slovnik_temat = slovnik_rocnik_temata[rocnik] |
|
|
|
for tema in slovnik_temat: |
|
|
|
for i in range(tema. |
|
|
|
if #TODO |
|
|
|
for cislo in slovnik_cisel: |
|
|
|
syn = cislo.CisloNode.first_child |
|
|
|
while syn != None: |
|
|
|
tema = syn.tema |
|
|
|
for i in range(1, rnd.randint(1, 4)) |
|
|
|
poc_op = rnd.randint(1, 4) |
|
|
|
poc_oboru = rnd.randint(1, 2) |
|
|
|
p = Uloha.objects.create( |
|
|
|
nazev=": ".join([tema.nazev, |
|
|
|
"úloha {}.".format(i-ci+1)]), |
|
|
|
"úloha {}.".format(i)]), |
|
|
|
nadproblem=tema, |
|
|
|
stav=Problem.STAV_ZADANY, |
|
|
|
zamereni=t.zamereni, |
|
|
|
autor=t.autor, |
|
|
|
garant=t.garant, |
|
|
|
zamereni=tema.zamereni, |
|
|
|
autor=tema.autor, |
|
|
|
garant=tema.garant, |
|
|
|
opravovatele=rnd.sample(organizatori, poc_op), |
|
|
|
kod=str(i), |
|
|
|
cislo_zadani=slovnik_cisel[ci], |
|
|
|
cislo_reseni=slovnik_cisel[ci+2], |
|
|
|
cislo_deadline=slovnik_cisel[ci+2], |
|
|
|
max_body = rnd.randint(1, 8)) |
|
|
|
cislo_zadani=cislo, |
|
|
|
cislo_reseni=slovnik_cisel[cislo.cislo+2], |
|
|
|
cislo_deadline=slovnik_cisel[cislo.cislo+2], |
|
|
|
max_body = rnd.randint(1, 8) |
|
|
|
) |
|
|
|
p.zadani = " ".join([rnd.choice(sloveso), rnd.choice(koho), |
|
|
|
rnd.choice(ceho), rnd.choice(jmeno), rnd.choice(kde)]) |
|
|
|
|
|
|
@ -338,6 +375,9 @@ def gen_ulohy_k_tematum(rocniky, slovnik_rocnik_cisla, slovnik_rocnik_temata): |
|
|
|
p.save() |
|
|
|
|
|
|
|
|
|
|
|
syn = syn.succ |
|
|
|
|
|
|
|
|
|
|
|
# vytvor text |
|
|
|
# vytvor TemaVCisleNode |
|
|
|
if (rnd.randint(1, 3) % 3 == 0): |
|
|
|