A KöMaL 2015. decemberi 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ő 2016. január 11-én LEJÁRT. |
I. 388. Ma már mindenki számára megszokott, hogy a térképek északi tájolásúak, de ez alig néhány száz éve van így. Korábban az adott kultúrkörnek megfelelő irányt használtak. Az egyiptomiak a Nílus folyásirányát, az amerikai telepesek a vándorlás irányát (nyugat), az európaiak pedig északot.
Ebben a feladatban csak olyan térképeket használunk, amelyek a négy fő égtáj valamelyike szerint tájoltak. A feladatban szereplő térképek más és más céllal készültek, más és más nevezetes pontok szerepelnek rajtuk. Ezen pontok koordinátáinak ismeretében kell megállapítanunk az egyes térképek tájolását. A térképeken az origó más és más pontban lehet.
A bemeneti fájl első sora tartalmazza a térképek (\(\displaystyle T\le 50\)) számát és attól egy szóközzel elválasztva az első térkép tájolását (E, K, D, N). A következő \(\displaystyle T\) sor mindegyikében az első szám az adott térképen szereplő pontok (\(\displaystyle N\)) számát adja meg. Ezt követően \(\displaystyle N\) számhármas szerepel, amelyből az első szám a pont sorszáma, utána pedig annak \(\displaystyle X\) és \(\displaystyle Y\) koordinátája az adott térképen. A soron belüli határoló jel a szóköz. A pontok száma összességében legfeljebb 50. A koordináták értéke a \(\displaystyle [-1000; 1000]\) intervallumban van az adott tájolású térképen, de a különböző térképek egyesítésével az intervallum megnőhet.
A kimeneti fájl pontosan \(\displaystyle N\) sort tartalmazzon, amelyben soronként egy karakter, a térkép tájolása álljon. Ha a tájolás nem állapítható meg, akkor a sorban az X karakter szerepeljen.
Beküldendő egy tömörített i388.zip állományban a program forráskódja és rövid dokumentációja, amely tartalmazza a megoldás vázlatos leírását, és megadja, hogy a forrásállomány melyik fejlesztői környezetben fordítható.
(10 pont)
I. 389. Az atlétika női versenyei közül a legösszetettebb a hétpróba. Ezzel foglalkozó adatbázis-kezelési feladat volt az I. 338-as. Egy verseny eredményeinek kiértékelését most táblázatkezelővel végezzük el.
A hétpróba hét versenyszáma: 100 m gátfutás, 200 m és 800 m futás, magasugrás, távolugrás, súlylökés és gerelyhajítás. A verseny pontozásos rendszerű. A versenyszámokat nemzetközi ponttáblázat alapján értékelik, amelyben minden elért eredménynek megvan a maga pontszáma.
A versenyszám pontszámának kiszámítására a következő képletet használják a versenyző \(\displaystyle X\) eredményét figyelembe véve:
\(\displaystyle \text{pont}=\big[A\cdot {|X-B|}^C\big] \)
(ahol \(\displaystyle [~]\) a kifejezés egészrészét, \(\displaystyle |~|\) az abszolút értékét jelenti).
Az \(\displaystyle A\), \(\displaystyle B\) és \(\displaystyle C\) konstansok a Nemzetközi Atlétikai Szövetség által közölt, versenyszámonként eltérő konstansok.
A 2012. évi nyári olimpiai játékok hétpróba verseny adatait és az előző táblázatban lévő konstansokat rögzítettük a hetforras.txt tabulátorral tagolt, UTF-8 kódolású állományban.
1. Töltsük be a hetforras.txt szövegfájlt a táblázatkezelőbe az A1-es cellától kezdődően. (Az A1:I4 tartományban a fenti táblázat transzponált változata található.) A munkalap neve legyen eredmények. Munkánkat hetproba néven mentsük el a táblázatkezelő alapértelmezett formátumában.
2. Hozzunk létre új munkalapot pontszámok néven, és a minta szerinti fejlécet alakítsuk ki az első sorban.
3. Ezen a munkalapon az A2:B40 cellákban - az eredmények munkalap A7:B45 celláira hivatkozva - jelenítsük meg a 39 versenyző nevét és nemzetiségét.
4. A C2:I40 cellákban, a fent megadott számítási módszer szerint, egyetlen képlettel és annak másolásával határozzuk meg a versenyzők versenyszámonként elért pontszámát. Ha a versenyeredmény cella üres, akkor a kifejezés szerint az erre hivatkozó pontszám cellája is legyen üres.
5. A J2:J40 cellákban adjuk meg a versenyzők versenyszámonként elért pontszámainak összegét, ha mind a hét versenyszámból pontszámmal rendelkeznek, különben a ,,Nincs'' felirat jelenjen meg.
A következő feladatokat az eredmények munkalapon végezzük el.
6. Az M2 cellában határozzuk meg függvény segítségével a versenyt teljesítők számát. A versenyt az teljesítette, aki mind a hét versenyszámban pontokat szerzett.
7. A K8:N17 cellákban képlettel adjuk meg az első tíz helyezett versenyző pontszámát, nevét és nemzetiségének rövidítését. A hétpróba győztese a legtöbb pontot elérő versenyző (feltételezhetjük, hogy azonos pontszámokat nem értek el a versenyzők).
8. A C50:I50 cellákban határozzuk meg a versenyszámonkénti győztesek nevét. Azonos eredmények esetén elegendő egyikőjük nevét megadnunk.
9. A hétpróba versenyen nemzetenként többen is részt vehetnek. A K20:L20 cella alatt soroljuk fel a versenyzők száma szerint csökkenő sorrendben, hogy az egyes nemzetekből hány induló volt. A megoldásban a K oszlopban nem szükséges a képletek használata, megfelelő a nemzetek hárombetűs rövidítésének kigyűjtése is.
10. Az eredmények munkalap celláit formázzuk a minta szerint.
Beküldendő egy tömörített i389.zip állományban a munkafüzet (hetproba.xlsx, hetproba.odt), valamint egy rövid dokumentáció, amelyből kiderül az alkalmazott táblázatkezelő neve és verziószáma.
Letölthető fájl: hetforras.txt
(10 pont)
I. 390. A mobilappok egyre népszerűbbek, sok játék és hasznos program megtalálható közöttük. A három legelterjedtebb mobil operációs rendszer mindegyikéhez elérhetők ingyenes fejlesztőeszközök, amelyek segítségével mi is készíthetünk mobilalkalmazást. Írjunk mobilappot, amellyel egy ismert logikai játékot lehet játszani.
A játékban \(\displaystyle N\times N\) négyzetlap szerepel négyzetes elrendezésben. A lapok két oldala különböző színű. A játékos bármely lap megérintésével megfordíthatja a lappal oldalszomszédos lapokat, így azok ellentétes színűre váltanak (a megérintett lap nem). A játék célja, hogy minden lap azonos színű felével legyen látható. A játék kezdetekor lehessen megadni \(\displaystyle N\) értékét (\(\displaystyle 3\le N\le 12\)). Az alkalmazás ezután hozzon létre egy olyan véletlenszerű lapszínezést, amelyből az egyszínű állapot elérhető.
Beküldendő egy tömörített (i390.zip) állományban az Android, iOS vagy Windows Phone alkalmazás futtatható változata és teljes forrása, valamint a fejlesztéshez fölhasznált fejlesztői rendszer elektronikus elérhetősége és a fejlesztés lépéseinek vázlatos leírása.
(10 pont)
I/S-jelű feladatokA beküldési határidő 2016. január 11-én LEJÁRT. |
I/S. 4. Egységnyi magas, különböző szélességű és hosszúságú \(\displaystyle K\) (\(\displaystyle 0\le K\le 10\;000\)) darab doboz elszórtan helyezkedik el egy \(\displaystyle N\times M\) (\(\displaystyle 10\le N, M\le 100\;000\)) téglalap alakú területen. A dobozok oldalai párhuzamosak a téglalap oldalaival, nem érintkeznek egymással és nem láthatjuk őket felülről, mert le vannak takarva.
Készítsünk programot is4 néven, amely megadja, hogy hány olyan doboz van, amit biztos, hogy nem látunk meg, ha minden oldalról benézhetünk. Egy doboz láthatóságához elegendő valamely oldalának részletét megfigyelnünk. Benézni csak a téglalap oldalaira merőlegesen, egyenes irányban tudunk. A mintán a satírozott dobozok láthatóak és a szürkék nem.
A program olvassa be a standard input első sorából \(\displaystyle N\)-et, \(\displaystyle M\)-et és \(\displaystyle K\)-t, majd a következő \(\displaystyle K\) sorból a dobozok bal felső, illetve jobb alsó sarkainak \(\displaystyle X\) és \(\displaystyle Y\) koordinátáit (pozitív egész számok). A program írja a standard output első és egyetlen sorába a nem látható dobozok számát. Futási időkorlát 1 mp.
Beküldendő egy tömörített is4.zip állományban a program forráskódja és rövid dokumentációja, amely tartalmazza a megoldás vázlatos leírását, és megadja, hogy a forrásállomány melyik fejlesztői környezetben fordítható.
(10 pont)
S-jelű feladatokA beküldési határidő 2016. január 11-én LEJÁRT. |
S. 103. Egy országban \(\displaystyle N\) város található. Megbíztak minket, hogy tervezzünk utakat a városok közt úgy, hogy bármelyik városból bármelyikbe egyféleképp lehessen eljutni. Mivel egy út megépítésének költsége egyenesen arányos a hosszával, így szeretnénk minimalizálni a megépülő utak összes hosszát. Az országban nagy hegyek is vannak, ezért nem építhetünk utat bármely két város között, hanem csak a bemenő adatokban megadott \(\displaystyle M\) db utat lehet megépíteni. Az útépítést vállaló cég technikai okok miatt nem tud egy adott úthosszból háromnál többet megépíteni (max 3 egyformát ajánl), ezért az úthálózatot úgy kell kialakítani, hogy bármely hosszúságú útból legföljebb három szerepeljen benne. Kérdés, hogy hányféleképp tudjuk megépíteni a lehető legkisebb összhosszúságú úthálózatot.
A program olvassa be a standard input első sorából \(\displaystyle N\)-et és \(\displaystyle M\)-et (\(\displaystyle 1\le N \le 50\;000\), \(\displaystyle 1\le M\le 200\;000\)), majd a következő \(\displaystyle M\) sorból az \(\displaystyle a_i\), \(\displaystyle b_i\), \(\displaystyle c_i\) szóközzel elválasztott egészeket, melyek jelentése: az \(\displaystyle a_i\) városból a \(\displaystyle b_i\) városba építhetünk \(\displaystyle c_i\) (\(\displaystyle 1\le c_i\le 1\;000\;000\)) hosszú kétirányú utat. A program írja a standard output első és egyetlen sorába a legrövidebb összhosszúságot, amelyből megépíthető a hálózat, illetve a lehetőségek számának \(\displaystyle 1\;000\;000\;007\)-tel vett osztási maradékát.
Magyarázat: Ha az 1 hosszúságú éleket, és bármelyik 2 hosszúságú élet választjuk, akkor kapjuk a legrövidebbet.
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 az 1 mp futásidőkorláton belül.
Beküldendő egy tömörített s103.zip állományban a program forráskódja, valamint a program rövid dokumentációja, amely a fentieken túl megadja, hogy a forrás mely 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.