Programozási feladatok - függvények, stringek¶
1. feladat: Abszolútérték-maximum¶
Írj egy abs_max
nevű függvényt, amely két egész számot vár paraméterül, és visszatér ezek abszolútérték-maximumával! Tehát vesszük mindkét szám abszolútértékét, és ezek közül visszaadjuk a nagyobbat.
2. feladat: Fibonacci¶
Írj egy fibo
nevű függvényt, amely egy n
nemnegatív egész számot kap paraméterül, és visszatér a Fibonacci-sorozat n
-edik tagjával! Nagyobb n
-értékek esetén iteratív vagy rekurzív megoldást érdemes használni?
Emlékeztető
A Fibonacci-sorozat 0. eleme 0, 1. eleme 1, a többi elemet pedig mindig az előző két elem összegeként kapjuk meg.
A Fibonacci-sorozat első néhány eleme (a nulladik elemtől kezdve): \(0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...\)
Elem száma | 0. | 1. | 2. | 3. | 4. | 5. | 6. |
---|---|---|---|---|---|---|---|
Értéke | 0 | 1 | 1 | 2 | 3 | 5 | 8 |
3. feladat: Kuba¶
Kuba egy Discord szerveren moderátor. A szabadidejét sokszor azzal tölti, hogy a szerver bizonyos tagjainak a felhasználónevét átírja a következőképpen:
- a felhasználónév végére egy . (pont) karaktert tesz, amennyiben az eredetileg nem végződött pontra
- ellenkező esetben, pont karakterre végződő felhasználónevek esetén eltávolítja a név végéről a pontot.
Írj egy kuba
nevű függvényt, amely egy felhasználónevet (string) kap paraméterül, elvégzi a fenti szabályok alapján a név átalakítását, majd visszatér az így kapott eredménnyel!
4. feladat: Discord emote-ok¶
Discordon lehetőségünk van különféle emote-okkal reagálni üzenetekre. Az emote-ok között megtalálhatók például az angol ábécé betűi A-tól Z-ig. Márk ezeknek az emote-oknak a használatával szeretne kirakni egy szót, viszont fontos tudni, hogy a Discord minden emote-ot csak egyszer enged felhasználni!
Írj egy kirakhato
nevű függvényt, amely egyetlen szót (string) kap paraméterül, és visszaadja, hogy az kirakható-e úgy, hogy minden betűt csak egyszer használunk fel! A kis- és nagybetűket ne különböztessük meg!
Tip
Érdemes először csupa kisbetűssé (vagy csupa nagybetűssé) alakítani a szót, így például a második példában látható Alma
szóban ismétlődő betűként kezeljük az a
betűt.
5. feladat: Armstrong-szám¶
A matematikában egy n
-jegyű számot Armstrong-számnak nevezünk, ha minden számjegyét az n
-edik hatványra emelve és összeadva az eredeti számot kapjuk.
Pár példa
- Például a 153 egy Armstrong-szám, hiszen: \(153 \rightarrow 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153\)
- Vagy például a 370 is egy Armstrong-szám, hiszen: \(370 \rightarrow 3^3 + 7^3 + 0^3 = 27 + 343 + 0 = 370\)
- Nézzünk egy egyszerű ellenpéldát: a 45 nem Armstrong-szám, hiszen: \(45 \rightarrow 4^2 + 5^2 = 16 + 25 = 41 \neq 45\)
Írj egy armstrong_szam
nevű függvényt, amely garantáltan egy nemnegatív egész számot kap paraméterül, és visszaadja, hogy a paraméterben kapott szám Armstrong-szám vagy sem!
6. feladat: Jelszó-erősség mérő¶
Elliot egy kiberbiztonsági cégnél dolgozik. Egyik nap a felettese egy jelszó-erősség mérő szkript írásával bízta meg.
Készíts egy jelszo_erosseg
nevű függvényt, amely egy jelszót (string) kap paraméterül, és visszaadja, hogy a jelszó mennyire erős!
Szabályok a jelszó-erősség meghatározására:
- Alapból minden jelszó 1 erős
- Ha legalább 5 karakter hosszú jelszó: +1 erősség
- Ha legalább 8 karakter hosszú jelszó: +2 erősség (az előző +1 ponton felül)
- A jelszóban szereplő minden alulvonás, kötőjel vagy pont karakter +2-vel növeli a jelszó erősségét
- Ha a jelszó tartalmazza a
jelszo
vagy az123
részszöveget, akkor automatikusan 0 erős - Ha a jelszó 0 karakter hosszú, akkor szintén automatikusan 0 erős.
7. feladat: Magánhangzó eltávolítás¶
Csabi a szabadidejében sokat posztol Twitteren, viszont a posztok hosszúságára vonatkozó 280-as karakterlimitbe gyakran nem fér bele. Egyik nap kitalálta, hogy ha a posztjaiból elhagyja a magánhangzókat, akkor már kevésbé gyűlik meg a baja a karakterlimittel.
Írj egy maganhangzot_torol
nevű függvényt, amely egy szöveget vár paraméterül! A függvény távolítsa el a szövegben található összes magánhangzót, majd térjen vissza a magánhangzók nélküli szöveggel! A paraméterül kapott szövegben ékezetes betűk garantáltan nem szerepelnek.
Input: 'Iden Java szigeten voltunk nyaralni. Nem is tudtam, hogy elneveztek egy helyet egy programozasi nyelvrol.'
Return: 'dn Jv szgtn vltnk nyrln. Nm s tdtm, hgy lnvztk gy hlyt gy prgrmzs nylvrl.'
8. feladat: Szöveg titkosítása¶
Robi és Misi jó barátok, sőt történetesen ugyanannál a cégnél munkatársak. Kitalálták, hogy azért, hogy a főnökük ne érthesse meg az egymásnak írt üzeneteiket, egy egyszerű titkosítást használnak. A küldő kódolja az üzenetet az elküldés előtt, a fogadó pedig visszafejti azt.
Írj egy kodol
nevű függvényt, amely 3 paramétert kap: rendre a titkosítandó üzenetet, egy n
pozitív egész számot, valamint egy c
karaktert. A függvény alakítsa át az üzenetet úgy, hogy az üzenet minden betűje után n
darab c
karaktert tegyen! A függvény visszatérési értéke a kódolt üzenet.
Input: 'Pizza delben?', 3, 'x'
Return: 'Pxxxixxxzxxxzxxxaxxx xxxdxxxexxxlxxxbxxxexxxnxxx?xxx'
9. feladat: Titkosított szöveg visszafejtése¶
Természetesen Robi és Misi kommunikációjához fontos, hogy a két kolléga vissza tudja fejteni egymás kódolt üzeneteit.
Írj egy dekodol
nevű függvényt, amely 2 paramétert kap: rendre a kódolt szöveget és egy n
pozitív egész számot! A szöveget úgy tudjuk dekódolni, hogy a szöveg első karakterétől indulunk, mindig kihagyunk n darab karaktert, és a nem kihagyott karaktereket összeolvassuk. A függvény visszatérési értéke a dekódolt szöveg.
10. feladat: Elmozdulás¶
Írj egy elmozdulas nevű függvényt, amely egy útvonalat elkódoló szöveget kap paraméterül!
A szövegben előforduló betűk és jelentésük:
F
(1 lépést megyünk felfelé)L
(1 lépést megyünk lefelé)J
(1 lépést megyünk jobbra)B
(1 lépést megyünk balra)
A függvény adja vissza a példában látható formátumban azt, hogy a kiinduló pozíciónkhoz képest, az útvonal követésével mennyit megyünk a vízszintes, illetve a függőleges irányba! Ha az útvonal követésével a kiinduló pozícióba érünk vissza, akkor a függvény a Nem mentunk sehova szöveggel térjen vissza!
Például, ha az útvonalunk a JBBFB
, akkor 1 lépést mentünk jobbra, majd 2-t balra, 1-et fel és végül 1-et balra. Így az eredeti pozíciónkhoz képest 2 lépéssel kerültünk balra és 1 lépéssel kerültünk feljebb.
11. feladat: Idegesség detektor¶
Zsófi az egyik egyetemi projektjében CooSpace kommenteket elemez. A feladat egy egyszerű algoritmus írása, amely a komment szövege alapján eldönti, hogy a kommentet író felhasználó ideges lehetett-e a kommentírás pillanatában.
Írj egy idegesseg_detektor
nevű függvényt, amely egy komment szövegét várja paraméterül!
A függvény számolja meg, hogy összesen hány nagybetű és felkiáltójel (!
) szerepel a komment szövegében, majd az így kapott eredményt ossza el a komment szövegének hosszával!
Ha az így kapott arányszám 0.5-nél nagyobb, akkor a függvény logikai igaz, egyébként pedig logikai hamis értékkel térjen vissza!
Kezeld le azt az esetet, amikor a komment szövege egyetlen karaktert sem tartalmaz! Ekkor a függvény None beépített értékkel térjen vissza!
Input: 'Hello! 3 darab AUCHANOS ZSEMLET cserelnek SURGOSEN kedd esti PROG2 gyakorlatra.'
Return: False
Input: 'KEDVES FERENC! Az EN VELEMENYEM pedig az, hogy a FELADAT KESZITOJE KIFOGYOTT az ERTELMES peldamondatokbol!!!!!!'
Return: True
A feladat csak Pythonban oldható meg a visszatérési érték eltérő típusai miatt.
Input: ''
Return: None
12. feladat: Szövegtömörítés¶
Írj egy tomorit
nevű függvényt, amely egy szöveget vár paraméterül!
A függvény tömörítse a paraméterben kapott szöveget úgy, hogy az egymás után lévő ismétlődő karakterek helyett az ismétlődések számát és az ismétlődő karaktert jelenítse meg (így például az aaabb
szövegből 3a2b
lesz)! A visszatérési érték a tömörített szöveg.
A paraméterben kapott szöveg garantáltan legalább 1 karakter hosszú.