Scala zárthelyi dolgozat¶
2025 tavasz - MINTA csoport, 20 perc
Általános tudnivalók és követelmények:
-
A ZH-n szintaktikailag helyes (fordítási hiba mentes) kódot várunk el, a fordítási hibás megoldással nem szerezhető pont.
-
A megoldás csak deklaratív programozási konstrukciókat tartalmazhat, inkrementális kód használatával a ZH-n nem szerezhető pont.
-
A kikommentezett kódot a javítás során figyelmen kívül hagyjuk.
-
A ZH során hallgatótársaktól származó vagy AI által generált kód felhasználása nem megengedett (ilyen esetben az érintett hallgatók a ZH-ra 0 pontot kapnak), de az interneten elérhető szakmai forrás (pl. dokumentáció, jegyzet) használható.
-
Minden a feladat megoldásához tartozó kódot egyetlen .scala kiterjesztésű fájlban kell elhelyezni, csak ezt az egy fájlt kell beadni a Bírón: https://biro3.inf.u-szeged.hu/
-
Minden osztály a default package-en belül legyen megvalósítva, a publikus osztály neve a NEPTUN kódod legyen.
-
A feladatleírásban meghatározott elnevezéseken, metódusdefiníciókon, változóneveken változtatni nem szabad.
-
Feladatbeadás kötelező, az üresen hagyott beadási felület igazolatlan hiányzásnak minősül.
1. feladat
Készíts egy case class-t Komplex néven, amely komplex számokat reprezentál (valós számokból álló pár). Készítsd el az alábbi függvényeket a case class-ban:
- szoroz - két komplex számot vár paraméterül, és a szorzatukkal tér vissza:
(r_1, i_1) * (r_2, i_2) = (r_1 * r_2 - i_1 * i_2, r_1 * i_2 + r_2 * i_1)
[4 pont]
A megírt függvényeket hívd meg a main-ben tetszőleges paraméterekkel. [1 pont]
2. feladat
Készíts egy függvényt insertion néven, amely kettő paramétert vár: először egy egész értékeket tartalmazó listát, majd egy beszúrandó elemet. A függvény adja hozzá az elemet a listához, annak minden második elemét követően (tehát pl. [1, 2, 3, 4] és 5-ös érték esetén: [1, 2, 5, 3, 4, 5]). A függvényed legyen tail-recursive. A megoldásodban ne használj beépített listakezelő függvényeket. [4 pont]
A megírt függvényeket hívd meg a main-ben tetszőleges paraméterekkel. [1 pont]
1 2 3 4 5 6 7 8 9 10 11 |
|
A bíró
A megoldások továbbra is "kézzel" kerülnek kijavításra, a bíró csak előellenőrzést végez: a megoldás szintaktikailag helyes, illetve nincs-e benne imperatív konstrukció.
Segédfüggvények
A megoldás során használhatsz segédfüggvényeket és beágyazott függvényeket, hogy megkönnyítsd egy nagyobb funkció működését vagy definiálj újrafelhasználó részeket. Azonban bizonyos esetekben a feladatleírás tilthatja a magasabb rendű beépített függvények használatatát (pl. map, filter).