A KöMaL 2023. márciusi informatika feladatai
Kérjük, ha még nem tetted meg, olvasd el a versenykiírást.
Feladat típusok elrejtése/megmutatása:
I-jelű feladatokA beküldési határidő 2023. április 17-én LEJÁRT. |
I. 586. Judit és Gábor az órák közötti szünetben a táblánál játszanak. Az üres táblára felírnak háromjegyű pozitív egész számokat, összesen \(\displaystyle N\) darabot. Ezután felváltva letörölnek egy általuk választott számból egy számjegyet a szám elejéről vagy végéről, de csak akkor, ha a megmaradt szám osztója valamelyik táblán lévő számnak. Ha a törlés során olyan kétjegyű szám maradna, ami 0-val kezdődne, akkor a 0-t is letörlik. Tehát a 205 számból a 2-es törlése után 5 lesz. Az egyjegyű számokat nem törlik le.
A játék véget ér, ha már csak egyjegyű számok vannak, illetve akkor is, ha már nem lehet a tábláról újabb számot letörölni. Készítsünk programot, amely modellezi a fenti játékot úgy, hogy a bemenetként megadott \(\displaystyle N\) számhoz megad egy tetszőleges törléssorozatot egészen a játék végéig, vagyis amikor már nem lehet újabb számot törölni.
A program a standard bemenet első sorából olvassa be \(\displaystyle N\) értékét (\(\displaystyle 3\le N\le 20\)), majd a második sorából az \(\displaystyle N\) darab számot. A program a standard kimenet egymást követő soraiba írja ki a játék egy-egy törlése után a táblán látható számokat. A számok sorrendje a kiíráskor ne változzon. Amennyiben nincs törlési lehetőség, úgy a kimenetre ne írjunk semmit.
Példa:
Beküldendő egy tömörített i586.zip állományban a program forráskódja és rövid dokumentációja, amely megadja, hogy a forrásállomány melyik fejlesztői környezetben fordítható.
(10 pont)
I. 587. Adott a síkon 6 darab (\(\displaystyle P_{1}, P_{2}, \ldots, P_{6}\)) pont, mindegyik pont \(\displaystyle x\) és \(\displaystyle y\) koordinátája a \(\displaystyle [-500; 500]\) (méter) intervallumba esik. Minden pont pillanatnyi sebességvektora a rákövetkező pont irányába mutat, tehát mindig afelé mozog: a \(\displaystyle P_{1}\) a \(\displaystyle P_{2}\) irányába, a \(\displaystyle P_{2}\) a \(\displaystyle P_{3}\) irányába, \(\displaystyle \ldots\), a \(\displaystyle P_{5}\) a \(\displaystyle P_{6}\) irányába, végül a \(\displaystyle P_{6}\) a \(\displaystyle P_{1}\) irányába, méghozzá azonos nagyságú \(\displaystyle 0 < v \le 1{,}5~\left(\frac{\mathrm{m}}{\mathrm{s}}\right)\) sebességgel. Készítsünk szimulációt, amely másodperc időközönként közelíti a fenti folyamatot. Számítsuk ki az egyes pontok koordinátáit a kiindulási pontból a \(\displaystyle t=0\) kezdőértékkel a következő 1000 másodpercben és jelenítsük meg diagramon a mozgásukat.
1. Hozzuk létre a táblázatkezelő egy üres munkafüzetében az Alapadatok munkalapot.
2. Készítsük el az A1:M1 cellák szövegét a minta szerint. Állítsuk az A2:M2 cellák formátumát a minta szerint, adataik két tizedes pontossággal jelenjenek meg.
3. Hozzuk létre a Pozíciók munkalapot. A munkafüzetben ne legyen több munkalap.
4. Írjunk be a feltételeknek megfelelő adatokat az Alapadatok munkalap A2:M2 celláiba. A Pozíciók munkalap A1:M1002 celláiba kerüljenek a pontok kiszámított koordinátái az első 1000 másodpercre. Segédszámításokat az M oszloptól jobbra végezhetünk. Ezen a munkalapon nem követelmény a minta szerinti formázás.
5. Végül az Alapadatok munkalapon maximum az A:J oszlopok szélességében az alapadatok alatt jelenítsük meg a mozgásvonalakat diagramon, úgy, hogy lehetőleg görgetés nélkül teljesen megjelenjen a képernyőn.
A megoldásban saját függvény vagy makró nem használható.
Beküldendő egy tömörített i587.zip állományban a táblázatkezelő munkafüzet, illetve egy rövid dokumentáció, amelyben szerepel az egymás utáni adatsorok kiszámításának elve, a megoldáskor alkalmazott táblázatkezelő neve, verziószáma.
Minták:
(10 pont)
I. 588. (É). A teniszezők világranglistáját heti gyakorisággal frissítik. A rendelkezésre álló vilagelso.txt és jatekos.txt állományok a ranglista bevezetése óta napjainkig tartó időszak férfi első helyezettjeinek adatait tartalmazzák.
A feladat megoldásához a digitális kultúra emelt szintű érettségin használható XAMPP használatát javasoljuk.
1. Készítsünk új adatbázist tenisz néven. A mellékelt két – tabulátorokkal tagolt, UTF-8 kódolású – szöveges állományt importáljuk az adatbázisba az általunk létrehozott táblákba, a fájlnévvel azonos néven (vilagelso, jatekos). Az állományok első sora a mezőneveket tartalmazza. A létrehozás során állítsuk be a megfelelő típusokat és a kulcsokat. A táblák kialakításához vegyük figyelembe az alábbi táblaleírásokat és kapcsolatokat.
Táblák:
A következő feladatokat megoldó SQL parancsokat rögzítsük a tenisz_megoldas.sql nevű állományban a feladatok végén zárójelben megadott névvel. A javítás során csak ennek az állománynak a tartalma lesz értékelve. Ügyeljünk arra, hogy a lekérdezésekben pontosan a kívánt mezők szerepeljenek, felesleges mezőket ne jelenítsünk meg.
2. A világranglistát hetente frissítik és a listavezetést hetekben mérik. Adjuk meg lekérdezés segítségével időrendben, hogy ki hány hétig volt ranglistavezető. (2listavezetes)
3. Általában a játékosok megszakításokkal, de többször kerülnek ranglistavezető pozícióba. Listázzuk lekérdezés segítségével azokat a játékosokat, akik csak egyetlenegy időszakban vezették a világranglistát. A listában a játékos neve, országa, a ranglistavezetés kezdő és befejező dátuma jelenjen meg. (3egyszer)
4. Lekérdezéssel adjuk meg az első 20 – összesítve legtöbb héten át – ranglistavezető játékos nevét, országát és a hetek számát, utóbbi szerint csökkenő sorrendben. (4legnagyobbak)
5. Adjuk meg lekérdezés segítségével, hogy 2000-ben, év végén melyik játékos vezette a világranglistát. (5evvege)
6. Lekérdezéssel határozzuk meg, hogy Roger Federer utolsó világelsősége után melyik játékos volt először listavezető. (6federerutan)
7. Készítsünk lekérdezést, amely kilistázza azokat a játékosokat, akik 2010. és 2020. között voltak ranglistavezetők. A listában a játékosok neve és országa jelenjen meg ismétlődés nélkül, az előbbi szerint növekvő sorrendben. (7tobb)
8. Adjuk meg lekérdezés segítségével azt az évet, amikor a világelső személye legtöbbször változott. (8mozgalmas)
9. Lekérdezés segítségével adjuk meg azokat a férfi teniszezőket, akik egy naptári év minden napján világelsők voltak. (9rekorderek)
Beküldendő egy tömörített i588.zip állományban az adatbázis exportját tartalmazó tenisz.sql és a feladatok megoldását tartalmazó tenisz_megoldas.sql nevű állomány.
Letölthető állomány: jatekos.txt, vilagelso.txt.
(10 pont)
I/S-jelű feladatokA beküldési határidő 2023. április 17-én LEJÁRT. |
I/S. 70. Egy T betűsorozatot palindromnak nevezünk, ha az angol ábécé kisbetűiből áll, és visszafele olvasva megegyezik T-vel. Például az ,,abbfbba'', ,,e'' és ,,tt'' betűsorozatok palindromok, de az ,,ab'', ,,xyz'' és ,,abab'' betűsorozatok nem.
Egy T betűsorozatot szuperpalindromnak nevezünk, ha pontosan egy betűből áll, vagy pedig felírható PxP alakban, ahol P egy szuperpalindrom, x pedig az angol ábécé egy tetszőleges kisbetűje. Például az ,,a'', ,,xyxhxyx'' és ,,aaa'' betűsorok szuperpalindromok, de az ,,aa'', ,,xyxhyxy'' és ,,aabcbaa'' betűsorok nem.
Adott egy \(\displaystyle N\) darab betűből álló betűsor. Adjuk meg, hogy minimum hány betűjét kell megváltoztatni ahhoz, hogy egy szuperpalindromot kapjunk.
A bemenet első sorában az \(\displaystyle N\) szám található, a betűsor hossza. A második sorban az angol ábécé \(\displaystyle N\) darab betűje található, szóköz nélkül.
A kimenet egyetlen sorában egyetlen szám szerepeljen: a minimálisan átírandó betűk száma, hogy szuperpalindromot kapjunk. Ha ez nem lehetséges, írjunk ki \(\displaystyle (-1)\)-et.
Magyarázat (1. példa): 3 betű megváltoztatásával kaphatjuk például a következő szuperpalindromot: ,,abababa''.
Korlátok: \(\displaystyle 1 \le N \le 10^{5}\). Időkorlát: 0,4 mp.
Értékelés: a pontok 50%-a kapható, ha a program helyes kimenetet ad az \(\displaystyle N\le 7\) esetekben.
Beküldendő egy is70.zip tömörített állományban a megfelelően dokumentált és kommentezett forrásprogram, amely tartalmazza a megoldás lépéseit, valamint megadja, hogy a program melyik fejlesztői környezetben futtatható. A dokumentáció tartalmazza a megoldás elméleti hátterét, az esetleg felhasznált forrásokat. Ne tartalmazzon kódrészleteket, azok magyarázata kódkommentek formájában a forrásprogramban szerepeljen.
(10 pont)
S-jelű feladatokA beküldési határidő 2023. április 17-én LEJÁRT. |
S. 169. 2 egység magasságú egyenes hasáb alakú tárolóedényt szeretnénk készíteni. Az edény alapjának elkészítéséhez kiindulásként adott egy konvex sokszög, melynek csúcsai a koordináta-rendszer rácspontjaira esnek. Ennek a sokszögnek töröljük egy csúcsát és a csúcshoz kapcsolódó két élét, és összekötjük egy éllel a törölt élek megmaradt csúcspontjait. Az így kialakuló sokszöget tekintjük a tárolóedény alapjának.
Feladatunk, hogy a feltételek szerint adott konvex sokszög esetén határozzuk meg, mekkora a belőle készíthető legnagyobb kapacitású edény kapacitása.
A bemenet első sorában a konvex sokszög csúcsainak \(\displaystyle N\) száma szerepel. A következő \(\displaystyle N\) sorban a csúcsok \(\displaystyle x\) és \(\displaystyle y\) koordinátája pozitív körüljárási irány szerint. A listában a szomszédos pontok a sokszöget alkotó szakaszok végpontjai. Az első és az utolsó csúcs is össze van kötve.
A kimenet első és egyetlen sorába a konvex sokszögből készíthető legnagyobb kapacitású edény kapacitása kerüljön.
Minta:
Magyarázat: az ábrán a \(\displaystyle H\) csúcsot törölve az edény kapacitása 17.
Korlátok: \(\displaystyle 1\le N \le 100\,000\), \(\displaystyle -10^8\le x,y \le 10^8\). Időkorlát: 1 mp.
Értékelés: A pontok 40%-a kapható, ha a program helyes kimenetet ad az \(\displaystyle {N\le 100}\) esetekben.
Beküldendő egy s169.zip tömörített állományban a megfelelően dokumentált és kommentezett forrásprogram, amely tartalmazza a megoldás lépéseit, valamint megadja, hogy a program melyik fejlesztői környezetben futtatható. A dokumentáció tartalmazza a megoldás elméleti hátterét, az esetleg felhasznált forrásokat. Ne tartalmazzon kódrészleteket, azok magyarázata kódkommentek formájában a forrásprogramban szerepeljen.
(10 pont)
Figyelem!
Az informatika feladatok megoldásait ne e-mailben küldd be! A megoldásokat az Elektronikus munkafüzetben töltheted fel.