Az I. 376. feladat (2015. május) |
I. 376. A keresztrejtvényfejtés széles körben elterjedt népszerű játék. Sok változatát fejlesztették ki. A hagyományos változatban a szavak elválasztására fekete mezők szolgálnak. A megfejtésekkel az üres mezők vízszintesen balról jobbra, illetve függőlegesen felülről lefelé tölthetők ki. A mezők számozása a bal felső sarokból indul, ahol a vízszintes vagy függőleges megoldás szava kezdődik. Minden olyan mező számot kap, ahol vízszintesen vagy függőlegesen megfejtés kezdődik. A feladatban szereplő keresztrejtvények egybetűs szavakat nem tartalmaznak. Ha egy mező vízszintes és függőleges szó első betűjét is tartalmazza, akkor csak egy számot kap.
Keresztrejtvény hálója és számozása:
A feladatok megoldásának teszteléséhez rendelkezésünkre áll egy, a honlapunkról letölthető halo.txt fájl, amelyben egy \(\displaystyle N\times M\) (\(\displaystyle 5\le N, M\le 15\)) méretű keresztrejtvény hálója van leírva. Az állomány első sorában \(\displaystyle N\) és \(\displaystyle M\) értéke szerepel szóközzel elválasztva, majd a következő \(\displaystyle N\) sor a mezők állapotát tartalmazza. A fekete mezőket ,,f'', az üreseket ,,.'' karakter ábrázolja.
Készítsünk programot i376 néven, amely az alábbi problémákat oldja meg:
Minden képernyőre írást igénylő részfeladat megoldása előtt írjuk ki a feladat sorszámát. Ha a felhasználótól kérünk be adatot, jelenítsük meg a képernyőn, hogy milyen értéket várunk (például a 4. feladat esetén: ,,4. feladat - Adjunk meg egy mezőt: ''). Az ékezetmentes kiírás is elfogadott.
1. Olvassuk be a halo.txt állományban talált adatokat, és azok felhasználásával oldjuk meg a következő feladatokat.
2. Írjuk ki a képernyőre, hogy a keresztrejtvény hálójában hány fekete és hány üres mező van.
3. Határozzuk meg azt a sort, illetve azt az oszlopot, amelyben a legtöbb fekete mező van. Ha több ilyen van, akkor a legkisebb sorszámút írassuk ki a képernyőre.
4. Kérjük be a felhasználótól a keresztrejtvény egy mezőjének koordinátáját (például: 10h) és írjuk ki, hogy be kell-e majd számozni.
5. Írjuk ki a képernyőre, hogy a keresztrejtvény hálójában vízszintesen hány \(\displaystyle 2, 3, \dots, 10\) betűs szó helyezhető el.
6. A szabályoknak megfelelően számozzuk be a keresztrejtvény mezőit és írjuk az eredményt a szamozott.txt állományba. A mezők tartalmát 3 karakternyi helyre írjuk ki.
7. Írassuk ki, hogy a keresztrejtvénybe írandó szavakhoz hány vízszintes és hány függőleges meghatározás tartozik.
Beküldendő a program forráskódja (i376.pas, i376.cpp, ...), valamint a program rövid dokumentációja (i376.txt, i376.pdf, ...), amely tartalmazza a megoldás leírását, és megadja, hogy a forrásállomány melyik fejlesztő környezetben fordítható.
Letölthető fájl: halo.txt
(10 pont)
A beküldési határidő 2015. június 10-én LEJÁRT.
Megoldás elve:
A keresztrejtvényben egy mezőt akkor kell számozni, ha üres, és teljesül rá, hogy felette fekete, alatta pedig üres mező van, vagy hogy tőle balra fekete, jobbra pedig üres mező található. Ha a mező a keresztrejtvény szélénél van, akkor a keresztrejtvény szélét fekete mezőnek tekintjük.
Minta megoldás:
Radnai Bálint 9. osztályos tanuló (Veszprém, Lovassy László Gimnázium) megoldása: main.cpp
Statisztika:
13 dolgozat érkezett. 10 pontot kapott: Fényes Balázs, Kazal Soma, Kovács 246 Benedek, Mócsy Miklós, Nagy Ábel, Olexó Gergely, Radnai Bálint, Rittgasszer Ákos, Szemerédi Levente. 9 pontot kapott: Kovács Balázs Marcell. 8 pontot kapott: 1 versenyző. 6 pontot kapott: 1 versenyző. 5 pontot kapott: 1 versenyző.
A KöMaL 2015. májusi informatika feladatai