A KöMaL 2017. 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ő 2017. április 10-én LEJÁRT. |
I. 424. (É) Az üzemanyagok (benzin és gázolaj) ára hetenként akár többször is változik. A feladatunk a 2011 és 2014 közötti árak elemzése. Az adatok az uzemanyag.txt állományban állnak rendelkezésünkre (forrás: http://www.vasarlocsapat.hu/_hirek/_uzemanyag/uzemanyag-arak.shtml?t=all). Minden sorban egy árváltoztatás adatai szerepelnek, az adott naptól érvényes benzin és gázolaj ára forintban. Egy soron belül egymástól szóközökkel elválasztva szerepel az év, a hónap, a nap és az aznaptól érvényes benzin, majd gázolaj ára. Csak azok a napok szerepelnek a fájlban, ahol valamelyik ár változott.
Például 2014. december 31-én a benzin ára 336 Ft volt (a korábbiakhoz képest nem változott), a gázolajé azonban 360 Ft-ra emelkedett a korábbi 359 Ft-ról. A feladat megoldása során használjuk fel, hogy az időszak első és utolsó napjának adatai külön sorban szerepelnek.
Készítsünk programot i424 néven a következő feladatok megoldására. A program futása során a képernyőre való kiíráskor utaljunk a feladat sorszámára.
1. Olvassuk be és tároljuk el az uzemanyag.txt állomány adatait.
2. Hány adatsort tartalmaz a fájl? Írassuk ki a képernyőre.
3. Kérjünk be a billentyűzetről egy 2011.01.01 és 2014.12.31. közé eső dátumot, és írassuk ki, hogy aznap mennyi volt a benzin, illetve a gázolaj ára. (A dátum beolvasásának módja nincs megkötve, azt akár három egész számként (év, hónap, nap) is megtehetjük. A beolvasott dátum helyességét, érvényességét sem kell ellenőriznünk.)
4. Hány alkalommal nőtt, illetve hány alkalommal csökkent a teljes megfigyelt időszakban a benzin ára? Írassuk ki a választ a képernyőre.
5. Mennyi volt a teljes megfigyelt időszakban a benzin legmagasabb ára, és ez mely napon következett be? Írassuk ki a választ a képernyőre. (Feltételezhetjük, hogy egy ilyen nap volt a jelzett időszakban.)
6. Az előző feladatban meghatározott maximumot követően a benzin ára egy ideig csökkent vagy nem változott, majd ismét növekedni kezdett. Adjuk meg, hogy melyik napon kezdett ismét növekedni a benzin ára, és a maximumot követően addig hányszor csökkentették azt.
7. Átlagosan hány forintért lehetett a teljes vizsgált időszakra vonatkoztatva gázolajat vásárolni? Az eredmény két tizedesjegy pontossággal jelenjen meg a képernyőn. (Az aznapi árral számolva minden napot vegyünk figyelembe a megfigyelt időszakban.)
8. Adjuk meg a teljes vizsgált időszakot tekintve azoknak az időszakoknak a kezdő és befejező dátumát, amikor 400 és 420 Ft között lehetett benzint is és gázolajat is vásárolni.
9. Az üzemanyagok ára a vizsgált időszak elején illetve végén is csökkent. A kettő között azonban többször is heteken át folyamatosan nőtt. Melyik napon kezdődött és hány napig tartott az a leghosszabb időszak, amely alatt a benzin ára nőtt vagy nem változott?
Beküldendő egy tömörített i424.zip állományban a program forráskódja és rövid dokumentációja, amely tartalmazza a megoldás rövid leírását, és megadja, hogy a forrásállomány melyik fejlesztői környezetben fordítható.
Letölthető fájl: uzemanyag.txt
(10 pont)
I. 425. Ebben a szimulációs feladatban azt vizsgáljuk, hogy mozgó akadályok között át lehet-e jutni az egyik oldalról a másikra azokkal történő ütközés nélkül.
Egy \(\displaystyle 12\times 12\)-es négyzet alakú terület celláiban B és J karakterek vannak \(\displaystyle p_{\rm b}\) és \(\displaystyle p_{\rm j}\) (\(\displaystyle 0\le p_{\rm b}+p_{\rm j}\le 1\)) valószínűséggel, a többi cella üres. Minden lépésben a B-k eggyel balra, a J-k eggyel jobbra lépnek. A terület szélén kilépés helyett a B-k J-vé és a J-k B-vé alakulnak át álló helyzetben. A terület egyik oszlopa fölé, induló pozícióként egy L karaktert helyezünk el, amely minden lépésben lefelé, a következő cellába lép.
A B-k és a J-k azonos cellába léphetnek, egymáson áthaladhatnak. Szimulációnk során azt vizsgáljuk, hogy az L átjuthat-e a területen úgy, hogy csak üres cellába lép.
Készítsük el táblázatkezelő program segítségével a szimulációt a lépések bemutatása nélkül i425 néven.
A P:R oszlop megfelelő celláiban készítsük el a feliratokat a mintának megfelelő tartalommal. A Q2-es és Q3-as cellába gépeljünk be a szabályoknak megfelelő egy-egy 0 és 1 közötti számot, ami a modellben egy-egy cella feltöltésénél a B és J valószínűségét fogja jelenteni.
A B2:M13 tartomány celláiban másolható függvény segítségével a valószínűségeknek megfelelő karaktereket jelenítsük meg. A B1:M1 tartomány egyik cellájába írjunk egy L karaktert.
A Q4-es cellában a szimulációs tér üres celláinak valószínűségét, az R2:R4 tartomány celláiban a kezdő állapot különböző típusú celláinak arányait számítsuk ki.
Az R6 cellában jelenítsük meg az ,,IGEN'' feliratot, ha L akadálytalanul átjuthat és a ,,NEM'' feliratot különben.
A táblázat szerkezetét, a cellák formázását állítsuk be a minta szerint. Ügyeljünk a megfelelő cellák szélességére, szegélyezésére és az igazításokra. Segédszámításokat végezhetünk, amelyek értelmezését feliratokkal segítsük elő vagy a dokumentációban írjuk le. A megoldásban saját függvény vagy makró nem használható.
Beküldendő egy tömörített i425.zip állományban a megoldást tartalmazó munkafüzet és a megoldás rövid leírását bemutató dokumentáció.
(10 pont)
I. 426. Ha rendelkezünk Google azonosítóval, akkor nem csak levelezni tudunk a Gmail segítségével, hanem sok-sok Google szolgáltatást igénybe tudunk venni. Ilyen többek között a Google Drive, a Dokumentumok, a Táblázatok, a Diák és az Űrlapok. A segítségükkel adatokat tárolhatunk, szövegeket, táblázatokat, prezentációkat és űrlapokat készíthetünk webes felületen, csupán egy böngésző segítségével. A Google Script segítségével pedig a szolgáltatások egyes funkcióit programozhatjuk.
A feladatunk a következő:
1. egy Google Űrlap segítségével gyűjtsük össze a 2017. évi KöMaL Ankétra jelentkezők néhány adatát, valamint kérdezzük meg őket, hogy milyen típusú előadásokat hallgatnának meg szívesen;
2. a beérkező válaszok alapján küldjünk e-mailben minden jelentkezőnek egy rövid összegzést az előadásokról, és hívjuk fel a figyelmét az őt érdeklő előadásokra.
Induljunk ki a következő táblázatban szereplő adatokból:
1. nap | 9:15–10:00 | Matolcsi Máté: Matematika a zeneszerzésben | tudomány és művészet |
1. nap | 10:15–11:00 | Honyek Gyula: Fizikai kísérletek | fizika kísérletek |
1. nap | 11:15–12:00 | Vass László: Kék LED | modern fizika |
1. nap | 14:00–15:00 | Lángi Zsolt: Síkidomok csókszáma | geometria |
1. nap | 15:30–16:30 | Koncz Levente: Nyerő stratégiák az ötöslottón | valószínűségszámítás |
2. nap | 9:15–10:00 | Freud Róbert: Erdős egyik kedvenc problémája: kongruencia-fedőrendszerek | algebra |
2. nap | 10:15–11:00 | Kubatov Antal: Nemcsak a húrnégyszögek csodálatosak | geometria |
2. nap | 11:15–12:00 | Halbritter András: Atomi méretű memóriák | modern fizika |
2. nap | 14:00–15:00 | Kós Géza: A Rubik-kocka matematikája | algebra |
2. nap | 15:30–16:30 | Székely Péter: Hangos matematika, avagy sor nélkül nincs hangsor | tudomány és művészet |
A jelentkezést bonyolító Google Űrlap kérje be a kitöltő nevét, e-mail címét, valamint azt, hogy a fenti táblázat utolsó oszlopában található témakörök közül melyek iránt érdeklődik. Az űrlap által begyűjtött adatok kerüljenek egy Google táblázatba. Ezt a táblázatot egészítsük ki egy olyan – menüből elérhető – saját Google Script programmal, amely az űrlap adatait fölhasználva elektronikus levelet küld minden, a táblázatban szereplő jelentkezőnek. A levél szólítsa nevén a jelentkezőt, valamint tartalmazza az előadások adatait leíró táblázatot, amelyben emeljük ki a jelentkező érdeklődési köréhez tartozó előadások sorait.
Beküldendő egy i426.txt szöveges dokumentum, amely tartalmazza a probléma megoldásának rövid leírását, valamint a megoldást adó Google Űrlap, és az eredményeket tartalmazó Google Táblázat elérhetőségét. A javítás és értékelés végett a táblázat és az űrlap megosztási beállításait úgy adjuk meg, hogy azokat a link birtokában a javító szerkeszthesse.
(10 pont)
I/S-jelű feladatokA beküldési határidő 2017. április 10-én LEJÁRT. |
I/S. 16. Zénó szereti a betűrejtvényeket és mániákusan gyűjti az értelmes és értelmetlen szavakat. Egy-egy táblázat soraiban gyűjti az azonos hosszúságú karaktersorozatokat, amelyek valahol valamilyen rejtvényben már felbukkantak, minden cellába egy-egy betűt írva. A táblázatra igaz, hogy az egy-egy oszlopban levő karakterekből álló szavak különbözőek.
Miki, a barátja meg akarja tréfálni Zénót. A táblázat tetejéről a lehető legtöbb sort akarja törölni úgy, hogy Zénó ne vegye észre, azaz a ,,nincs két azonos oszlop'' szabály igaz maradjon. Segíts Mikinek programot írni, amely meghatározza, hány sort töröljön.
A standard bemenet első sora a táblázat sorainak és oszlopainak a számát \(\displaystyle S\), \(\displaystyle O\) (\(\displaystyle 1 \le S,O \le 1000\)) tartalmazza. A következő \(\displaystyle S\) sor \(\displaystyle O\) darab kisbetűs, az angol ábécé karaktereiből álló szót tartalmaz, Zénó táblázatának szavait, a leírt sorrendben. A táblázatra igaz, hogy nincs benne két azonos oszlop.
A standard kimenet egyetlen sorába írjuk azt a legnagyobb számot, ahány sort Miki törölhet a táblázat elejéről úgy, hogy bármely két oszlop különböző maradjon.
Példák:
Időlimit: 1 mp, memórialimit: 256 MB.
Figyelem! A bemenet mérete nagy, így a főprogram nem futhat egy egész másodpercig.
Pontozás és korlátok: a programhoz mellékelt, a helyes megoldás elvét tömören, de érthetően leíró dokumentáció 1 pontot ér. A programra akkor kapható meg a további 9 pont, ha bármilyen hibátlan bemenetet képes megoldani a fenti korlátoknak megfelelően.
Beküldendő egy tömörített is16.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)
S-jelű feladatokA beküldési határidő 2017. április 10-én LEJÁRT. |
S. 115. A Piripócsi Általános Iskola diákjai egy vetélkedőn vesznek részt. A vetélkedő nagyon sok állomást tartalmaz, minden állomásnak van egy egyedi (pozitív egész) azonosítója. Minden állomáson a szervezők meg tudják mondani, hogy merre van a következő állomás. A diákok összesen legföljebb az állomások számának ötszöröse alkalommal kérdezhetnek rá a következő állomás számára. A gyerekeknél van egy térkép, ami alapján bármely állomásról bármely másik állomásra el tudnak jutni, az állomások távolsága nem fontos (nem is ismerjük). Minden állomáson van egy feladat, amit akkor oldanak meg, amikor először járnak az állomáson. A vetélkedő pályája az 1-es sorszámú állomásról indul, és egy adott \(\displaystyle j\) állomást akkor és csak akkor tartalmaz, ha \(\displaystyle j=1\), vagy van olyan \(\displaystyle i\) állomás a pályán, hogy \(\displaystyle i\) után \(\displaystyle j\) következik. A vetélkedőt akkor teljesítik sikeresen, ha minden, a pályán lévő állomáson megoldották a feladatot, viszont összesen az állomások számának ötszörösénél nem több kérdést tettek fel, illetve nem látogattak meg egyetlen, a pályán kívül lévő állomást sem. Természetesen megjegyezhetnek bizonyos válaszokat (de nem sokat), így nem kell mindig a következő állomásra menniük (lásd a példát).
Bemenet és kimenet: ez egy interaktív feladat. A program az értékelő környezettel a standard bemeneten és kimeneten keresztül kommunikálhat. A kommunikáció úgy zajlik, hogy a program feltesz egy kérdést, amire az értékelő válaszol: írjunk ki egyetlen pozitív egész számot, majd beolvashatjuk az arra az állomásra következő állomás sorszámát. Ha úgy gondoljuk, hogy teljesítettük a vetélkedőt, akkor írjunk ki egyetlen 0-t. Ezután azonnal fejezzük be a program végrehajtását, mást már ne írjunk ki. Fontos, hogy minden kiírás végén legyen sortörés.
Pontozás: 3 pontért a memórialimit 256 MB. A maradék 6 pontért a memórialimit 2 MB.
A memórialimitbe csak a feladathoz kapcsolódó adatok tárolására ténylegesen felhasznált memória számít bele.
Korlátok: A pályán maximum \(\displaystyle 10^7\) állomás van, az azonosítók 1 és \(\displaystyle 10^{18}\) közötti egész számok. Az időlimit 10 mp.
Magyarázat: a pálya \(\displaystyle \mathsf{1} \to \mathsf{2} \to \mathsf{3} \to \mathsf{2} \to \mathsf{3} \to \ldots,\) a megadott kérdések után minden állomáson jártak.
Pontozás és korlátok: a programhoz mellékelt, a helyes megoldás elvét tömören, de érthetően leíró dokumentáció 1 pontot ér. A programra akkor kapható meg a további 9 pont, ha bármilyen hibátlan bemenetet képes megoldani a fenti korlátoknak megfelelően.
Beküldendő egy tömörített s115.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)
Figyelem!
Az informatika feladatok megoldásait ne e-mailben küldd be! A megoldásokat az Elektronikus munkafüzetben töltheted fel.