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 2021. szeptemberi 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ő: 2021. október 15.. 24:00 (UTC+01:00).


I. 541. Andi és Bandi egy \(\displaystyle 2N\) (\(\displaystyle 1\le N\le 100\)) mezőből álló szalagon játszanak. A szalag mezői 1-től \(\displaystyle 2N\)-ig sorszámozottak, a Start pozíció az 1-es mező előtt van. Kezdetben mindkettőjük bábuja a Start helyen áll. Andi és Bandi felváltva dobnak egy szabályos dobókockával és lépnek. A játék elején megállapodnak egy \(\displaystyle k\) (\(\displaystyle 1\le k\le 100\)) egész számban, ami a játék során mindkettőjük lépéseit befolyásolja.

Andi és Bandi felváltva lépnek egyet-egyet. Andi dob, előre megy a dobás számának megfelelő lépést, és ha most \(\displaystyle k\)-val osztható sorszámú mezőn áll, akkor automatikusan a következő \(\displaystyle k\)-val osztható mezőre ugrik. Ezzel befejezte a lépését, átadja a kockát Bandinak. Bandi egészen addig dob, amíg a dobott szám osztója \(\displaystyle k\)-nak vagy osztható \(\displaystyle k\)-val. Minden dobása után a dobott számnak megfelelő számot megy előre. Ha olyan számot dob, ami nem osztható \(\displaystyle k\)-val és nem is osztója \(\displaystyle k\)-nak, akkor a dobott számnak megfelelő mezőt előre megy és ezzel lépése befejeződött. Átadja a kockát Andinak, ő jön. A játék addig tart, amíg az egyik játékos túl nem lép az \(\displaystyle N\)-edik mezőn.

Andi és Bandi sokat játsszák a játékot, de így sem tudják megmondani, hogy milyen \(\displaystyle N\) és \(\displaystyle k\) mellett melyik játékosnak van nagyobb esélye nyerni. Készítsünk programot, ami segít ebben, és megadja, hogy ismert \(\displaystyle N\) és \(\displaystyle k\) esetén melyik játékosnak átlagosan hány lépésből áll túlmenni az \(\displaystyle N\)-edik mezőn. A program \(\displaystyle 10\,000\) játékmenet alapján számítsa ki az átlagos lépésszámot.

A program a standard bemenet első sorából olvassa ki \(\displaystyle N\) és \(\displaystyle k\) értékét, majd a kimenet egyetlen sorába adja meg egészre kerekítve Andi és Bandi átlagos lépéseinek számát.

Minta bemenetMinta kimenet
100 523 24

Beküldendő egy tömörített i541.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. 542. Magyarország valamikor a közeljövőben befejezi a téli-nyári óraigazítást. Több javaslat van, például az, hogy a jelenlegi \(\displaystyle \text{GMT}+1\) időzónáról a \(\displaystyle \text{GMT}+2\) időzónába térjünk át, azaz óráinkat egy órával állítsuk előbbre. Egyelőre nincs eldöntve a kérdés.

Rendelkezésünkre áll 2022 minden napjára a napfelkelte és a napnyugta időpontja az óraátállítás figyelembevételével a nap_forras.txt tabulátorral tagolt, UTF-8 kódolású állományban.

Készítsük el az adatok elemzését és ábrázolását táblázatkezelővel. A megadott forrásadatokon kívül mást nem használhatunk fel, legfeljebb az eredményeinket ellenőrizhetjük. Megoldásunkat úgy készítsük el, hogy ha más év adatait helyezzük el a táblázatba, a számítások frissüljenek, helyes eredményt adjanak. Segédszámításokat tetszőleges oszlopokban, cellákban végezhetünk, melyek értelmezését feliratokkal segítsük. Megoldási módszerünket mutassuk meg, tehát ezeket a cellákat ne rejtsük el. Eredményeinket tetszőleges cellákban, jól láthatóan jelenítsük meg.

1. Töltsük be a nap_forras.txt szövegfájlt a táblázatkezelőbe az A1-es cellától kezdődően. Munkánkat i542 néven mentsük el a táblázatkezelő alapértelmezett formátumában.

2. Adjuk meg a tervezett nyári és a téli időszámítás kezdetét 2022-ben.

3. Határozzuk meg a rendelkezésre álló adatokból a nyári és a téli napforduló dátumát.

