ITI0140: Ülesanne 9

Allikas: Kursused
Redaktsioon seisuga 16. november 2015, kell 12:46 kasutajalt Triin (arutelu | kaastöö)
(erin) ←Vanem redaktsioon | Viimane redaktsiooni (erin) | Uuem redaktsioon→ (erin)
Mine navigeerimisribale Mine otsikasti

Krahv Monte Cristo

Olles just põgenenud vanglast reeturlikust sõbra, Fernandi, tegemiste tõttu leiad sa ennast haudumast kättemaksu. Sul küpseb ideaalne plaan, kus sa valeidentiteedi abil portreteerid ennast rikka ja eduka, miljonärist Transferwise asutajana. Sa paned Fernandi valiku ette, kui ta suudab lahendada su ülesande, saab ta osa sinu "varandusest" endale.

Sulle on antud ruutudeks jaotatud piiratud pindalaga ala (circle_20.txt korral 20x20 ühikut, circle_100.txt korral 100x100 ühikut), mille sisse oled paigutanud ringikujuliselt aarde. Katse eesmärgiks on juhuslikult valida ruute. Sinu eesmärgiks on juhuslikult valitud ruutude abil (kas sa said peale aardele ('1') või tühjusele('0')) välja tuletada antud ringi pindala. Taibuka arendajana mõtled sa välja, et tuleks kasutada statistilist Monte Carlo meetodit.

Kirjuta programm kasutades faili template.py, kuhu kirjutad Monte Carlo simulatsiooni. Andmete sisendiks kasuta faili MockService(), milles on aardekaart Circle.txt. (NB! Kõik kolm faili tuleb alla laadida oma arvutisse)

Fail MockService() sisaldab järgmisi funktsioone:

>>info() - väljastab informatsiooni ühe ruudu kohta aardeväljal

>>get_area() - tagastab aardevälja pindala

>>get_width() - tagastab aardevälja laiuse

>>get_heigth() - tagastab aardevälja pikkuse

>>tries_left() - tagastab arvu, mitu korda saate veel ruute aardeväljalt valida.

MockService() funktsionaalsust kasutades tuleb kirjutada universaalne Monte Carlo simulatsioon MonteCarloSimulation() klassi (fail template.py), mis väljastab sõnastiku, kus võtmeteks on ruudu informatsioon ja väärtusteks antud võtme (näiteks '1') pindala suhe kogupindalaga.


Näide (kasutades faili squares.txt):

>> simulation = MonteCarloSimulation(MockService.MockService("squares.txt)) -->käivitad simulatsiooni

>> simulation.get_area() --> {'0': 6.698, '1':5.141,'2':5.141}


Tehnilised nõuded:

Fail nimega EX09.py (ainult see fail!) tuleb laadida oma repositooriumi kausta EX09


PS! Meetodi kohta saab täpsemalt lugeda siit: http://statweb.stanford.edu/~owen/mc/

...ja kasutada abiks loengukonspekti!