Sheram jedan zadačić…razonode radi…tko voli razmišljati na programeski način, uživat će.
Programiranje zapravo uopće nije potrebno…dovoljno je dati ideju kako bi se problem rješio.
Problem je sljedeći:
imamo mnogokut
što znači da su mu sve stranice ravne
mnogokut međutim može biti nepravilan
što znači da je moguće spojiti dvije točke mnogokuta, a da linija koja spaja te dvije točke izađe izvan mnogokuta
drugim riječima, nepravila mnogokut je slovo “W” (Zamislimo naravno debljinu linije slova, kako bi dobili površinu mnogokuta “W”)
jedina slova koja su pravilan mnogokut su slova “I” i “D” “O”. Naravno, kod “D” i “O” moramo zamisliti da zaobljene linije razbijemo na više ravnih linija. Sva druga slova bi bila nepravilan mnogokut.
Svaki mnogokut znači može imati koliko god točaka koje predstavljaju neki njegov vrh. I to je njegova definicija…te točke u prostoru. (Ako smo u 2D sustavu, svaka točka ima x,y vrijednost)
Bitan je i redosljed točaka koji nam mora biti poznat…jer on nam govori koji vrh je sa kojim spojen…tj. definira koje su stranice mnogokuta.
I sada zadatak:
Kako odrediti da li dva mnogokuta (čiji su nam vrhovi poznati) imaju zajednički presjek?
Nešto si krivo shvatio. Nije potrebno rješenje…nego tko želi da uživa u osmišljavanju rješenja.
Ti si vidim jako ponosan kad ti netko da logičku zagonetku, a ti ga zaebeš jer znaš kako ćeš da izguglaš rješenje. xd xd.
Zagonetke su da se rješavaju, ne da se šapću rješenja.
A što se tiče ovog gore problema, ima na svu sreću više zanimljivih rješenja. Jedno je baš predivno…a začudo nisam našao da se spominje. To me ujedno motiviralo za temu…pa ako se netko sjeti nečeg jako zanimljivog, neka puca
Mali offtopic ali da li ste se ikada zapitali koliko zaista znate? Ne neko drugi na internetu na koga vas neki od pretrazivaca uputi nego bas vi? I koliko bi ste posla uradili da nema interneta 7 dana?
Skor’o sam nabas’o na Google intervju pitanje namijenjeno kandidatu za Lead poziciju.
Rješenje k’o i svako je jednostavno (kad je riješeno je l’) al’ se radi o nečem s čim se nisam susret’o.
Crawler koji praviš mora prije crawl-anja da provjeri [zasad] bilion (eng. trillion) spam linkova.
Dakle prije (svakog) crawl-anja novog linka. Osnovni uslov je da se ne crawl-a link koji se nalazi na listi.
Traži se prihvatljivo rješenje koje će moći podržati mašina od 32 GB RAM-a [koja crawl-a].
Hint: nešto se može malo i žrtvovati (i.e. accuracy) ali ni po koju cijenu se ne smije crawl-ati link sa liste.
Pa lista je ustvari rezultat tako da svaki naredni link treba da se provjeri u odnosu na listu.
Što je 2.000.000 chunk pretraga dok bi samo jedan link potražio. 32 GB vjerovatno može i na desetine miliona da pretraži ali opet se svodi na desetine hiljada full-size pretraga.
Neka je i jedan [link u pitanju] ali akcija bi vjerovatno bila: crawler dobije listu od par stotina (vjerovatnije nekol’ko hiljada ili više) linkova koje treba crawl-ati i prije svakog crawl-anja mora se biti sigurno da se link ne nalazi u listi.
Hint: nije bitno ako se ne crawl-a link koji nije na listi ali je kritički bitno da se ne crawl-a link koji je na listi.
Mislim da se ne može uticati na listu na taj način.
Tj. smatram da je lista decidna i da se ne može proizvoljno mijenjati.
Bitna stavka je da se ne dopusti da se crowl-uju spam linkovi koji su uvršteni u listu.
Hint: Činjenica stoji da treba razmotriti/uobziriti i način smještanja bilion redova u listu.