Vežbe 14

Vežbe ćete raditi u grupama po 2-3 (svaki red je jedan tim). Na taj način moći ćete da se međusobno dopunjujete dok rešavate probleme. Rešenja pišite ispod svakog zadatka. Ideja prilikom izrade zadataka jeste da potražite najelegantnije rešenje ako možete. Naravno, koristite Help. Opišite postupak u radu. Posle sačuvajte to što ste radili na USB.

Zadatak br 1

Napišite funkciju faktori[n] koja uzima kao argument ceo broj n, proverava da li je broj prost, i ako nije kao izlaz daje faktore od kojih se sastoji taj broj. U WL postoji funkcija FactorInteger. Ukoliko je n broj 750, na primer, FactorInteger daje sledeće podatke o faktorima

FactorInteger[750]

To znači da se broj 2 pojavljuje jedan put, broj 3 jedan put i broj 5 tri puta, pa je

2 3 5 5 5

Ideja  za funkciju faktori jeste da ona preradi ovu listu u listu u kojoj se svaki činilac (prvi broj u svakoj podlisti) ponavlja onoliko puta koliko to stoji u drugom elementu podliste. Na primer, za broj 750

faktori[750]

treba da da izlaz

{2,3,5,5,5}

Kada napišete ovu funkciju probajte da vidite kako to radi za različite celobrojne vrednosti n.

Zadatak br 2

Napišite funkciju koja kao input uzima ceo broj n. Ukoliko je broj prost, oboji ga u Purple i odštampa u veličini 20. Ukoliko je broj složen, nađe njegove činioce u formatu kako smo to uradili u prehodnom zadatku (recimo, ako je n jednako 750, lista činioca bi bila {2,3,5,5,5})  i odštampa tu listu činioca u crvenom, u veličini 16.

Zadatak br 3

Napišite funkciju palindromQ koja kao ulaz uzima jednu reč (string) i proverava da li je neka reč (string) identična kao inverzija te reči. Takva reč je palindrom. Ukoliko je reč palindrom, izlaz treba da bude string u kome je prva reč ona koju smo uneli  posle čega treba da bude “ je palindrom” (sve kao jedan string), i to obojeno u crveno, boldovano, i veličine 20. Ukoliko reč nije palindrom, izlaz treba da opet bude prvo ulazna reč pa onda “ nije palindrom (sve kao jedan string), obojeno u plavo, podvučeno, i u fontu veličine 20.

Na primer

palindromQ["Rimtutituki"]

Proverite kako funkcija radi na rečima (primenite je na celu listu odjednom).

{"ata","tata","mata","ABBA","rever"}

Zadatak br 4

Prisetimo se da FInancialData služi da unesemo podatke o cenama kompanije iz baze u Wolfram Knowledge database. Na primer, ukoliko želimo da unesemo podatke o cenama IBM za period od 1. januara 2015 do 1. januara 2016 to možemo učiniti ovako (po defoltu to su cene trgovanja na kraju dana)

FinancialData["IBM",{{2015,1,1},{2016,1,1}}]

Ukoliko želimo da dobijemo samo cene ove kompanije, bez datuma, možemo to uraditi ovako

FinancialData["IBM",{{2015,1,1},{2016,1,1}}][[All,2]]

Napišite funkciju matricaCena[listaTikera, pocetniDatum, krajnjiDatum]. Ovde je listaTikera lista stringova koji odgovaraju ticker simbolima kompanija koje želimo da unesemo u matricu cena, pocetni i krajnji datum treba da budu liste brojeva kao u primeru. Na kraju, output treba da izbaci matricu u kojoj svakoj koloni odgovara serija cena akcija. Prvi red u svakoj koloni treba da bude ticker simbol (string), kao naziv kolone. Ukoliko želite da napravite matricu sa podacima za cene IBM i Apple u periodu 1. do 20. januara 2015. godine, treba da dobijete nešto ovako

matricaCena[{"IBM","AAPL"}, {2015,1,1}, {2015,1,20}]