Középiskolai Matematikai és Fizikai Lapok
Informatika rovattal
Kiadja a MATFUND Alapítvány
Már regisztráltál?
Új vendég vagy?

A KöMaL 2025. januári 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ű feladatok

A beküldési határidő: 2025. február 17.. 24:00 (UTC+01:00).


I. 647. Egy játéksorozatban mindig feljegyezték a győztes játékosok azonosítóit. Utólag meg szeretnénk vizsgálni, hogy mely játékosok hány játékon keresztül domináltak.

Készítsünk programot i647 néven, amely a győztesek \(\displaystyle N\) (\(\displaystyle 1\leq N\leq 1000\)) játéksorozatában meghatározza azt a leghosszabb folyamatos részt, amelyen belül legfeljebb csak három különböző játékos van.

A program standard bemenetének első sorában a befejezett játékok \(\displaystyle N\) száma található. A következő sorban az \(\displaystyle N\) játék győzteseinek azonosítói szerepelnek egy-egy szóközzel elválasztva.

A programmal a standard kimenetre írjuk ki soronként a leghosszabb, legfeljebb három győztes azonosítóját tartalmazó rész hosszát, majd ennek a három játékosnak az azonosítóját.

Beküldendő egy tömörített i647.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. 648. \(\displaystyle 1\)-től kezdve \(\displaystyle N\)-ig egyesével felírjuk a számokat egymás mellé, majd több lépésben kihúzunk közülük néhány egymást követő számból álló szakaszt. A kihúzott szakaszok nem fedik egymást.

Készítsünk programot i648 néven, amely megadja, hogy hányadik kihúzás után volt a legtöbb összefüggő, nem kihúzott számokból álló szakasz, és ez hány darab volt.

A program standard bemenetének első sorában a sorozat legnagyobb értéke, \(\displaystyle N\) (\(\displaystyle 1\leq N\leq 1\,000\,000\)) és a húzások \(\displaystyle M\) (\(\displaystyle 1\leq M\leq 1000\)) száma található. A következő \(\displaystyle M\) sorban a kihúzott részletek első és utolsó számai (\(\displaystyle 1\leq E_i\leq U_i\leq N\)) szerepelnek egy-egy szóközzel elválasztva.

A programmal a standard kimenetre írjuk ki, hogy hányadik kihúzás után volt a legtöbb szakasz (több megoldás esetén a legkisebb sorszámú), és ekkor hány szakasz volt.

Példa:

Magyarázat (pirossal a kihúzások):

Beküldendő egy tömörített i648.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. 649. A lapunk októberi számában megjelent I. 637. feladatban a Token Ring hálózattal foglalkoztunk. A most következő feladatban a sín topológiájú, Ethernet típusú hálózatok modellezése lesz a cél.

Ebben a hálózatban a számítógépek egy vonal mentén sorban egymás után kapcsolódnak az adatokat átvivő közeghez. A számítógépek folyamatosan figyelik a közös vonalat, és érzékelik, ha azon adat érkezik, illetve érzékelik, hogy a vonalon nincs adat. Egy gép csak akkor kezd adatot küldeni a vonalon, ha azon más adat nem érkezik. Az adat tartalmazza a feladó és a célszámítógép címét. Az adat feldolgozását természetesen csak a címzett gép végzi el, a többiek eldobják a nem nekik szólót. Tekintsük úgy, hogy a vonalon az egyik gép által küldött adat 1 időegység alatt jut el minden másik géphez.

Az adatküldés meghiúsul, ha a közös vonalon ugyanabban az időpontban több számítógép is küld adatot. Ekkor mindegyik gép érzékeli, hogy az adat átvitele nem történhetett meg hibamentesen. Az adott időpontban éppen adatokat küldő gépek egy véletlen időegységig várakoznak, mielőtt újra megpróbálnák elküldeni az adatot. A várakozás véletlen idejét az \(\displaystyle [1;N]\) intervallumból választják, ahol \(\displaystyle N\) a hálózatban lévő gépek száma. Ha a várakozási idő letelt, akkor a következő olyan időpontban kezdik az adatküldést, amikor a vonal szabad, tehát más nem küld adatot.

