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.
A feladat egy Python program írása, amely három számot vár a bemenetén. Ezek egy időpontot mutatnak: óra, perc és másodperc. A program ezek után teknőcgrafikával rajzoljon egy órát, amely a megadott időpontot mutatja.
Az órán legyen meg mindhárom mutató! A mutatók ne mindig pontosan az egész órára és percekre mutassanak! (Ha pl. fél kilenc van, a kismutató a nyolcas és a kilences között van középen. De ilyet a percmutató is csináljon.) A számlapról ne hiányozzanak a percenkénti osztások sem, sőt az egész órákhoz tartozó osztások legyenek különbözőek, mint a többi! A megrajzolt órát ízlés szerint díszítsd ki!
Használd az első előadáson megismert vezérlési szerkezeteket!
Elfogadott megoldások: 83 darab.
Szerezhető: 1 pont. Leadási határidő: 2024-09-12 04:00:00.
Ha tetszett a Caesar kódolás (laboron volt), itt olvashatsz egy nehezebben visszafejthető titkosításról, az ún. Vigenère-rejtjelről
A feladat a kézi kódoláshoz és dekódoláshoz szükséges táblázat előállítása. A program kérjen egy jelszót, majd a jelszóhoz állítsa elő a táblázatot a megadott minta alapján, fejléccel, vízszintes és függőleges vonalakkal, de nehezítésként úgy, hogy
- csak egy ciklus használható, és a ciklus magja egy print() hívás lehet, más nem!
- a szövegkonstansok hossza nem haladhatja meg a 26-ot
- sehol nem szerepelhet benne számkonstans, pl. 26
A beadott jelszó legyen a "PELDA", az elvárt kimenet pedig:
|ABCDEFGHIJKLMNOPQRSTUVWXYZ
-+--------------------------
P|PQRSTUVWXYZABCDEFGHIJKLMNO
E|EFGHIJKLMNOPQRSTUVWXYZABCD
L|LMNOPQRSTUVWXYZABCDEFGHIJK
D|DEFGHIJKLMNOPQRSTUVWXYZABC
A|ABCDEFGHIJKLMNOPQRSTUVWXYZ
A program első sorába megjegyzésként írd bele az eltitkosított keresztnevedet a PELDA
jelszóval.
Pl. ha a keresztneved JANOS
, akkor a kódolt szöveg pedig YEYRS
lesz.
Csak az angol ABC nagybetűivel kell foglalkozni, ékezetekkel nem.
Tipp
Használd a sztringekről, indexelésről, karakterkódokról tanultakat!
Beadás előtt ellenőrizd a következőket:
- a feladatkiírást teljesen megvalósítottad
- keress egy webes szolgáltatást és nézd meg, hogy jól sikerült-e titkosítani a neved.
(Ez inkább egy tananyaghoz kapcsolódó fejtörő, mint valódi feladat, pár sor a megoldás. Ha rájöttél, kérlek ne oszd meg mással, ne publikáld az interneten stb. Köszönöm, hogy fair módon játszol.)
Elfogadott megoldások: 39 darab.
Szerezhető: 1 pont. Leadási határidő: 2024-09-26 04:00:00.
„A Cmabgidre eeygteemn vzétget ktuatás sernizt, tseljeen mdngiey, hgoy a lerít szvaak bsebeljeén mleyin serednbron vannak a btűek, cask az sámzít, hgoy az eslő és az ustloó bteű a hyeéln lyegen. A tböbi titsáaoln meg lehet keevvre, a sövezg akokr is osaalhtvó. Ez aézrt van, mret nem mdnien eyegs beűtt oavlnusk, hnaem tleejs svaaakzt eygben.”
Szóval még egyszer, most rendesen: „A Cambridge egyetemen végzett kutatás szerint, teljesen mindegy, hogy a leírt szavak belsejében milyen sorrendben vannak a betűk, csak az számít, hogy az első és az utolsó betű a helyén legyen. A többi totálisan meg lehet keverve, a szöveg akkor is olvasható. Ez azért van, mert nem minden egyes betűt olvasunk, hanem teljes szavakat egyben.” A kutatás egyébként nem pont erről szólt, és a pontos állítás nem ez; a történet elolvasható itt: Cmabridge.
Írj egy programot, amely beolvas egy szöveget, és kiírja azt a fenti leírás szerint megkavarva!
Útmutató: (ha már ismered a függvényeket, akkor se használd kérlek ebben a feladatban)
-
Előbb írj egy külön programot, amelyik egyetlen egy szó karaktereit tudja megkeverni. Legkönnyebb úgy, ha az összeset megkevered, és utána írsz olyan programrészt, amelyik az első és az utolsó karaktert érintetlenül hagyja. Írásjelekkel most ne foglalkozz. Figyelj arra, hogy a sztringek csak olvashatóak (immutábilisak): nem írhatod felül egy karakterüket, hanem új sztringet kell építeni.
-
Módosítsd ezt úgy, hogy még mindig egy szón dolgozol, de figyelembe veszed, ha annak írásjel van a végén! Pl. „alma!”, vagy „ajtó...”.
-
Ha ez működik, akkor „építsd körbe” olyan programrésszel, amelyik egy lista szavain alkalmazza ezt az algoritmust, minden szót kicserélve az összezagyváltra.
Nézz utána, mit csinál a sztringek .split()
és .join()
művelete, és használd azt a végleges megoldáshoz!
A programot beadás előtt nagyon alaposan teszteld! Keress legalább 3 nem triviális mondatot, szóösszetételt és próbáld ki, jól működik-e. Pl. ebben a mondatban az utolsó szóban nem szabad a kötőjelnek és az "e" nek elmozdulnia. Tehát egy helyes megoldás a "mkűödki-e", egy helytelen pedig a "mkűö-dkie". Ezeket a teszteseteket írd bele egy megjegyzésbe a program elejére!
Elfogadott megoldások: 39 darab.
Szerezhető: 1 pont. Leadási határidő: 2024-10-03 04:00:00.
Időnként előfordul, amikor két ember beszélget, hogy:
- "örülök" erre a másik:
- "örülök, hogy örülsz"
ezt persze folytathatjuk tovább is:
"örülök, hogy örülsz, hogy örülök, hogy örülsz, hogy örülök"
Írj rekurzív függvényt, ami paraméterként megkapja az "örülések" számát és kiírja a mondatot. Az előző mondat az öthöz tartozó eredmény.
Elfogadott megoldások: 45 darab.
Szerezhető: 1 pont. Leadási határidő: 2024-10-17 04:00:00.
Definiálj típust, amelyben egy időpontot tudsz tárolni, külön óra (0...23), perc (0...59) és másodperc (0...59) értékekkel! Valósíts meg minden értelmes műveletet operátor formájában! Minden függvényt dokumentálj docstring-gel és minden művelethez írj tesztet assert segítségével, ahogy az előadáson láttad. Teszteseteket pl. az Excel segítségével tudsz generálni. Pl. két időpont különbségére:
13:48:11-11:22:33=2:25:38
Elfogadott megoldások: 26 darab.
Szerezhető: 2 pont. Leadási határidő: 2024-10-31 04:00:00.
Magyar kártya paklikat szeretnénk tárolni, a lehető legtömörebben. Számold ki, hogy egy kártya ábrázolásához minimum hány bit szükséges, majd tárold el a teljes 32 lapos paklit úgy, hogy a lehető legjobban használd ki a tárterületet. Ötleteket az Eratoszthenész szitája, spórolósan feladat megoldásából vehetsz. Írd meg az ehhez tartozó kódot, ami generál egy véletlenszerű paklit, majd "összecsomagolja" a lehető legjobban és elmenti binárisan egy fájlba. A teszteléshez írj egy olyan függvényt is, amely kiolvassa a pakli lapjait és szövegesen megjeleníti a képernyőn, általad választott formátumban, pl.
Tök ász
Makk felső
Piros X
stb.
A beadott fájl elején egy megjegyzésben dokumentáld a választott kódolást és indokold meg a döntéseket. Írd oda, hogy milyen méretre sikerült végül összetömöríteni (mekkora lett a bináris fájl!)
Pontozás: 1p a kártyák kódolásáért és a jó magyarázatért. 1p a pakli tömörítéséért.
Elfogadott megoldások: 26 darab.
Szerezhető: 2 pont. Leadási határidő: 2024-11-07 04:00:00.
Az előadáson láttad, hogy bináris fából morzekódot dekódoló fát is lehet építeni.
Keresd meg a neten a jelek táblázatát, és írj programot, amelyik felépíti egy táblázat alapján ezt a dekódoló fát!
Írj függvényt, amelyik megkap egy jelsorozatot, pl. ".--."
és a dekódoló fát; ebből pedig
visszaadja a dekódolt betűt, pl. "P"
!
Írj főprogramot, amelyik beolvassa és dekódolja a morze.txt
nevű fájlt, amelyikben az
alábbihoz hasonlóan egy morzekóddal írt szöveg van. Ebben betűkhöz tartozó jelsorozatokat
szóköz választja el egymástól, a szavakhoz tartozóakat pedig újsor karakter. Olvasd be a
fájlt, és írd ki a dekódolt szöveget a kimenetre!
.--. -.-- - .... --- -.
..-. - .--
Értékelés:
- 1 pont, ha a dekódolás működik a fa segítségével.
- Még 1 pont, ha a fát rekurzív algoritmussal építed meg; kiindulva egy Morze táblázatból, amelyik ábécé rendben (!) tartalmazza a jeleket.
Elfogadott megoldások: 28 darab.
Szerezhető: 2 pont. Leadási határidő: 2024-11-14 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ő: 2024-12-09 04:00:00.
A feladat súlypontja most nem a kódolás, hanem a mérés.
A félév során legalább három módszert megismertél amelyek alkalmasak arra, hogy szöveg szavaiból statisztikát készítsünk, azaz melyik szó hányszor szerepel. Ezek a módszerek a következők:
- bináris fa (előadáson volt, kóddal együtt)
- hash tábla (13. hét laboranyaga, illetve Algoritmusok és Gráfok...)
- a beépített dictionary
Ehhez negyedikként vegyük hozzá a collections Counter-t.
Fogj egy hosszabb (az egyszerűség kedvéért angol nyelvű) szöveget (kb. 100-200 oldalnyit) és készítsd el a szavak statisztikáját mind a négy módszer segítségével. (Addig számold, amíg egyforma eredményt nem kapsz :-) Mérd meg (nézz utána hogyan kell időt mérni!) a végrehajtás idejét és készíts egy pdf formátumú jegyzőkönyvet. A forráskódot és a pdf doksit pedig zip formátumban töltsed fel.
Várhatóan a Counter lesz a leggyorsabb, hiszen erre készült, a Dictionary pedig sokkal gyorsabb lesz, mint a kézi megoldások, a kérdés az, hogy mennyire.
Elfogadott megoldások: 0 darab.
Szerezhető: 2 pont. Leadási határidő: 2024-11-28 04:00:00.