Informatika2-2012/Gyakorlat09mf

A MathWikiből
A lap korábbi változatát látod, amilyen Stma (vitalap | szerkesztései) 2012. május 1., 12:47-kor történt szerkesztése után volt.
(eltér) ←Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

Egy példa arra hogyan lehetne megvalósítani a labirintus beolvasását.

Itt először kilistázunk minden olyan fájlt ami mylab kiterjesztést kapott. Majd megkérdezzük melyiket szeretné használni. Utána beolvassuk a fájl tartalmát és közben felépítjük a később használatos labirintus szótárt a mátrixal együtt.

#!/usr/bin/env python
import glob
_lab = {}
 
if __name__ == '__main__':
    # a konyvtarban levo osszes .mylab fájl egy listaba kigyujtese
    l = glob.glob('./*.mylab')
 
    # a kívánt labirintus kiválasztása
    for i in enumerate(l):
        print i[0], i[1]
    whi = int(raw_input('Melyik lab szeretned hasznalni'))
 
    m = []
 
    # with segitsegevel egyszeruen megvalosithato a try, finally blokk
    with open(l[whi],'r') as f:
        for i in f:
            sor = []
            t = 0
            l = len(i)
            p = []
            while t < l:
                # ha az egyik irany 2 akkor az a kiindulasi pont
                if i[t] == '2':
                    _lab['start'] = (len(m), t/4)
                    t += 1
                # ha E karaktarhez erunk akkor az a kijaratot jeloli
                elif i[t] == 'E':
                    sor.append(tuple())
                    t += 4
                    continue
                p.append(0 if i[t] == '0' else 1)
                if not t % 4 and t > 0:
                    sor.append(tuple(p))
                    p = []
                t += 1
            m.append(tuple(sor))
    _lab['dir_matrix'] = tuple(m)
    print(_lab)

A példában használt mátrix a fájlban:

02100101011101010011
11000001101000101010
01100101110110011000
101001100001E0000010
11000101010111011001
Személyes eszközök