A szimuláció során minden gép, amely éppen nem kíván adatot küldeni, egy véletlenszámtól függően eldönti, hogy a következő időegységtől kezdve küld-e adatot, vagy sem. Az adatküldésre való hajlandóságot egy \(\displaystyle H\) véletlenszámmal adjuk meg. Ha egy gép egyszer úgy döntött, hogy küldeni szeretne, akkor egészen addig ebben az állapotában marad, amíg az adat elküldése sikeresen, ütközés érzékelése nélkül meg nem történik. A program standard bemenetének egyetlen sorában a gépek \(\displaystyle N\) száma (\(\displaystyle 2\leq N\leq 255\)), a gépek adatküldését jellemző \(\displaystyle H\) valószínűség (\(\displaystyle 0\leq H<1\)) valós szám, valamint a szimuláció teljes idejét időegységben megadó \(\displaystyle T\) egész érték (\(\displaystyle 1000\leq T<100\,000\)) található egy-egy szóközzel elválasztva.

A program a standard kimenetre egy egész és egy valós számot írjon szóközzel elválasztva: mennyi adatot sikerült a szimuláció során átjuttatni a hálózaton, illetve átlagosan mennyi idő telt el egy-egy adat esetén a küldési hajlandóságtól a sikeres adatküldésig.

Példák:

Beküldendő egy tömörített i649.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. 650.youtube.com oldal népszerűsége és látogatottsága más közösségimédia-felületek mellett ma is óriási. A https://www.kaggle.com/datasets/rashminslnk/youtube-subscribers-data-2024 oldalon elérhető az első 50 legtöbb feliratkozóval rendelkező Youtube-csatorna néhány adata. Ebben a feladatban az adatok elemzését kell elvégezni táblázatkezelő alkalmazás segítségével.

A feladatok megoldásához először érdemes letölteni a fenti honlapon elérhető .csv állományt, majd abban egyszerű szövegszerkesztővel a vesszőket pontosvesszőre, a pontokat vesszőre cserélni. Az első lépéssel a cellák határolójelét, a második lépéssel a tizedesvesszőt tudjuk a magyar nyelvi beállításokkal rendelkező táblázatkezelőhöz feldolgozhatóvá igazítani.

Nyissuk meg az előbb átalakított állományt táblázatkezelő alkalmazással, oldjuk meg az alábbi feladatokat, és mentsük munkánkat youtube néven a program alapértelmezett formátumában. A megoldás során – ahol csak lehetséges – függvényt és hivatkozást használjunk, hogy a kapott megoldással pl. a következő évi adatokat is kis változtatással feldolgozhassuk.

1. Az adatsorozatban néhány helyen a táblázatkezelőben hibásan megjelenő karakterek vannak. Töröljük a hibásan megjelenő szavakat és értelmezhetetlen jeleket.

2. Válasszuk el vesszővel és szóközzel azokban a cellákban az adatokat, ahol több érték is szerepel, például az országnevek, az elsődleges nyelv, vagy a kategória esetében.

3. Cseréljük a United States szöveget az USA szövegre az országnevekben.

4. Egészítsük ki az adatokat úgy, hogy tartalmazzák az országok mellett a földrészt is – földrajzi ismereteinkre támaszkodva. Ahol több földrészről szerepel ország, ott több földrészt megadva.

5. Formázzuk a táblázatot a minta szerint, állítsuk be az oszlopok szélességét, a cellák igazítását, szegélyét, alakítsuk ki az első sorban a fejlécet.

6. Készítsünk statisztikai elemzést a forrásadatokról a következő minta alapján egy másik munkalapon országok és földrészek szerint.

a. Figyeljünk arra, hogy vannak több országhoz, és így több földrészhez is tartozó csatornák. Ezek esetében a feliratkozók számát egyenlően osszuk el a két ország és földrész között. Amennyiben szükséges, úgy alkalmazzunk segédtáblázatokat. Kihasználhatjuk, hogy legföljebb két ország vagy két földrész között kell az adatokat megosztani.

b. Az országok 2024. évi népességadatait például a https://www.worldometers.info/world-population/population-by-country/ oldalról tudjuk beszerezni.

c. Készítsük el az adatok alapján a mintán látható diagramokat, és formázzuk őket a mintának megfelelően.

Beküldendő egy tömörített i650.zip állományban a feladat megoldását tartalmazó táblázatkezelő munkafüzet és egy rövid dokumentáció, amely megadja az alkalmazott táblázatkezelő nevét és verziószámát.

(10 pont)


Figyelem!

Az informatika feladatok megoldásait ne e-mailben küldd be! A megoldásokat az Elektronikus munkafüzetben töltheted fel.