A KöMaL 2018. májusi 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ő 2018. június 11-én LEJÁRT. |
I. 457. Egy síkon \(\displaystyle K\) darab pálcika fekszik – a Marokkó nevű játékhoz hasonlóan – melyeket pozitív egész számokkal azonosítunk. A pálcikák elhelyezkedése véletlenszerű, egymást úgy keresztezhetik, hogy a nagyobb azonosítójú van mindig feljebb. A pálcikák végpontjainak koordinátái egész számok. A pálcikák egyesével gyűjthetők össze úgy, hogy egy pálcika elvételekor a többi pálca nem mozdulhat meg: az a pálcika vehető el, amelyet felülről nem keresztez másik. Két pálcika végpontjának találkozása nem számít keresztezésnek.
Készítsünk programot i457 néven, amely a pálcikák azonosítójának egy olyan sorrendjét adja meg, amellyel a pálcikák mindegyike elvehető úgy, hogy minden lépésben az elvehető pálcikák közül a legkisebb sorszámút választjuk.
A program standard bemenetének első sorában a pálcikák \(\displaystyle K\) (\(\displaystyle 2\le K\le 50\)) számát és az ezt követő \(\displaystyle K\) sorban a pálcikák azonosítóját és végpontjainak \(\displaystyle (x_1, y_1)\) és \(\displaystyle (x_2, y_2)\) (\(\displaystyle 1\le x_{1}, y_{1}, x_{2}, y_{2} \le 50)\) koordinátáit adjuk meg. A program írja ki a standard kimenetre a pálcikák azonosítójának szóközzel elválasztott sorrendjét, amely megadja az összes pálcika elvételének megfelelő sorrendjét.
Példa a bemenetre (a / sortörést jelöl): | Kimenet |
9 1 17 29 18 19 / 2 26 27 19 20 / 3 22 29 15 22 4 18 14 15 24 / 5 20 14 18 24 / 6 20 22 22 12 7 25 19 19 11 / 8 23 14 21 24 / 9 29 28 27 38 |
4 3 1 5 8 7 6 2 9 |
Beküldendő egy tömörített i457.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. 458. (É). Az éjszakai égbolt csillagai közti könnyebb eligazodás érdekében az emberek már több ezer évvel ezelőtt is az egymáshoz közel látszó, fényesebb csillagokat emberi vagy isteni lények, állatok vagy tárgyak képével azonosították. Egy-egy ilyen, égen látható csillagcsoportot az oda gondolt alakzattal együtt csillagképnek hívtak. Feladatunk a ma használatos, modern és hivatalosan elfogadott 88 csillagkép adatainak feldolgozása adatbázis-kezelő program segítségével.
Az adatok a csillagkephely.txt és szomszedoscs.txt állományokban állnak rendelkezésünkre. Az állományok tabulátorral tagolt, UTF-8 kódolású szövegfájlok, az első sorok a mezőneveket tartalmazzák.
1. Készítsünk új adatbázist csillagkepek néven. A mellékelt adatállományokat importáljuk az adatbázisba a fájlnévvel azonos nevű táblákba. Beolvasáskor állítsuk be a megfelelő típusokat és kulcsokat. A második táblánál hozzunk létre kulcsot.
Táblák:
Készítsük el a következő feladatok megoldásait. Az egyes lekérdezéseknél ügyeljünk arra, hogy mindig csak a kért értékek jelenjenek meg és más adatok ne. Megoldásainkat a zárójelben lévő néven mentsük el.
2. Bővítsük az adatbázisunkat a 88. Dél Keresztje csillagképpel és adataival. A hiányzó adatok megtalálhatók a feladat forrását képező weboldalon (a feladat forrása: https://hu.wikipedia.org/wiki/Csillagképekméretszerintilistája (utolsó letöltés: 2017. 11. 12.)).
3. Módosítsuk az szterulet megjelenési formátumát úgy, hogy az a százalékjellel együtt százalék formátumban jelenjen meg.
4. Adjuk meg annak a csillagképnek a nevét, amelynek a legtöbb szomszédos csillagképe szerepel az adatbázisban. Írassuk ki azt is, hogy hány szomszédja van. Ha több azonos számú is van, jelenítsük meg mindegyiket. (4szomszed)
5. Adjuk meg, hogy mekkora területet fednek le a csillagképek összesen. Az eredményt függvény segítségével kerekítsük egészre. (5egnagysag)
6. Melyek azok a csillagképek, amelyekben van a Vízöntő legfényesebb csillagánál fényesebb csillag? Jelenjen meg a csillagkép neve és a benne található legfényesebb csillag magnitúdója. A magnitúdó kisebb értéke jelenti a nagyobb fényességet. (6fenyes)
7. Határozzuk meg, melyik három csillagkép látható a legnagyobb tartományban. Adjuk meg a csillagkép latin nevét és a teljes láthatóság szögtartományának nagyságát. (7fok)
8. Számoljuk össze, hány csillagkép nevében szerepel az ,,északi'' előtag. (8eszaki)
9. Vizsgáljuk meg, hogy a ,,Déli hal'' csillagkép – nevéhez hűen – valóban nagyobb szögtartományban látható-e a déli féltekén azoknál a csillagképeknél, amelyek nevében szerepel a ,,hal'', de nem szerepel a ,,déli'' szórészlet. Válaszként jelenítsük meg a ,,Déli hal'' csillagkép déli féltekén való láthatósága és az összes többi ,,hal'' csillagkép déli féltekén lévő átlagos láthatóságának különbségét. (9tobbe)
10. Készítsünk lekérdezéssel új táblát ,,allatok'' néven, melybe kigyűjtjük az állatöv 12 csillagképének (Kos, Bika, Ikrek, Rák, Oroszlán, Szűz, Mérleg, Skorpió, Nyilas, Bak, Vízöntő, Halak) legfontosabb adatait: a csillagkép azonosítóját, magyar és latin nevét, a területét és a szomszédos csillagképek számát. (10allatok)
Beküldendő egy tömörített i458.zip állományban az adatbázis, valamint egy rövid dokumentáció, amelyből kiderül az alkalmazott adatbázis-kezelő neve és verziószáma.
Letöltendő fájlok: csillagkephely.txt, szomszedoscs.txt.
(10 pont)
I. 459. A kenguru nyelvben csak a K, E és N betűket használják. Egyetlen egybetűs értelmes szó van, az E. A két- vagy több-betűs szavak közül azok értelmesek a kenguru nyelvben, amelyek tartalmaznak E betűt, és az utolsó betűjüket elhagyva olyan szót kapunk, amely nem értelmes a kenguru nyelvben.
Írjunk programot, amely elállítja az \(\displaystyle X\) betűből (\(\displaystyle 1\le X\le 12\)) álló értelmes szavakat a kenguru nyelvben.
Beküldendő egy i459.zip tömörített mappában 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ó.
(10 pont)
I/S-jelű feladatokA beküldési határidő 2018. június 11-én LEJÁRT. |
I/S. 27. Egy ország \(\displaystyle N\) városa között autóbuszjáratok közlekednek, melyeknek ismerjük a menetrendjét. A városokat pozitív egész számokkal jelöljük. Az 1-es városból szeretnénk eljutni az \(\displaystyle N\)-es városba autóbuszok segítségével. Minden járat két város között közlekedik, az egyes járatok azonos időközönként követik egymást. Tudjuk minden járatról a napi első indulási időpontot és a járat menetidejét. A járatok utolsó indulási ideje 20:00, később már nem indulnak autóbuszok. Az alábbi példa első járata az 1-es várostól a 4-es városig közlekedik, az út 80 percig tart, az első járat 7:00-kor indul (a nap 420. percében), majd minden következő 200 perccel az előző után, és így az utolsó 17:00-kor.
Átszálláskor legkorábban a megérkezés után legalább 10 perccel később induló buszokat érjük el biztonságosan. Minden városban van szálloda, így nem jelent gondot valamelyikben megszállni éjszakára. Számítsuk ki, hogy legkevesebb hány percig tart eljutni az induló városból a cél városba, illetve adjuk meg, hogy mely városokat érintünk egy ilyen utazás során. Ha több megoldás is lehetséges, akkor elég egyet megadni. A menetrend csak az eljutás szempontjából fontos járatokat tartalmazza, nem az összes járatot, de az 1-es városból biztosan el lehet jutni buszokkal az \(\displaystyle N\)-es városba.
A program a standard bemenet első sorából olvassa be a városok \(\displaystyle N\) számát, majd a következő \(\displaystyle N\) sorból a járatok induló és cél városát, a menetidőt, a nap első járatának indulási idejét 0:00-tól számítva, illetve az egymást követő buszok indulása közötti eltérés idejét percben. A program írja a standard kimenet első sorába a legrövidebb eljutás idejét percben, majd a következő sorba az egy ilyen időtartamú út során érintett városokat sorrendben.
Példa:
Korlátok: \(\displaystyle 4 \le N \le 100\), a menetidők nem hosszabbak 10 óránál.
Értékelés: a megoldás lényegét leíró dokumentáció 1 pontot ér. További 9 pont kapható arra a programra, amely a korlátoknak megfelelő bemenetekre helyes kimenetet ad 1 másodperc futásidő alatt. Részpontszám kapható arra a programra, amely csak kisebb \(\displaystyle N\) értékek esetén ad helyes eredményt 1 másodpercen belül.
Beküldendő egy is27.zip tömörített állományban a megoldást leíró dokumentáció és a program forráskódja.
(10 pont)
S-jelű feladatokA beküldési határidő 2018. június 11-én LEJÁRT. |
S. 126. Általánosítsuk az idén februárban kitűzött C. 1466. feladatot. Egy bizottság összesen \(\displaystyle A\) alkalommal ülésezett. A tagok közül minden ülésen pontosan \(\displaystyle S\) személy vett részt, de bármely két tag legföljebb egyszer volt együtt jelen. Legalább hány tagból áll a bizottság?
A program a standard bemenet első sorából olvassa be az ülések \(\displaystyle A\) számát és az egy ülésen résztvevő személyek \(\displaystyle S\) számát. A program írja a standard kimenet első sorába, hogy legkevesebb hány tagból áll a bizottság.
Példa:
Korlátok: \(\displaystyle 3 \le S \le 10\), \(\displaystyle 3 \le A \le 12\).
Értékelés: a megoldás lényegét leíró dokumentáció 1 pontot ér. További 9 pont kapható arra a programra, amely a korlátoknak megfelelő bemenetekre helyes kimenetet ad 1 másodperc futásidő alatt. Részpontszám kapható arra a programra, amely csak kisebb bemeneti értékek esetén ad helyes eredményt 1 másodpercen belül.
Beküldendő egy s126.zip tömörített állományban a megoldást leíró dokumentáció és a program forráskódja.
(10 pont)
Figyelem!
Az informatika feladatok megoldásait ne e-mailben küldd be! A megoldásokat az Elektronikus munkafüzetben töltheted fel.