Hónap: 2025. március

Egy sorozat adott memóriafelhasználású részsorozat listáinak előállítása és ennek időigénye

A „Nagyméretű adathalmazok rendezése” című korábbi bejegyzésben szereplő programban egy adott memóriakorláttal rendelkező részsorozat listák (chunk list) előállítására volt szükség. E listák felépítéséhez és méretük behatárolásához azonban nem a tényleges memóriahasználatukat vizsgáltuk a sys modul getsizeof() függvényét használva, hanem a rendezendő sorozatban szereplő karakterek száma alapján becsültük. E bejegyzésben ennek okát járjuk körül. Az egyszerűség …

Egy sorozat adott memóriafelhasználású részsorozat listáinak előállítása és ennek időigénye Read More »

Rendezéshez a sorted() függvényt vagy a list.sort() metódust használjuk?

A válasz, mint ahogy sok esetben, most is az, hogy attól függ. Ugyanis a sorted() beépített függvény egy iterálható objektumot fogad és a rendezett elemeket egy listában adja vissza. Ha az argumentumként átadott iterálható objektum konténer, akkor az a sorted() hívása után változatlan marad. Ha a rendezni kívánt elemek egy listában (list típusú konténerben) vannak, …

Rendezéshez a sorted() függvényt vagy a list.sort() metódust használjuk? Read More »

Nagyméretű adathalmazok rendezése

Számos esetben igényként merülhet fel egy adathalmaz valamilyen ismérv szerinti sorba rendezése. Például ha a szabványos könyvtár itertools moduljának groupby() függvényét akarjuk használni, akkor a helyes működéshez az argumentumként átadott adatsorozatnak rendezettnek kell lenni. A sorba rendezést megtehetjük például a sorted() beépített függvénnyel, amely beállítástól függően növekvő vagy csökkenő sorrendben rendezi az értékeket és egy …

Nagyméretű adathalmazok rendezése Read More »

Véletlenszerű karakterláncok előállítása

Véletlenszerűen előállított karakterláncokra számos esetben lehet szükség. Például hasznos lehet kereskedőknek promóciós kódok (kuponok) előállításához, vagy egy rendszer által biztosított jelszavak generálásához (pl. elfelejtett jelszó esetén). De használhatjuk véletlenszerűen előállított karakterláncok sorozatát egy program teszteléséhez is. Véletlenszerű karakterláncok két módon is lehetnek véletlenszerűek. Lehet az értékük, azaz a karakterláncban szereplő karakterek véletlenek, vagy lehet a …

Véletlenszerű karakterláncok előállítása Read More »

Négyzetrácsban elhelyezett alakzatok oldalhatáron és sarkokon érintkező szomszédainak meghatározása

Bizonyos táblázatos, mátrixos feladatokban, de különösen egyes négyzetrácsos táblás játékokban /pl. Blokus vagy Torpedó (angolul Battleship)/ szükség lehet a táblázatos formában elhelyezett elemek, illetve alakzatok szomszédos celláinak meghatározására. Ráadásul az igények, illetve játékszabályok eltérhetnek abban, hogy megengedett-e az alakzatok sarkokon érintkezése vagy sem. Ezért szükség lehet nem csak az összes szomszédos cella ismeretére, hanem külön …

Négyzetrácsban elhelyezett alakzatok oldalhatáron és sarkokon érintkező szomszédainak meghatározása Read More »

Összevont szorzás és összeadás (fused multiply-add, FMA) alkalmazása a pontosabb számításokhoz

Számítási feladatokban közvetlenül vagy műveletátalakítások után nem ritkán találkozhatunk azzal, hogy két számot össze kell szorozni és a szorzathoz egy harmadik számot kell adni (x*y+z). Ha ezt a kifejezést float típusú számokkal kell kiértékelni, akkor a véges számábrázolási pontosság miatt két kerekítés történhet. A balról jobbra kiértékelés során az első kerekítés a szorzás eredményére vonatkozik, …

Összevont szorzás és összeadás (fused multiply-add, FMA) alkalmazása a pontosabb számításokhoz Read More »

Tkinter Canvas grafikák elmentése és fájlból történő megjelenítése

A tkinter modul vászon (Canvas) grafikus elemén a különféle típusú rajzelemekkel (ellipszis, ellipszisív, sokszög, téglalap, vonal) akár meglehetősen összetett grafikákat is tudunk alkotni. A rajzelemek létrehozása általában a vászonelemre meghívott konstruktormetódusokkal történik. De lehetséges az is, hogy egy rajzszerkesztő programot készítünk és/vagy használunk, ahol a rajzelemeket a program által biztosított módon helyezzük a vászonra és …

Tkinter Canvas grafikák elmentése és fájlból történő megjelenítése Read More »

Geometriai pont modellezésére melyik megvalósítás a legmegfelelőbb: normál osztály, adatosztály, namedtuple vagy NamedTuple?

Ha geometriai feladatokkal van dolgunk, vagy grafikus felhasználói felületet készítünk, szükségünk lehet egy geometriai pontot modellező osztályra, illetve annak példányaira. A kérdés, hogy ezt hogyan valósítsuk meg? Ha csak így tesszük fel a kérdést, akkor a válasz persze az, hogy „attól függ”. Ahhoz, hogy érdemben lehessen válaszolni, tudni kell, hogy mit várunk el egy pont …

Geometriai pont modellezésére melyik megvalósítás a legmegfelelőbb: normál osztály, adatosztály, namedtuple vagy NamedTuple? Read More »

Forgatható ellipszis, ellipszisív és téglalap

Ha a tkinter modul Canvas példányán meghívott create_oval(), create_arc() és create_rectangle() metódusokkal létrehozott ellipszist, ellipszisívet és téglalapot egy adott forgáspont körül forgatjuk, akkor azt tapasztaljuk, hogy azok nem a vártnak megfelelően, vagyis nem alaktartó módon forognak el, hanem torzulnak, és az ellipszis tengelyei, valamint a téglalap oldalai továbbra is a vízszintes és függőleges koordináta-tengelyekkel lesznek …

Forgatható ellipszis, ellipszisív és téglalap Read More »

Aknakereső játék készítése

Az aknakereső (Minesweeper) egy logikai játék, mely adott sor- és oszlopszámú táblázatban elrendezett mezőcellákat tartalmaz, amelyek közül, meghatározott számú, „aknát” rejt. A cél az egyes cellák felfedésével az összes akna megtalálása, illetve azok elkerülése. Ha sikerül az összes nem aknát tartalmazó cellát felfedni, akkor a játék győzelemmel befejeződik. Ha egy felfedett cellában akna van, akkor …

Aknakereső játék készítése Read More »