4. Készítsük el a minta és a leírás szerinti diagramot:
\(\displaystyle a)\) Az ábrázolást készítsük elő a szükséges adatok kiszámításával.
\(\displaystyle b)\) A diagram típusát válasszuk ki célszerűen.
\(\displaystyle c)\) A sárga terület a nappali, a fekete az éjszakát jelenti.
\(\displaystyle d)\) A piros vonal a \(\displaystyle \text{GMT}+1\) idő szerinti delet jeleníti meg naponta.
\(\displaystyle e)\) A tengelyek skálája és felirata legyen a minta szerinti, formázása is annak megfelelő.

Beküldendő egy tömörített i541.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ó.

Letölthető állomány: napforras.txt

(10 pont)


I. 543. (É). Az Abel-díj a Nobel-díjjal egyenértékű tudományos elismerés a kiemelkedő eredményt elérő matematikusok számára. A díjat 2003 óta ítélik oda minden évben, és a Nobel-díjhoz hasonló ünnepélyes keretek között adja át a norvég királyi család. A névadó Niels Henrik Abel norvég matematikus, aki az algebra, azon belül a csoportelmélet területén alkotott maradandót. Ezidáig három magyar matematikust is kitüntettek, az idei díjat megosztva Lovász László kapta.

Az Abel-díj magyar nyelvű Wikipédia-oldalán (https://hu.wikipedia.org/wiki/Abel-díj) többek között megtalálható egy táblázat, amely összefoglalja az eddigi díjazottak legfontosabb adatait. A táblázatban a származás, és ha attól eltérő, akkor a jelenlegi munkahely országa, egy vagy több munkahely, illetve a díj odaítélésében szereplő indoklás legfontosabb néhány mondata szerepel.

A feladatunk a táblázat adatainak feldolgozása lesz először táblázatkezelő alkalmazás, majd számítógépes program segítségével. Oldjuk meg az alábbi feladatokat és válaszoljunk a feltett kérdésekre. A feladatok megoldásakor mindig írjuk ki a feladat sorszámát, folytassunk párbeszédet a felhasználóval, például írjuk ki, hogy milyen adatot kérünk be és milyen eredményt írunk ki.

1. Másoljuk a Wikipédia-oldalon található táblázatot egy táblázatkezelő munkafüzet munkalapjára. Mentsük a munkafüzetet abeldij néven a táblázatkezelő alapértelmezett formátumában.
2. Mentsük a munkalap tartalmát CSV állományba abeldij.csv néven, a cellák közötti határokat a pontosvessző jelölje (nem fordul elő pontosvessző a táblázatban).
3. Tanulmányozzuk a CSV állományt. Töröljük az első sorból az esetlegesen ott található fejlécet. Egyszerű szövegszerkesztővel állítsuk be az állomány karakterkódolását úgy, hogy azt ékezethelyesen be tudjuk olvasni a későbbi feladatokban alkalmazott programozási nyelven. Amennyiben a programmal nem sikerül ékezethelyesen beolvasni az állományt, akkor cseréljük az ékezetes karaktereket ékezetmentes magyar megfelelőjükre.
4. Készítsünk programot abeldij néven, amely megfelelő adatszerkezetbe beolvassa a CSV állományt és eltárolja a programban további feldolgozás céljából. Az adatok feldolgozásánál figyeljünk arra, hogy az eredeti táblázatban összevont cellák is vannak, illetve van olyan cella, ahol több érték is szerepel.
5. Kérjünk be egy évszámot a felhasználótól, és adjuk meg, hogy ki, vagy kik voltak díjazottak az adott évben, és mely országokból származtak.
6. Kérjük be egy ország nevét, és adjuk meg azon díjazottak nevét és munkahelyeit, akik az adott országból származnak vagy az adott országban dolgoznak. Minden díjazottnak egy vagy két munkahelye szerepel a táblázatban.
7. Adjuk meg, kik azok a matematikusok, akik az algebra területén értek el kiemelkedő tevékenységet, tehát a díj indoklásában szerepel az algebra szó (esetleg ragozott alakban).

Minta:

5. feladat
Kérem adjon meg egy évszámot:2015
Név: John Forbes Nash született: Amerikai Egyesült Államok
Név: Louis Nirenberg született: Kanada
6. feladat
Kérem adja meg egy ország nevét:Magyarország
Díjazott: Lax Péter
Munkahely: Courant Matematikatudományi Intézet
Díjazott: Szemerédi Endre
Munkahely: Rényi Alfréd Matematikai Kutatóintézet, Rutgers Egyetem
Díjazott: Lovász László
Munkahely: Rényi Alfréd Matematikai Kutatóintézet, Eötvös Loránd\\ \indent Tudományegyetem
7. feladat
A következő matematikusok indoklásában szerepel az~algebra szó:
Jean-Pierre Serre, Jacques Tits, John Milnor, Pierre Deligne.

Beküldendő egy tömörített i543.zip állományban a táblázatkezelő munkafüzet, a CSV állomány és program forráskódja, valamint egy rövid dokumentáció, amely megadja, hogy a forrásállomány melyik fejlesztői környezetben fordítható.

(10 pont)


I/S-jelű feladatok

A beküldési határidő: 2021. október 15.. 24:00 (UTC+01:00).


I/S. 55. Vége a nyári szünetnek, a diákok már az iskola falain belül mesélik egymásnak, hogy hol voltak üdülni. Mindegyikük elmondta, mikor milyen várost látogatott meg.

Adjuk meg, hogy hány olyan páros van a diákok közt, akik a nyár során egyszer sem üdültek egyidőben egyazon városban.

Bemenet: az első sor egy \(\displaystyle N\) számot tartalmaz, az üdülések számát. A következő \(\displaystyle N\) sor mindegyike egy üdülést ír le: a sorban az üdülő utóneve és vezetékneve szerepel, aztán a meglátogatott város, végül, hogy az év hányadik napjától hányadik napjáig tartózkodott az adott városban. Például: Kis Ferenc Budapest 210 220 jelentése, hogy Kis Ferenc Budapesten üdült az év 210-edik napjától a 220-adikig. Egy emberhez több üdülés is tartozhat, de minden diákhoz tartozik legalább egy üdülés. Mindenkinek pontosan egy utóneve van.

A kimenet egyetlen sorában adjuk meg, hogy hány olyan diákpáros van, akik nem üdültek egyik napig sem ugyanazon a helyen.

Minta:

Magyarázat: Nagy Fruzsina nem találkozott Kis Ferenccel és Tamas Tamassal sem.

Korlátok: \(\displaystyle 2\le N\le 100\), a bemenet szavai csak az angol ABC betűit tartalmazzák, legföljebb 10 karakter hosszúak lehetnek és mindenki egy utónévvel szerepel. Ha egy üdülés az \(\displaystyle x\)-ediktől az \(\displaystyle y\)-adik napig tart, akkor \(\displaystyle 1\le x\le y\le 365\). Egy diák egy napon legfeljebb egy helyen üdülhetett. Időkorlát: 0,2 mp.

Értékelés: a pontok 50%-a kapható, ha minden diák csak egy helyen volt üdülni.

Beküldendő egy is55.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ó.

(10 pont)


S-jelű feladatok

A beküldési határidő: 2021. október 15.. 24:00 (UTC+01:00).


S. 154. A diákoknak a tanév első matematikaóráján bemelegítésként egy számkereső rejtvényt kell megoldaniuk. Kapnak egy \(\displaystyle N\times M\)-es táblázatot, melyben pozitív egész számok szerepelnek. Egyik sem nagyobb, mint \(\displaystyle K\). A feladat az, hogy segítségeket felhasználva kitalálják, hogy a táblázat melyik mezőjére gondolt a rejtvény készítője. Az első három segítség így hangzik:

1. A keresett szám két különböző prím szorzata.
2. A keresett szám pontosan egy oldalszomszédjánál nagyobb.
3. A keresett szám oszlopában nem szerepel kettőhatvány (\(\displaystyle 1,2,4,8\ldots\)).

Adjuk meg, hány olyan mező van a táblázatban, melyre az állítások mindegyike igaz, vagyis az első három segítség alapján a feladvány megfejtése is lehetne.

Bemenet: az első sor az \(\displaystyle N\), \(\displaystyle M\) és \(\displaystyle K\) számokat tartalmazza. A következő \(\displaystyle N\) sor mindegyike \(\displaystyle M\) számot tartalmaz, rendre a táblázat egy-egy mezőjében szereplő számot.

A kimenet egyetlen sorában adjuk meg, hány olyan mező van a táblázatban, melyre a három állítás mindegyike igaz.

Minta:

Bemenet (a / jel sortörést jelent)Kimenet
3 3 20 / 6 5 8 / 9 15 5 / 3 11 101

Magyarázat: A 6, 10 és a 15 is megfelel az első feltételnek. A 15 minden oldalszomszédjánál nagyobb, a 10-es oszlopában pedig szerepel egy 8-as, így csak a 6-os lehet a megfejtés.

Korlátok: \(\displaystyle 2\le N,M\le 100\), \(\displaystyle 10\le K\le 10^6\). Időkorlát: 0,5 mp.

Értékelés: a pontok 50%-a kapható, ha \(\displaystyle K\le 100\).

Beküldendő egy s154.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ó.

(10 pont)


Figyelem!

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