[QGHG-it-dev-list] Zadatak 7 - snimanje kompleksa u fajl
Dusan Cvijetic
dusancvijetic2000 at gmail.com
Wed Mar 2 15:33:27 CET 2022
Pozdrav,
Da li treba da pišem parser od nule, ili mogu da koristim neku gotovu
biblioteku? Video sam da za .xml fajlove postoji, recimo, RapidXml
<http://rapidxml.sourceforge.net/>, a za .json fajlove jsoncpp
<https://github.com/open-source-parsers/jsoncpp>. Oba imaju MIT licencu,
koja nam, koliko sam razumeo, dozvoljava da sa njima radimo šta želimo, dok
god uz izvorni kod uključimo i fajl sa samom licencom.
Ako biste radije da pišem parser od nule, onda bismo možda mogli da ga
realizujemo kao zasebnu klasu (sa decom-klasama za svaku vrstu fajla), pa
da SimpComp sadrži kao svoje polje jedan pokazivač na njen objekat, i
funkcije za pisanje/čitanje koje polimorfno pozivaju odgovarajući parser, u
zavisnosti od vrste fajla koji koristimo.
Pozdravi,
Dušan
пон, 28. феб 2022. у 15:36 Marko Vojinovic <vmarko at ipb.ac.rs> је написао/ла:
>
> Svakako, samo napred --- jedino uzmi u obzir da sam ja pisao onu .xml
> notaciju napamet, nisam siguran kako tacno treba da glasi. Pogledaj negde
> na netu kakva je pravilna sintaksa i specifikacija za .xml, nemoj da se
> oslanjas mnogo doslovno na moje primere u formulaciji zadatka.
>
> :-)
> Marko
>
>
> Dr. Marko Vojinovic
> Group for Gravitation, Particles and Fields
> Institute of Physics
> University of Belgrade
> ======================
> home page: www.markovojinovic.com
> e-mail: vmarko at ipb.ac.rs
>
>
>
> On Sun, 27 Feb 2022, Dusan Cvijetic wrote:
>
> > Pozdrav,
> >
> > Uzeo bih ovaj zadatak da radim, ako je to u redu.
> >
> > Pozdravi,
> > Dušan
> >
> > пет, 11. феб 2022. у 23:14 Marko Vojinovic <vmarko at ipb.ac.rs> је
> написао/ла:
> >
> > Implementirati metod u klasi SimpComp koji ce da snimi dati
> simplicijalni kompleks u fajl:
> >
> > file* SimpComp::save_complex_to_file( string filename );
> >
> > Input: ime fajla u koji ce se snimiti kompleks.
> > Output: pointer na fajl u koji je snimljen kompleks.
> >
> > Prvi korak u implementaciji ovoga je odabir tipa fajla koji ce da
> sadrzi podatke, i njegove strukture. Fajl mora da bude istovremeno i
> machine-readable i human-readable, i
> > dva moguca predloga su .xml i .json tipovi, mada slobodno
> predlozite i neki treci ako mislite da je bolji od ova dva. Algoritam za
> snimanje bi trebalo da ide ovako:
> >
> > (1) Zapamtiti trenutnu vrednost globalne varijable
> next_free_uid_number iz klase UniqueIDColor (na primer, neka ta vrednost
> bude 12). Kompleks mozda vec sadrzi neke boje iz
> > ove klase, i sve instance za koje je id manji od ove zapamcene
> trenutne vrednosti treba preskakati i ignorisati u nastavku algoritma, tj.
> tretirati ih kao i boje svih
> > ostalih tipova.
> >
> > (2) Obojiti ceo kompleks bojom UniqueID (pozvati f-ju
> UniqueIDColor::colorize_entire_complex() iz zadatka 2). Ove nove id-ove
> cemo da koristimo za imenovanje pojedinacnih
> > simpleksa u fajlu.
> >
> > (3) Zapisati u fajl strukturu vektora elements naseg kompleksa ---
> deklarisati level 0 i u njemu pobrojati nove id boje svih 0-simpleksa,
> zatim deklarisati level 1 i
> > pobrojati sve 1-simplekse, itd zakljucno sa nivoom D. U .xml
> formatu bi to moglo da izgleda npr ovako (ne znam tacno kako ide .xml
> sintaksa, pisem po secanju):
> >
> > <level 0>12,13,14,15,16,17,18</level 0> // id brojevi nivoa 0 u
> kompleksu
> > <level 1>19,20,21,22</level1> // id brojevi nivua 1 u
> kompleksu
> > ... // nastavljamo ovako
> zakljucno sa nivoom D
> >
> > Obratite paznju da su svi id brojevi >= 12.
> >
> > (4) Zapisati u fajl strukturu svakog k-simpleksa --- deklarisati
> simpleks njegovim id brojem, i zatim ispisati sve tipove i vrednosti boja,
> kao i id brojeve svih njegovih
> > suseda, poredjanih kao u koraku (3). Na primer, .xml sintaksa bi
> izgledala recimo ovako:
> >
> > <ksimplex 12>
> > <color-type>0</color-type> // ova nula je TYPE_BOUNDARY
> > <color-value>true</color-value> // ovo je vrednost boundary boje
> > <color-type>129</color-type> // ovo je TYPE_UNIQUE_ID
> > <color-value>11</color-value> // ovo je id vrednost UniqueID
> boje, koja je *manja* od 12
> > ... // pisemo type-value kombinacije
> za sve boje, *osim* za (poslednju) UniqueID boju koja je veca od 12
> > <level 0></level0> // ovaj simpleks npr nema susede
> nivoa nula
> > <level 1>19,22,41,356</level1> // id boje suseda nivoa 1 (svi su
> *veci* od 12...)
> > ... // pisemo strukturu za svih D
> nivoa suseda
> > </ksimplex 12>
> > <ksimplex 13> // ponavljamo gornju strukturu za
> naredni k-simpleks
> > ...
> > </ksimplex 13>
> > ... // dok ne uradimo sve k-simplekse
> u kompleksu.
> >
> > Kad se ovo zavrsi, fajl je snimljen, zatvoriti ga. Ukoliko postoje
> neke vec gotove biblioteke C++ rutina koje konstruisu .xml i .json sintaksu
> na osnovu nekih ulaznih
> > podataka, verovatno je dobra ideja da ih iskoristimo, umesto da
> sami pisemo svaki simbol tih fajlova (smanjicemo mogucnost sintaksnih
> gresaka i povecacemo kompatibilnost).
> >
> > (5) Deinstancirati sve UniqueID boje iz kompleksa koje smo dodali
> u koraku (2), uz paznju da ne diramo eventualne UniqueID boje koje su vec
> postojale (koje imaju id vrednost
> > < 12 iz primera), cime vracamo kompleks u njegovo pocetno stanje.
> Takodje, setovati globalnu varijablu next_free_uid_number natrag na
> vrednost 12, zapamcenu u koraku (1).
> >
> > Takodje, mozda bi imalo smisla napraviti dve f-je za snimanje
> fajla (umesto one jedne deklarisane gore),
> >
> > SimpComp::save_complex_to_xml_file()
> > SimpComp::save_complex_to_json_file()
> >
> > koje bi implementirale sve ovo odozgo, ali sa sintaksom
> odgovarajucom za dati format. Ubuduce cemo mozda da smislimo i neki treci
> format za snimanje, na primer .tex (za
> > crtanje TikZ paketom u LaTeX-u), ili .nb (za Mathematicu), ili sl.
> >
> >
> > :-)
> > Marko
> >
> >
> > Dr. Marko Vojinovic
> > Group for Gravitation, Particles and Fields
> > Institute of Physics
> > University of Belgrade
> > ======================
> > home page: www.markovojinovic.com
> > e-mail: vmarko at ipb.ac.rs
> >
> >
> > --
> > QGHG-it-dev-list mailing list
> > QGHG-it-dev-list at ipb.ac.rs
> > http://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list
> >
> >
> >--
> QGHG-it-dev-list mailing list
> QGHG-it-dev-list at ipb.ac.rs
> http://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ipb.ac.rs/pipermail/qghg-it-dev-list/attachments/20220302/a54175c9/attachment.htm>
More information about the QGHG-it-dev-list
mailing list