teedefail="linnad2.txt" teed={} tagasiteed={} tulbalaius=10 def loeTeed(): for rida in open(teedefail, "r"): m=rida.strip().split() teed[m[0]]=m[1:] def leiaTagasiteed(): for linn in teed: leitud=[linn] uuritud=[] tagasitee={} while leitud: uuritav=leitud.pop() #Massiivist esimene element for koht in teed[uuritav]: if koht not in leitud+uuritud: leitud.append(koht) tagasitee[koht]=uuritav uuritud.append(uuritav) tagasiteed[linn]=tagasitee #Midagi veel puudu def kirjutaSuundadeTabel(): f2=open("vastus.txt", "w") f2.write("".ljust(tulbalaius)) for alglinn in tagasiteed: #tulpade pealkirjad f2.write(alglinn.ljust(tulbalaius)) f2.write("\n") for sihtlinn in tagasiteed: f2.write(sihtlinn.ljust(tulbalaius)) for alglinn in tagasiteed: if alglinn in tagasiteed[sihtlinn]: f2.write(tagasiteed[sihtlinn][alglinn].ljust(tulbalaius)) else: if alglinn==sihtlinn: f2.write("/".ljust(tulbalaius)) else: f2.write("-".ljust(tulbalaius)) f2.write("\n") f2.close() def kirjutaKaugusteTabel(): f2=open("vastus.txt", "w") f2.write("".ljust(tulbalaius)) for alglinn in tagasiteed: #tulpade pealkirjad f2.write(alglinn.ljust(tulbalaius)) f2.write("\n") for sihtlinn in tagasiteed: f2.write(sihtlinn.ljust(tulbalaius)) for alglinn in tagasiteed: if alglinn in tagasiteed[sihtlinn]: #f2.write(tagasiteed[sihtlinn][alglinn].ljust(tulbalaius)) f2.write(str(leiaTeekonnaSammudeArv(sihtlinn, alglinn)).ljust(tulbalaius)) else: if alglinn==sihtlinn: f2.write("/".ljust(tulbalaius)) else: f2.write("-".ljust(tulbalaius)) f2.write("\n") f2.close() def leiaTeekond(kust, kuhu): """Vastuseks tühi massiiv, kui juba kohal ning None, kui tee puudub muul juhul vastuseks läbitud kohad""" if kust==kuhu: return [] if kust not in tagasiteed[kuhu]: return None vastus=[kust] koht=kust while koht in tagasiteed[kuhu]: koht=tagasiteed[kuhu][koht] vastus.append(koht) return vastus def leiaTeekonnaSammudeArv(kust, kuhu): teekond=leiaTeekond(kust, kuhu) if teekond is None: return "-" return len(teekond)-1 loeTeed() leiaTagasiteed() #kirjutaSuundadeTabel() kirjutaKaugusteTabel() print(leiaTeekond("Tallinn", "Kärdla")) print(leiaTeekonnaSammudeArv("Tallinn", "Kärdla")) #Koostage alamprogramm, mis saab parameetriteks kaks asukohta ning väljastab, #mitu teelõiku tuleb algkohast sihtkohta jõudmiseks läbida