Laboration 3 - Ordtr�dLaborationens tema �r bin�ra s�ktr�d och f�rsta uppgiften �r att bygga upp ett s�ktr�d fr�n en fil med svenska ord och spotta ut dubbletter. N�sta uppgift �r att kolla orden i en engelsk text mot det svenska s�ktr�det. Finns det n�gra skenbart svenska ord ska dom skrivas ut, dock endast f�rsta f�rekomsten av varje svenskt ord. F�r att veta vilka ord man redan hittat sparar man f�rst�s dom i ett annat s�ktr�d.Ett s�ktr�d med ordlistaI filenbintree.py ska du skriva en class bintree: med
tre anrop, n�mligen f�ljande (som kan t�nkas st� i huvudprogrammet
lab3.py ).
from bintree import bintree # �vrigt i filen f�rblir dolt svenska=bintree() svenska.put("gurka") - - - if svenska.exists("gurka"): - - - svenska.write() # Skriver alla ord i bokstavsordningN�r tr�dobjektets put("gurka") anropas skickar tr�det sin
rotpekare och det nya ordet till en rekursiv funktion putta
som ser till att en ny nod skapas p� r�tt st�lle. Analogt g�r de
�vriga anropen, allts� s� h�r.
class bintree: root=None def put(self,newvalue): self.root=putta(self.root,newvalue) def exists(self,value): return finns(self.root,value) def write(self): skriv(self.root) printH�r �r klassen slut men sedan kommer definitionerna av putta, finns och skriv .
Tr�det ska bara lagra en upplaga av varje objekt som l�ggs
in, s� f�rs�ker man stoppa in en dublett h�nder ingenting.
Det finns f�rst�s ocks� en
I svenskfil=open("word3.txt","r") # �ppnar filen f�r l�sning (r) for rad in svenskfil.readlines(): ord=rad[0:3] # Ett trebokstavsord per rad if svenska.exists(ord): print ord, else: svenska.put(ord) # in i s�ktr�det printOm du gjort r�tt kommer dom dubblettord som spottas ut att bilda ett viktigt budskap. Tv� bin�ra s�ktr�d med ordlistorN�r du nu har ett s�ktr�d med alla svenska trebokstavsord kan du blixtsnabbt kolla om ett givet ord finns med. Du ska nu l�sa filen engelska.txt ord f�r ord och putta in orden i ett annat s�ktr�d. Nu vill du inte ha dubbletterna utskrivna, s� kolla f�rstif engelska.exists(...) . Om ordet redan fanns g�r du ingenting, men om det �r nytt ska
du ocks� kolla om det r�kar finnas som svenskt ord. I s� fall ska det
skrivas ut p� sk�rmen.
Om du har gjort r�tt kommer dom utskrivna orden att bilda �nnu ett hemligt budskap! N�r du mottagit det kan du f�rs�ka f� underskrift av en l�rare. Frivilliga extrauppgifterS�t t�s: Unders�k vilka trebokstavsord som blir andra ord bakl�nges. Varje ordpar ska bara skrivas ut en g�ng och symmetriska ord inte alls.Alpin pinal: Unders�k vilka fembokstavsord som blir ett annat ord n�r dom tv� f�rsta bokst�verna flyttas sist. Du kan anv�nda ordlistan word5.txt. Genialt programmerat av ..................................... anser.............................. den ................. |