Hatékonyság 2. Szlávi Péter

Slides:



Advertisements
Hasonló előadás
Definíciók: Algoritmus: bármely véges sok lépéssel leírható tevékenység. Olyan pontos előírás, amely megmondja, hogy egy adott típushoz tartozó feladat.
Advertisements

 Megfigyelhető, hogy amikor több elem közötti összehasonlítás történik, akkor szükség van egyszerre több értékre is, főleg akkor, ha ezek az értékek jóval.
Gyakorló feladatsor eljárásokra Készítette: Rummel Szabolcs Elérhetősé:
Összefoglalás 1. Pascal program szerkezete 2. Pascal típusai
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
LEgyméretű tömbök, vektorok Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./0. lVektorok definiálása lVektorok definiálása kezdőértékekkel.
Programozási alapismeretek 6. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 6.2/  Rekordok/struktúrák.
Algebrai specifikációk Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Copyright, 2009 © Szlávi Péter A kupac és a prioritási sor típuskonstrukciók Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Programozási alapismeretek 4. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 4.2/  A szöveg A szöveg.
Programozási alapismeretek 7. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás2/  Sorozatszámítás.
Programozási alapismeretek 3. előadás
Programozási alapismeretek
Programozási alapismeretek 10. előadás
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Bevezetés a Java programozásba
Egydimenziós tömbök. Deklarálás: var valtozónév:array[kezdőérték..végsőérték]of típus; type típusnév = array [kezdőérték..végsőérték] of típus; var valtozónév:
Készítette: Pető László
1 Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat 1. Bevezetés Miskolc, 2004.
Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 1 Fordítóprogramok 1 Programozó matematikus szak 2003/2004-es tanév II. félév.
LDinamikus tömbök, kétdimenziós tömbök Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 21./0. lVektorok létrehozása futásidőben, dinamikusan.
A digitális számítás elmélete
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Copyright, 1999 © Szlávi Péter Verem típuskonstrukció Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Nevezetes algoritmusok Beszúrás Van egy n-1 elemű rendezett tömbünk. Be akarunk szúrni egy n-edik elemet. Egyik lehetőség, hogy végigszaladunk a tömbön,
Ciklusok: 2. Előltesztelő ciklus
A rekurzió Páll Éve Boglárka.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Tömbök és programozási tételek
Rendezések és szövegkezelő függvények
Összetett adattípusok
1 AAO folytatás ++ Csink László. 2 Rekurzív bináris keresés (rendezett tömbben) public static int binker(int[] tomb, int value, int low, int high) public.
Turbo Pascal Indítás: C:\LANGS\Turbo Pascal Turbo Pascal.
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
Nevezetes algoritmusok
Programozási tételek.
Copyright, 1999 © Szlávi Péter Sor típuskonstrukció Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Egyenesvonalú (lineáris) adatszerkezetek
Programozás I. Típus algoritmusok
Copyright, 1999 © Szlávi Péter Szövegfeldolgozás 1.
1 Mivel foglalkozunk a laborokon? 7. hét: Do-Loop-Until Do-Until-Looptömbök Function 7. hét: Do-Loop-Until és Do-Until-Loop ciklusok. Egy indexes tömbök,
A Visual Basic nyelvi elemei
Power Lutár Patrícia Pellek Krisztián.  -ltLess than  -leLess than or equal to  -gtGreater than  -geGreater than or equal to  -eqEqual to  -neNot.
File- típus-konstrukciók Szlávi Péter ELTE Informatika Szakmódszertani Csoport
Pole (array of...).  Zložený datový typ na ukladanie viacerých premených  Zápis: var meno_pola : array [ konce intervala ] of základný typ ; Základné.
Feladatok (értékadás)
Mintapélda Készítsünk programot, amely beolvas egy egész számot, és eldönti arról, hogy prímszám-e. Készítsünk programot, amely beolvas egy egész számot,
Összeállította: Sashalmi Tibor
Programozási alapismeretek * A Zh-írás módszertana.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
Vnorené cykly.  Pri riešení problémov sa stáva, že použijeme viac cyklov za sebou, alebo jeden cyklus vnorený do druhohého.
Programozási alapismeretek 10. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 10.2/  Kiválogatás + összegzés.
Diszjunkt halmazok adatszerkezete A diszjunkt halmaz adatszerkezet diszjunkt dinamikus halmazok S={S 1,…,S n } halmaza. Egy halmazt egy képviselője azonosít.
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Excel programozás (makró)
Geometriai feladatok programozása Geometriai programozás Szlávi Péter ELTE IK Média- és Oktatásinformatika Tanszék 2010.
Programtervezés, programozás I. 2.5 tömbök,stringek
Weboldalba ágyazott interaktív feladatok GeoGebra módra Papp-Varga Zsuzsanna ELTE IK Média- és Oktatásinformatika Tanszék
Informatikai gyakorlatok 11. évfolyam
1 Mivel foglalkoz(t)unk a laborokon? 1.Labor: Word alapok Excel alapok: Excel alapok: Cellahivatkozás, munkalapfüggvény, diagram varázsló, trendvonal 2.
Algoritmusok hatékonysága – lottószelvények
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
Nevezetes algoritmusok
Bevezetés a programozásba Algoritmikus gondolkodás
Amortizációs elemzés Alapelv: nem egy-egy művelet lefutási idejét vizsgáljuk, hanem több műveletét együtt, sokszor Eredmény: átlagolt időszükséglet időátlagban.
Informatikai gyakorlatok 11. évfolyam
Informatikai gyakorlatok 11. évfolyam
Hatékonyság 2. előadás.
Előadás másolata:

Hatékonyság 2. Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék szlavip@elte.hu http://digo.inf.elte.hu/~szlavi Copyright, 1999 © Szlávi Péter

Tartalom Bevezetés I. rész: globális hatékonyság A. Általánosságok B. Előzetes példák I. rész: globális hatékonyság 1. A végrehajtási idő csökkentése 1.1 A ciklus lépés-számának csökkentése 1.2 A ciklus egyszeri végrehajtási idejének csökkentése 2. A helyfoglalás csökkentése 2.1 A sorozatok elemszámának csökkentése 2.2 A sorozatelem helyfoglalásának csökkentése 2.3 A programkód méretének csökkentése 2019.01.13. Hatékonyság 2

Tartalom II. rész: lokális hatékonyság 3. Bonyolultság csökkentése 1. A végrehajtási idő csökkentése 2. A helyfoglalás csökkentése 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése Alapelv: a tárolt elemek száma vagy egy ele- mének mérete kevesebb legyen! Helyfoglalás= memória (kód+adat) + háttértár (kód+adat) 2.1 Sorozatok hosszcsökkentése 2.1.1 Sorozat kiküszöbölése Feladat: Az N. K-Fibonacci szám előállítása. Megoldások: a. Változó KF:Tömb(1..N:Egész) KF(1..N):=…az első N előállítása… NKF:=KF(N) Fordítóprogramon mú- lik; legfeljebb lokális… HáttértárMemória Helycsere: idő… Különlges fordítási tech- nika: overlay 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) b. Változó KF:SorTömb(K,Egész)[K-elemű!] KF:=…az első K előállítása… Ciklus i=K+1-től N-ig NKF:=i=1..KKF(i) nemKell:=Sorból(KF) Sorba(KF,NKF) Ciklus vége 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) Feladat: Egy nyúlpopuláció adatait a korcsoportelosz- lásával tároljuk. Ismert: az E éves nyúlnak átlago- san S(E) utódja születik; és H(E) valószínűséggel pusztul el. Adjuk meg az éves korcsoportváltozást! Megoldások: Változó S,H:Tömb(1..N:Valós) X:Tömb(1..N:Egész) a. Y:Tömb(1..N:Egész) S:Valós [az összegzéshez] Y(1):=Egész(Összegzés(X(i)*S(i) i=1..N) Y(2..N):=Másolás(Egész(X(i)*(1-H(i))) i=1..N-1) X:=Y Születési, halálozási ráták Korcsoporteloszlás N: a korcsoportok száma =N*Méret(Egész)+1*Méret(Valós) 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) Probléma: egészben valós összegzés!!! b. Változó Y:Tömb(1..N:Egész) Y(1):=Egész(X(N)*S(N)) Ciklus i=1-től N-1-ig Y(i+1):=Egész(X(i)*(1-H(i))) Y(1):+Egész(X(i)*S(i)) Ciklus vége X:=Y c. Változó Y:Valós Y:=X(N)*S(N) Ciklus i=N-1-től 1-ig -1-esével X(i+1):=Egész(X(i)*(1-H(i))) Y:+X(i)*S(i) Ciklus vége X(1):=Egész(Y) Kódrövidítés (l. 2.1.2) =N*Méret(Egész) Kivételes eset: X(N)-„be”-számítása =1*Méret(Valós) „Problémás” eset: X(i) fordított kiszá-mítása (:=f(X(i-1)) 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) 2.1.2 Ciklusok összevonása Feladat: Adjuk meg az M mátrix maximális sor- összegű sorát! Megoldások: Változó m:Tömb(1..N,1..N:Valós) a. s:Tömb(1..N:Valós) s(1..N):=Másolás( Összegzés(M(i,1..N)) i=1..N) maxi:=MaxKiválasztás(s,) b. Változó s:Valós [összegzéshez] maxi:=MaxKiválasztás(i i=1..N,) Az „1.2.5 Sorozatok előfeldolgozása” módszer ellentéte. :INxINIL, rendezés (i,j):=Összegzés(Xi) Összegzés(Xj) 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) Output: melyik melyikkel 2.1.3 Hézagosan kitöltött struktúrák Feladat: Egy N-atomos szénhidrogén molekulát vizsgálunk. Adjuk meg, mely szén atomok melyekkel vannak kötésben! Megoldások: Változó Db:Egész köt:Tömb(1..MaxN,1..2:Egész) a. Változó m:Tömb(1..N,1..N:Logikai) (Db,köt):=Kiválogatás((i,j) i=1..N-1,j=i+1..N, m(·)=Igaz) b. Változó m:Tömb(1..N*(N+1) Div 2: Logikai) [azaz -mátrixként ábrázolni] Szénatom Szénhidrogén molekula N2*Méret(Logikai) Ritkamátrix: Méret(Logikai)* *N*(N+1) Div 2 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) Szénhidrogén molekula c. Változó m:Tömb(1..N:Lista(1..N)) [melyik C-atom melyekkel van kötésben] mivel a C-atom kötésszáma4, ezért a listák legfeljebb 4-eleműek. (Db,köt):=Kiválogatás( (i,ElemÉrték(m(i),j)) j=1..Hossz(m(i)),i=1..N-1, ElemÉrték(m(i))>i) Az ElemÉrték(m(i),j) az m(i) lista j. elemét szimbolizálja. =N*Méret(Lista(1..N)) N*(Méret(Fej)+4*(Méret(Egész)+ Méret(Mutató))) [láncolt] N*4*Méret(Egész) [folytonos] Szimmetria miatt 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) d. Változó m:Tömb(1..K,1..2:1..N) [kötés: mely párok között] Db:=N-1 köt:=Másolás(m(i) i=1..K) L. még a tömb-ábrázolás témakörben: „Ritkamátrixok” ~N*2*Méret(1..N) K: egy N db C-atomos molekulában a kötések száma N-1 és 4*N között lehet. 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) Feladat: Képek raszteres ábrázolása… Megoldások: a. Típus TKép=Tömb(1..MaxX,1..MaxY:TSzín) b. Típus TKép=Tömb(1..MaxY:Lista(TPászta)) TPászta=Rekord(szín:TSzín, hossz:Egész) [k:TKép  i[1..MaxY]:MaxX=k(i)-beli pászták összege] 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) 2.1.4 Speciális szerkezetű sorozatok Feladat: … l. a „tömb-ábrázolás” témakörben: „speciális szerkezetű mátrixok”… (Diagonális, háromszög, tridiagonális, Hänkel-, Toeplitz- stb.- mátrixok.) Feladat: Leslie-mátrix az alábbi probléma szokásos leírását jelenti. Adott egy pl. egérpopuláció szüle- tési és túlélési rátái korcsoportonként. Határozzuk meg a köv. év korcsoporteloszlását az akt. alapján. Megoldás: Típus TKorcsop=Tömb(1..N:Valós) TLeslie=Tömb(1..N,1..N:Valós) s1 s2 s3 … sn-1 sn t2 0 0 … 0 0 0 t3 0 … 0 0 … … … … … … 0 0 0 … tn 0 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) Változó E:Tkorcsop [kezdő korcsoporteloszlás] a. Változó LM:TLeslie U:TKorcsop U:=LM*E [mátrix-vektor szorzás] E:=U b. Típus TLeslie=Rekord( s:Tömb(1..N:Valós), t:Tömb(2..N:Valós)) Változó LM:TLeslie U:TKorcsop S:Valós [összegzéshez] U(1):=Összegzés(LM.s(i)*E(i) i=1..N) U(2..N):=Másolás(LM.t(i)*E(i-1) i=2..N) E:=U =N2*Méret(Valós) =N*Méret(Valós) =(N+N-1)*Méret(Valós) =N*Méret(Valós) =1*Méret(Valós) 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) =(N+N-1)*Méret(Valós) c. Változó LM:TLeslie E1:Valós E1:=LM.s(1)*E(1) Ciklus i=N-től 2-ig -1-esével E1:+LM.s(i)*E(i) E(i):=LM.t(i)*E(i-1) Ciklus vége E(1):=E1 =1*Méret(Valós) 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) 2.1.5 Adatterület megosztása Feladat: … l. a „sorozatok ábrázolása” témakörben: láncolt ábrázolás, maximált össz-elemszámú dupla verem… 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) 2.2 A sorozat egy elemének méretcsökkentése Alapelv: alkalmasan szűk reprezentáció… 2.2.1 Redundáns mezők elhagyása Feladat: Egy személyi adatnyilvántartásban a követ- kező adatokat tároljuk: név, személyiszám, születé- si idő (év, hó, nap). Listázzuk ki a nyilvántartást! Megoldások: a. Típus TSzemély=Rekord(név:Szöveg(30) szsz:Szöveg(11) szül:TDátum) TDátum=Rekord(év:Egész hó:Szöveg(10) nap:Egész) … Ciklus amíg nem Vége?(f) Olvas(f,szem); Ki:szem Ciklus vége … Méret(TSzemély)=31+12+15=58 Méret(TDátum)=2*2+11=15 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) b. Típus TSzemély=Rekord(név:Szöveg(30) szsz:Szöveg(11)) TDátum=Rekord(év:Egész hó:Szöveg(10) nap:Egész) Függvény szül(Konstans szsz:Szöveg(11)): TDátum Konstans HónapNév:Tömb(1..12:Szöveg(10) (’Január’,’Február’,…) szül:=TDátum(Egész(Része(szsz,2,3)), HónapNév(Egész(Része(szsz,4,5))), Egész(Része(szsz,6,7))) Függvény vége. … Ciklus amíg nem Vége?(f) Olvas(f,szem) Ki: szem.név, szem.szsz, szül(szem.szsz) Ciklus vége … Méret(TSzemély)=31+12=43 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) 2.2.2 Az adatelemek kódolása Feladat: Egy személyi adatnyilvántartásban a követ- kező adatokat tároljuk: név, születési idő (év, hó, nap). Listázzuk ki a nyilvántartást! Megoldások: a. Típus TSzemély=Rekord(név:Szöveg(30) szül:TDátum) TDátum=Rekord(év:Egész hó:Szöveg(10) nap:Egész) … Ciklus amíg nem Vége?(f) Olvas(f,szem) Ki:szem Ciklus vége … Méret(TSzemély)=31+15=46 Méret(TDátum)=2*2+11=15 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) b. Típus TSzemély=Rekord(név:Szöveg(30) szül:TDátum) TDátum=Rekord(év,hó,nap:Egész) Konstans HónapNév:Tömb(1..12:Szöveg(10) (’Január’,’Február’,…) Méret(TSzemély)=31+6=37 Méret(TDátum)=3*2=6 … Ciklus amíg nem Vége?(f) Olvas(f,szem) Ki: szem.név, szem.szül.év, HónapNév(szem.szül.hó), szem.szül.nap Ciklus vége … 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) c. Típus TSzemély=Rekord(név:Szöveg(30) szül:TTDátum) TTDátum=TömörRekord(év:1900..2027, hó:1..12, nap:1..31) Konstans HónapNév:Tömb(1..12:Szöveg(10) (’Január’,’Február’,…) Függvény TTDátum2TDátum (Konstans d:TTDátum):TDátum TTDátum2TDátum:=… Függvény vége. Méret(TSzemély)=31+2=33 Méret(TTDátum)=7+4+5=16 bit … Ciklus amíg nem Vége?(f) Olvas(f,szem); tszül:=TTDátum2TDátum(szem.szül) Ki: szem.név, tszül.év, HónapNév(tszül.hó), tszül.nap Ciklus vége … 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) Feladat: … l. még a „Szövegfeldolgozás” témakörbeli tömörábrázolás rész feladatait. 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) 2.3 A programkód méretének csökkentése Alapelv: a „józan” programépítése elvek be- tartása. Azaz: A feladat részfeladatainak Eljárásokra / Függ- vények /…-re bontása; ezeknek megfelelő nyel- vi implementálás. Ciklusok összevonása – általában nem sok tényleges előnnyel jár,ui. ha a ciklusmagok mérete előnyössé tenné, ak- kor úgyis eljárásban fogalmazódnának meg. 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) Programkód adattá transzformálása – a sok, „konstanson” alapuló tevékenységlánc (pl. tá- jékoztató, menü) konstans adatokká és rajtuk operáló kevésszámú műveletté „tipizálása”. Feladat: Többlapos tájékoztató kiírása. Megoldások: a. Procedure Tajekoztato; Var c:Char; Begin Writeln(’Ez a program arra jó,’); … {és még sok száz hasonló sor, lapozást szervező ReadKey-ekkel megtűzdelve} End; 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) b. Procedure Tajekoztato; Const BekDb=???; STaj:Array[1..BekDb] of String= (’Ez a program arra jó,…’, {és még sok tucat hasonló konstans bekezdés} …); Var c:Char; sorDb,i:Integer; Procedure KiBekezdes(Const b:String); Begin {… b kiírása + lapozás …} End; Begin sorDb:=0; {kiírt sorok száma} For i:=1 to BekDb do Begin KiBekezdés(STaj[i]); End; End; További előnyök: Bonyolultság csökkenés Biztonságosság Könnyű javíthatóság (pl. képsorméret-, szövegmó-dosulás…) 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) Változások c. Procedure Tajekoztato; Const tajFNev=???; Var t:Text; {szövegfile-ban a tájékoz- tató szövege} Var c:Char; sorDb,i:Integer; siker:Boolean; Procedure KiBekezdes(Const b:String); Begin {… b kiírása + lapozás …} End; Begin sorDb:=0; siker:=FileNyitás(f,tajFNev); If siker then Begin While not Eof(f) do Begin Readln(f,sor); KiBekezdés(sor); End; End; Egyébként is meglevő eljárás További előny: Univerzalitás 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) Feladat: Ablakozás… Megoldások: a. … Window(4,4,46,16); SetBkColor(Black); ClrScr; Window(5,5,45,15); SetBkColor(White); SetColor(4); ClrScr; Writeln(’Ablakcím’:24); {… ablakhasználat …} {ahány ablak, annyi efféle sok sor} Keretszín Ablak-koordináták ((45-5) Div 2)+(címhossz Div 2) Lapszín 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) b. Type TSzin=?; TMem=?; TAblak=Record bfx,bfy,jax,jay:Integer; cim:String[30]; kszin,bszin,lszin:TSzin; mentes:^TMem; kx,ky:Byte; End; Procedure AblakNyit(Var a:TAblak); Begin {… háttérmentés …} With a do Begin Window(bfx,bfy,jax,jay); SetBkColor(kszin); ClrScr; Writeln(cim:…); End;… Akt. ablak kurzor Ablakmérettől függő formula 2019.01.13. Hatékonyság 2

2. A helyfoglalás csökkentése (folytatás) Procedure AblakZar(Const a:TAblak); Begin {… háttér visszaírása …} End; Procedure ABlakbaIr(Var a:TAblak; Const s:String); Begin {… ablakhasználat; kx,ky …} End; {ahány ablak, annyi efféle sok sor:} Const a1:TAblak=( bfx:=?;bfy:=?;jax:=?;jay:=?; cim:?;kszin:?;bszin:?; lszin:?;kx:1;ky:1); Egy próba. (LZW) Letöltés. 2019.01.13. Hatékonyság 2