Nadlogar je spletna storitev za generiranje naključnih nalog ter njihovih rešitev. Učitelj izbere seznam tipskih nalog in vzorčno izhodno datoteko ter naloži seznam učencev, storitev pa za vsakega učenca ustvari posamezne datoteke z nalogami ter skupno datoteko z rešitvami. Naloge niso čisto naključne, saj storitev za istega učenca vedno vrne enako nalogo, kar omogoča, da naloge naknadno popravljate, ne da bi se vam pri tem v celoti spremenile.
Nadlogar je projekt, ki nastaja v okviru programerskega kluba Fakultete za matematiko in fiziko, Univerza v Ljubljani. Poleg vseh članov kluba, ki k razvoju prispevajo vse od idej do kode, so k razvoju bistveno pomagali oziroma še pomagajo:
Na začetku klonirajte repozitorij ter ustvarite virtualno okolje:
git clone [email protected]:ul-fmf/nadlogar.git
cd nadlogar
python3 -m venv venv
Dobiti bi morali sledečo strukturo datotek:
nadlogar/
nadlogar/
config/
documents/
...
manage.py
...
venv/
...
Po prvi namestitvi, pa tudi na vsake toliko časa, greste v mapo nadlogar/nadlogar/
ter s sledečimi ukazi kodo posodobite, aktivirate virtualno okolje, namestite potrebne pakete in posodobite bazo:
git pull
source venv/bin/activate
pip install -r requirements/local.txt
python manage.py migrate
Če uporabljate Windowse, je drugi ukaz drugačen
git pull
venv\Scripts\activate
pip install -r requirements\local.txt
python manage.py migrate
Strežnik nato poženete z
python manage.py runserver
Teste poženete z
python manage.py test
Po namestitvi je koristno pognati
python manage.py loaddata documents/fixtures/initial.json
Tako naložite nekaj koristnih LaTeX predlog.
Če poženete ukaz
python manage.py runserver
vam na lokalnem strežniku požene spletno stran. Vendar se morate za njeno uporabo najprej prijaviti. Zato ustvarite adminskega uporabnika, kar storite z ukazom
python manage.py createsuperuser
Ko to storite, vam je dostopen tudi adminski vmesnik, kjer med drugim lahko dodajate nova besedila nalog (vsaj zaenkrat, saj se bo shranjevanje besedil kmalu spremenilo).
Za navodila glede dodajanja funkcionalnosti in popravljanja napak glejte CONTRIBUTING.md.
Dodana dva tipa nalog pri zaporedjih
Tretji in četrti tip v issue #39
- [x] Naloga za iskanje splošnega člena poljubnega zaporedja
- [x] Naloga za zapis splošnega člena aritmetičnega zaporedja in računanje prvih petih členov, če poznaš prvi člen in diferenco
- [x] Naloga za zapis splošnega člena aritmetičnega zaporedja, če poznaš dva člena zaporedja
- [x] Naloga za zapis splošnega člena aritmetičnega zaporedja, če imaš podani dve enačbi z različnimi členi zaporedja
- [ ] Naloga za izračun vsote prvih n členov aritmetičnega zaporedja
- [ ] Naloga za zapis splošnega člena geometrijskega zaporedja in računanje prvih petih členov, če poznaš prvi člen in količnik
- [ ] Naloga za zapis splošnega člena aritmetičnega zaporedja, če poznaš dva člena zaporedja ali en člen in količnik zaporedja
- [ ] Naloga za zapis splošnega člena geometrijskega zaporedja, če imaš podani dve enačbi z različnimi členi zaporedja
- [ ] Naloga za izračun vsote prvih
n
členov geometrijskega zaporedja- [ ] Naloga za zapis geometrijske vrste, če poznaš dva podatka
Dodal naloge s kvadratnimi in linearnimi funkcijami. Risanje grafov ne deluje.
Trenutno se lahko zgodi, da so nekatere podnaloge med seboj identične. Sklepam, da je to posledica uporabe sympy.simplify(), mogoče pa bi bilo, da se problem pojavi že pri generiranju podnalog.
help_text
v parametrihCONTRIBUTING.md
Trenutno se v razredih, ki definirajo posamezne probleme, nahaja ogromno spremenljivk, katerih pomen ni takoj jasen. Pri tem so še najbolj moteča enočrkovna imena.
Predlagam, da se ta imena pregleda in smiselno popravi.
Closes #16
(To je še ena stvar, o kateri smo se pogovarjali na programerskem klubu v okviru #71)
Vsaka naloga ima lahko več podnalog, ki so vse generirane z istim generatorjem. Na primer, lahko imamo eno samo nalogo
Najdi ničle polinoma x^2
ali pa nalogo z več podnalogami
Najdi ničle naslednjih polinomov: x^2, x^2 - 1, x + 2
Trenutno imamo samo eno besedilo in pogojni stavek v predlogi dokumenta, npr. {% if texts|length > 1 %}
v https://github.com/ul-fmf/nadlogar/blob/f9a805b0e69f547b5835bc452a02e9a61b472a24/nadlogar/documents/fixtures/initial.json#L7
To ni optimalno, ker tudi sproducira nekaj v stilu
- Najdi ničle polinoma x^2
- Najdi ničle polinoma x^2 - 1
- Najdi ničle polinoma x^2 + 2
Ideja je, da se da imeti dve vrsti besedil, enega za ednino in enega za množino, ki ima glavo, ponavljajoči se del ter morebitni rep. Verjetno je za narediti dva podrazreda SingularProblemText
in MultipleProblemText
ali kaj takega. Mnenja?