Szorgalmi feladatok
A feladatok megoldásai az admin portálon adhatók be. A szorgalmi feladatokkal egy pontversenyben is részt lehet venni. Alapbeállítás szerint anonim módon jelensz meg a táblázatban. Ha szeretnél névvel megjelenni vagy teljesen eltűnni, az admin portálon beállíthatod.
A verseny állásának megtekintéséhez is be kell jelentkezni.
Ez az első grafikus szorgalmi. A megoldás előtt tanulmányozd az Pygame-ről szóló írást, azon belül is az „Első program” fejezetet!
A feladat a következő. Egy olyan programot kell írnod, amely megnyit egy 640×480 pontból álló ablakot. Ezután végigpásztázza ennek összes képpontját, az alábbiak szerint színezi őket.
- Pirosra színezi azokat, amelyek kb. 200 képpontnyira vannak a (320;240) ponttól.
- Zöldre színezi azokat, amelyek távolságösszege a (240;200) és (400;280) pontoktól kb. 250 képpontnyi.
- Kékre azokat, amelyeknél a (240;240) ponttól és a (400;240) ponttól vett távolságok különbségének abszolút értéke kb. 100 képpont.
- Végül pedig fehérre azokat, amelyeknél a távolság a (320;240) ponttól, illetve az x=400 egyenestől kb. ugyanakkora.
A „kb. valahány képpont”-nál az egyenlőség határát nevezd epszilonnak, és add meg a programban egy eps nevű változóval! Ennek jó értéke lehet az 5, de próbálhatsz kisebbeket vagy nagyobbakat is (pl. 2 vagy 10). Az egyes alakzatoknak neve is van (középiskolában tanult alakzatok), ezeket írd bele kommentben a programba!
Írj a Pont osztályhoz kivonó és abszolút érték operátort! Ügyelj arra, hogy ezek tényleg azt a műveletet végezzék, amit a nevük mond. A p1 - p2 kifejezés a pontok közti vektort (vektorok különbségét) kell adja, szintén egy pontot. Az abs(p) kifejezés pedig a vektor hosszát (origótól való távolságát).
Beadás előtt ellenőrizd:
- Nincs-e sok kódduplikáció a feladat matematikai részében. Bárhol ismétlést, hasonlóságot látsz, ahhoz függvény kell. Ha kódismétlés van függvény helyett, nem jár a pont! Használd a megírt operátorokat!
- Nincs-e
if (xxx) return true; else return false;alakú kódrészleted.
A megvalósításról és a tesztelésről készíts egy rövid, markdown formátumú leírást! (ha nem tudod, mi a markdown, kérlek nézz utána!)
Elfogadott megoldások: 15 darab.
Szerezhető: 2 pont. Leadási határidő: 2025-11-06 04:00:00.
Tömörítés
(Ötlet: 2025. Digitális kultúra idegen nyelven emelt szintű érettségi)
Az ASCII-karaktereket tartalmazó állományokat tömöríthetjük is, ha az egymást követő ismétlődő karaktereket rövidebb kóddal helyettesítjük. Az alábbi mintán látható, hogy a könyvet ábrázoló ASCII-képet hogyan tároltuk el tömörítettlen, illetve tömörített formában. (a szóköz karaktert az olvashatóság érdekében ponttal helyettesítettük)
...._______ 4.7_
.../....../, 3.1/6.1/1,
../......// 2.1/6.2/
./______// 1.1/6_2/
(______(/ 1(6_1(1/
Az ábrák tömörített változatai az alábbiak szerint állnak elő a tömörítetlen változatból:
- A tömörített állomány ugyanannyi sorból áll, mint a tömörítetlen.
- A tömörített állomány blokkok formájában tárolja el az ábrát. Egy blokk két karakter hosszú. A blokk első karaktere mindig egy 1 és 9 közti egész szám lehet. Ez jelzi, hogy a blokk második karaktere hányszor fordul elő közvetlenül egymás után az ábra adott sorában. A „2/” blokk tehát azt jelenti, hogy egymás után kétszer kell a / karaktert kirajzolni. A „4 ” blokk jelentése, hogy a szóköz karaktert négyszer kell kirajzolni egymás után.
- Ha egy karakter 9-nél többször ismétlődik, akkor több blokkot kell elhelyezni egymás után. Ha például 12 alkalommal kell kirajzolni a „$” karaktert, akkor a tömörített állomány a '9$3$' blokkokat tartalmazná.
- A blokkokat soronként tároljuk el a fájlban.
A feladat első része, egy pontért:
Az ASCII Art gyűjteményből töltsél le legalább három - tetszés szerinti rajzot és a Normand Veilleux féle nagy focilabdát Írd meg a be és ki tömörítést végző függvényeket, majd ezek felhasználásával írj programot, ami egy könyvtárban elhelyezett ascii art rajzokat tömörít és statisztikát készít a következőképpen:
név, eredeti méret, tömörített méret, tömörítési arány %-ban (tömörített/eredeti)
konyv.txt, 57, 42, 73.7%
(a méretbe beleszámít a sor végi enter is)
A könyvtár nevét parancssori paraméterként lehessen megadni.
Készíts egy rövid markdown formátumú leírást a megvalósításról, anélkül a megoldás nem ér pontot!
A második pontért: csinálj jobb tömörítést! A szabályok a következők:
- a tömörített fájlban csak ASCII nyomtatható karakter lehet (ASCII kód 32 és 126 között!)
- soronként kell tömöríteni, a tömörített fájl ugyanannyi sorból kell, hogy álljon, mint az eredeti
- a kitömörítésnél nincs memóriád, nem használhatod a már kiírt karaktereket, sem az előző sort
- nem használhatsz bitműveleteket
(ez utóbbi két kikötés azért van, hogy ne a standard tömörítési algoritmusokkal (pl. LZ77, Huffman kód stb.) próbálkozz...)
Erről szintén készíts egy statisztikát és egy rövid markdown formátumú leírást. A focilabdát a legjobban tömörítő algoritmusért jár a 3. pont.
Elfogadott megoldások: 8 darab.
Szerezhető: 3 pont. Leadási határidő: 2025-11-13 04:00:00.
Egy sakk állást úgy tudunk tárolni, hogy eltároljuk az összes figura típusát, színét és pozícióját. Tervezz meg egy szöveges fájlformátumot egy adott állás tárolására! Ezután tervezz egy bináris formátumot is, és használd az előadáson megismert bitműveleteket a tömör tároláshoz!
Dokumentáld markdown formátumban mindkét fájlformátumot, és röviden írd le a döntéseidben választott szempontokat. Határozd meg és dokumentáld azt is, hogy a binárisan tárolt feladvány mérete hányadrésze lesz a szöveges tárolásmódnak! (ezt nem kell megmérni, hanem ki kell számolni és be kell bizonyítani!)
Ezután fogd erről az oldalról a névnapodon kiadott feladványt (ha pont nincs aznapi, akkor a legközelebb lévőt), valósítsd meg és tárold el mindkét módon.
Pontozás:
1 pont a szöveges formátum (dokumentáció és kód)
1 pont a bináris formátum (dokumentáció és kód)
1 extra pontért pedig jelenítsd meg a sakktáblát, de szép legyen! (tipp: Sakk figurák karakterkódjai)
Dokumentáció nélkül a feladat nem ér pontot!
Elfogadott megoldások: 9 darab.
Szerezhető: 3 pont. Leadási határidő: 2025-11-20 04:00:00.
Ha szeretnéd a nagy házidat beküldeni a „szépségversenyre”, azt itt teheted meg. A formai követelmények:
- Egy maximum 800×600-as, igényesen, széleken nem hibásan kivágott képernyőkép PNG formátumban:
kep.png. - Feladat címe és rövid leírás, helyesírási hibáktól és elgépelésektől mentesen, txt formátumban:
leiras.txt. - Hozzájárulás egy másik txt-ben, hogy megjelenhetsz névvel a honlapon:
hozzajarulas.txt. - Mindezek egy ZIP fájlba csomagolva.
Ha méretezned kell a képet, olyan programmal csináld, amelyik szépen teszi azt, pl. GIMP! Leginkább a betűkön látszik.
Figyelem: ez a feladat nem potya +1 pont! A beküldött képen látszódnia kell, hogy energiát fektettél a program megjelenésének fejlesztésére. Ez grafikus programokra is érvényes, konzolos programokra még inkább. A csúnya képek, hejjes irási , hipás leírások pontot nem kapnak, csak citrom-díjat 🍋. Ugyanígy nem ér pontot, ha nem használod az előírt file neveket. A szépség fogalma szubjektív; ha bizonytalan vagy, nézd meg a régebbi galériákat.
Elfogadott megoldások: 0 darab.
Szerezhető: 1 pont. Leadási határidő: 2025-12-04 04:00:00.