- A program a bemenetet parancssori argumentumok formájában kapja meg, a következőképp indítható:
python3 1KovacsJutka.py szoveg.txt minta
Ekkor a program olvassa be a szoveg.txt szöveges fájl tartalmát, és keresse meg benne a minta első előfordulását. A parancssori argumentumok lekérdezhetőek a beépített sys.argv tömbben, ami a következő 3-soros mintaprogrammal kipróbálható:
import sys
print(f'Fájlnév: {sys.argv[1]}, minta: {sys.argv[2]}.')
print(f"E program neve {len(sys.argv[0]):2} betűből áll.")
- Fájl beolvasására javasoljuk a Python fájlkezelő függvényeit, például az alábbi módon:
with open(fajlnev) as f:
szoveg = f.read().strip()
A strip() metódus segítségével levághatjuk az esetlegesen előforduló sorvége karaktereket és felesleges szóközöket a bemenet elejéről és végéről.
- Python3-ban a programba bárhol írhatunk ékezetes betűket is,
de a fájl utf-8 kódolású legyen. Lehetnek a változónevekben is
ékezetes karakterek, de ezt inkább kerüljük el!
- Nem kell ellenőrizni, hogy a megadott szövegfájl létezik-e,
vagy hogy valóban szöveget tartalmaz-e. A minta mindig
legfeljebb olyan hosszú, mint a szöveg. A szöveg csak az angol
ábécé a–z kisbetűit és szóközöket
tartalmaz. A mintában csak kisbetűk vannak, szóköz nincs. Az
algoritmusoknak megfelelően a programban csak a szöveg és a
minta egy-egy karakterének összehasonlítása
megengedett, de a Python sztringkezelő függvényeinek
használata nem, kivéve
a len()
függvényt.
- Futtassuk le az egyszerű mintaillesztő algoritmust
és a gyorskeresést (quick search) a megadott
szöveggel és mintával. A program írja ki, hogy előfordul-e a
minta a szövegben, és hány összehasonlítást végeztünk
az első előfordulás megkereséséig. A
keresések számára 5 karakter helyet biztosítsunk, a találat
helyére 4 karaktert a formázott kimenetben előttük egy
szóközzel. A találatot úgy sorszámozzuk, hogy a szöveg első
karakterének sorszáma 1 legyen. A kimenet a következőképp
nézzen ki, melyhez az f-sztringeket
használjuk:
Egyszerű keresés: 4260 összehasonlítással, a találat helye: 3568
Gyorskeresés: 397 összehasonlítással, a találat helye: 3568
Akkor is adjuk meg az összehasonlítások számát, ha a minta
nem fordul elő a szövegben:
Egyszerű keresés: 5239 összehasonlítással, nincs találat
Gyorskeresés: 768 összehasonlítással, nincs találat