Í næstu viku verður haldið áfram með útfærslu á hlöðum og biðröðum.
Tökum sem dæmi að við viljum herma eftir Njálu. Einfaldasta útgáfa af Drifhöfundi myndi finna tíðni allra bókstafa í Njálu og í hvert sinn velja einn bókstaf af handahófi byggt á þeim líkum. Til dæmis, ef eyða, ' ', er fimmti hver stafur að meðaltali í Njálu þá eru líkurnar á því að forritið skrifi út eyðu 20%. Næstalgengasti stafurinn er kannski 'a' og þá eru minni líkur á að forritið velji hann, o.s.frv. Textinn sem kemur út hefur sömu tíðnidreifingu á bókstöfunum og Njála, en líkist Njálu ekki mikið.
Við getum hins vegar haldið aðeins lengra með þessa hugmynd og byggt líkurnar á því hvaða bókstafur kom síðast. Það eru til dæmis mun meiri líkur á bókstafnum 'ð' ef síðasti stafur var 'a', en ef hann var einhver annar stafur. Þetta er vegna þess að orðin "að" og "það" koma víða fyrir í Njálu (eins og flestum öðrum íslenskum bókum). Hér að neðan er dæmi um hvernig svona slembitexti gæti litið út:
Nú getum við aukið fjölda þeirra bókstafa sem við miðum við, þannig að við byggjum líkurnar á bókstöfunum á síðustu k stöfum sem við notuðum. Hér að ofan var k = 1, en ef við miðum við tvo síðustu stafina þá getum við fengið slembitextann:
Eftir því sem k er aukið þeim mun meira líkist slembitextinn upprunalega textanum. Lítum á k = 5:
og k = 10:
Reikniritið sem þið notið er ekki mjög flókið. Forritið fær uppgefið gildið á k, hversu
langur slembitextinn á að vera og nafn inntaksskrárinnar. Það byrjar á því að lesa alla
inntaksskránna inní streng (string breytu eða char fylki) og velur k-stafa
streng af handahófi úr inntakstextanum sem undanfara og prentum hann út. Við leitum síðan að
þessum k-stafa undanfara í textanum og í hvert sinn sem hann finnst þá bætum við
bókstafnum sem kemur á eftir honum í textanum í lista. Til dæmis ef k er 2 og fyrsti
undanfarinn er "þe" þá gæti listinn yfir stafi sem koma fyrir á eftir honum orðið
['s', 't', 's', 'i', 'i', ... ]. Við veljum síðan bókstaf af handahófi út þessum lista. Þeir
bókstafir sem koma oft fyrir í listanum eru þá líklegri til að verða fyrir valinu en þeir sem
koma sjaldnar fyrir.
Þegar fyrsti slembistafurinn hefur verið valinn er hann prentaður út og undanfarinn uppfærður
með því að henda burt fyrsta stafnum og setja nýja stafinn aftast. Til dæmis ef stafurinn 't'
varð fyrir valinu hér að ofan þá væri næsti undanfari orðið "et" og við myndum þá aftur
búa til lista yfir alla þá bókstafi sem koma á eftir strengnum "et" í textanum".
Það eru til ýmsar gagnagrindur sem myndu gera leitina að bókstöfunum sem koma á eftir undanfaranum hraðvirkari, en í þessu verkefni er nóg að leita bara með renna í gegnum allan textann í strengum í hvert sinn og skrá hjá sér stafinn sem kemur á eftir í hvert sinn sem við finnum undanfarann.
Þetta verkefni á ekki að vera mjög erfitt. Reynið því að gera það sem mest sjálf, því þannig lærið þið mest á því. Eftir sem áður er í lagi fyrir ykkur að ræða um verkefnið við samnemendurna, en forðist að taka við forritskódum frá öðrum.
Hægt er að finna mikið magn af bókum á íslensku á heimasíðu Netútgáfunnar. Að vísu eru þær allar á HTML formi, en það er ekki mikið af HTML skipunum í skránum, en hægt er að fá hreina textaskrá með því að velja allan textann (ctrl-a), afrita hann (ctrl-c) og skeyta honum svo inn í textaritil (ctrl-v). Einnig er gríðarlega mikið af bókum á ensku hjá Project Gutenberg.
Skilið stuttri skýrslu um forritið ykkar, þar sem þið lýsið aðeins nánar hönnun forritsins og sýnið niðurstöður forritsins á 2-3 mismunandi bókum fyrir gildin 1, 4, 7 og 10 á k. Skilið einnig útprentun af forritinu til dæmatímakennara ykkar fyrir kl 18:00 föstudaginn 25. febrúar. Þeir munu ekki taka við verkefnum sem koma seinna.