Kihagyás

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.

Példa 1.
Input: 12, -15
Return: 15

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
Példa 1.
Input: 10
Return: 55
Példa 2.
Input: 42
Return: 267914296

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!

Példa 1.
Input: 'Korte12'
Return: 'Korte12.'
Példa 2.
Input: 'Tamas.'
Return: 'Tamas'

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.

Példa 1.
Input: 'Szilva'
Return: True
Példa 2.
Input: 'Alma'
Return: False
Példa 3.
Input: 'Gorogdinnye'
Return: False

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 175 is egy Armstrong-szám, hiszen: \(175 \rightarrow 1^3 + 7^3 + 5^3 = 1 + 49 + 125 = 175\)
  • 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!

Példa 1.
Input: 153
Return: True
Példa 2.
Input: 1999
Return: False
Példa 3.
Input: 8208
Return: True

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 az 123 részszöveget, akkor automatikusan 0 erős
  • Ha a jelszó 0 karakter hosszú, akkor szintén automatikusan 0 erős.
Példa 1.
Input: 'hazi_macska_4_life'
Return: 10
Példa 2.
Input: 'ez1feltorhetetlenjelszo'
Return: 0

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.

Példa 1.
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.

Példa 1.
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.

Példa 1.
Input: 'Pxxxixxxzxxxzxxxaxxx xxxdxxxexxxlxxxbxxxexxxnxxx?xxx', 3
Return: 'Pizza delben?'

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.

Példa 1.
Input: 'JJFBFFFFFFBBBL'
Return: '2 lepes balra, 6 lepes fel'
Példa 2.
Input: 'FBLLLJLLJ'
Return: '1 lepes jobbra, 4 lepes le'
Példa 3.
Input: 'FFF'
Return: '3 lepes fel'
Példa 4.
Input: 'FFLLBBJJ'
Return: 'Nem mentunk sehova'

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!

Példa 1.
Input: 'Hello! 3 darab AUCHANOS ZSEMLET cserelnek SURGOSEN kedd esti PROG2 gyakorlatra.'
Return: False
Példa 2.
Input: 'KEDVES FERENC! Az EN VELEMENYEM pedig az, hogy a FELADAT KESZITOJE KIFOGYOTT az ERTELMES peldamondatokbol!!!!!!'
Return: True
Példa 3.
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ú.

Példa 1.
Input: 'Hahooooo! Van itt valaki???'
Return: 'Hah5o! Van i2t valaki3?'