
83_TÖMÖRÍTÉS
83_TÖMÖRÍTÉS

A "PPYYYTTHHOONNN PPYTHON PYTHHOON"szót a szóköz ls a szó karaktereiből alakítottuk ki egy szövegállományban. Tömörítsük össze az állományt!
Tömörítési módszerünk lényege, hogy azanos karakterek sorozatát megszámoljunk és megadjuk az ismétlőső karaktert, valamint az ismétlődések számát-
A "strázsa" most az a karakter lesz, amelyik már más, mint azok a karakterek, amelyeket számlálunk. Az elso változó értéke kezdéskor az első karakter lesz, a későbbiekben az, amelyik a "strázsa" volt. Amikor új strázsa lesz, akkor elölről kezdjük a számlálást.
Algoritmusunkat egy adatsor (részletének) feldolgozásával mutatjuk be.
TOMORITES.py
sor = "PPYYYTTHHOONNN PPYTHON PYTHHOON"
elso = sor[0]
db = 0
print(elso, db)
for i in range(len(sor)):
if elso == sor[i]:
db += 1
else:
print(elso, db)
elso = sor[i]
db = 1
print(elso, db)
1. A sor és az első karakter inicializálása
python
sor = "PPYYYTTHHOONNN PPYTHON PYTHHOON"elso = sor[0]db = 0print(elso, db)
sor tartalmazza az elemzendő szöveget.
elso az első karaktert tárolja (sor[0]).
db a számláló, ami azt követi nyomon, hogy az aktuális karakter hányszor ismétlődik.
A print(elso, db) sor az első karaktert és a számláló kezdeti értékét (0) írja ki. Például: 'P 0'.
2. Végigmegyünk a sor összes karakterén
for i in range(len(sor)):
if elso == sor[i]:
db += 1
A for ciklus karakterenként végighalad a sor-on.
Ha a jelenlegi karakter (sor[i]) megegyezik az előző karakterrel (elso), növeljük a számlálót (db += 1).
3. Új karakter és csoport lezárása
else:
print(elso, db)
elso = sor[i]
db = 1
Ha egy új karaktert találunk, akkor az előző karakter adatait kiírjuk:
print(elso, db) megjeleníti az előző karaktert és annak előfordulási számát.
Ezután frissítjük az elso változót az új karakterrel (elso = sor[i]), és a számlálót újrakezdjük (db = 1).
4. Az utolsó csoport kiírása
print(elso, db)
A ciklus vége után az utolsó karakter ismétlődéseit is ki kell írni, mivel ezt a ciklus közben nem tudjuk megtenni.
Példa bemenet és kimenet
Bemenet: sor = "PPYYYTTHHOONNN PPYTHON PYTHHOON"
Kimenet:
P 2
Y 3
T 2
H 2
O 2
N 3
4
P 2
Y 1
T 1
H 1
O 1
N 1
2
P 1
Y 1
T 1
H 2
O 2
N 1
A sorok mögötti szépség
Egyszer volt, hol nem volt, volt egyszer egy titokzatos szöveg, amely így szólt: "PPYYYTTHHOONNN PPYTHON PYTHHOON". Ez a szöveg egy rejtélyt hordozott, amelyet még senki sem fejtett meg – egy kód, amely csak arra várt, hogy felfedje titkait.
Egy nap egy kíváncsi lélek, aki imádott kísérletezni a betűkkel és számokkal, elhatározta, hogy megfejti ezt a titkot. Elsőként így szólt: "Nézzük meg, mi az első jel, és kezdjük az utunkat!" Így megszületett az ötlet:
elso = sor[0]
db = 0
print(elso, db)
Ezzel elkezdődött az utazás: az ismeretlen sorok közé vetette magát, hogy megtalálja az ismétlődő mintázatokat. Miközben haladt előre, minden lépésnél felkiáltott: "Ez még ugyanaz a jel! Számoljuk tovább!" Így születtek ezek a sorok:
for i in range(len(sor)):
if elso == sor[i]:
db += 1
De az élet mindig tartogat meglepetéseket, és amikor egy új betűvel találkozott, megállt egy pillanatra. "Új betű! A régi történetet lezárjuk, és egy új fejezetbe kezdünk!" – mondta, majd így folytatta:
else:
print(elso, db)
elso = sor[i]
db = 1
Ahogy közeledett az út végéhez, még egyszer átgondolta mindazt, amit megtudott, és utoljára így kiáltott fel:
print(elso, db)
És így derült fény a rejtélyre. A sor nem csupán betűk és számok összessége volt, hanem egy történet az ismétlődésről és a változásról. A kód nemcsak megoldotta a titkot, hanem megtanította, hogy minden egyes elemnek helye és jelentősége van – a sor részei együtt alkotnak egy egészet.
És a kíváncsi lélek elégedetten dőlt hátra, mondván: "Ez a történet nemcsak számokat és betűket fedett fel, hanem a sorok mögötti szépséget is.