Szúdoku feladat
A szúdoku egy logikai játék, melyben megadott szabályok szerint számjegyeket kell elhelyezni egy táblázatban. Legismertebb változataiban n×n-es (négyzet alakú) táblázatok üres celláit kell 1...n számokkal úgy kitölteni, hogy a táblázat egyik sorában és oszlopában se ismétlődjenek a számjegyek. Annak érdekében, hogy a rejtvénynek csak egy megoldása (kitöltése) legyen, a táblázatot a készítők előre feltöltik néhány szükséges számmal.
Ebben a feladatban egy szúdoku feladványgyűjteménnyel kell dolgoznia. A megoldás során vegye figyelembe a következőket:
- Megoldását választása szerint Java vagy C# programozási nyelven kell elkészítenie! Az Ön által választott programozási nyelvet jelölje meg a feladatlap fedőlapján! A javítás során csak a megjelölt nyelven készült megoldás lesz értékelve!
- A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például:3. feladat:)!
- Az egyes feladatokban a kiírásokat a minta szerint készítse el!
- Az ékezetmentes kiírások is elfogadottak.
- Az azonosítókat kis- és nagybetűkkel is kezdheti.
- A program megírásakor az állományban lévő adatok helyes szerkezetét nem kell ellenőriznie, feltételezheti, hogy a rendelkezésre álló adatok a leírtaknak megfelelnek.
- A megoldását úgy készítse el, hogy az azonos szerkezetű, de tetszőleges bemeneti adatok mellett is helyes eredményt adjon!
Példa egy 4x4-es szúdokura
Kezdőállapot
2 | 1 | ||||
3 | 2 | ||||
4 | |||||
1 |
Megoldás
2 | 1 | ||||
3 | 2 | ||||
4 | |||||
1 |
A feladvanyok.txt forrásállomány minden sorában egy-egy n×n-es (négyzet alakú) szúdoku feladvány kezdőállapotát rögzítettük sorfolytonos leírással, 0-val jelölve a kitöltetlen mezőket, 1...n számjegyekkel a kitöltött mezőket!
Például a 0040420000230300 számsor a következő 4×4-es feladványt takarja:
Az állomány 4x4-es mérettől 9x9-es méretig tartalmaz négyzetes feladványokat legfeljebb 250 sorban. Feltételezheti, hogy minden méretből tartalmaz legalább egy feladványt az állomány!
4 | |||||
4 | 2 | ||||
2 | 3 | ||||
3 |
Konzolos feladatrész
Készítsen konzolos alkalmazást a következő feladatok megoldására, amelynek projektjét sudokuCLI néven mentse el!
1 pont
A
forráskódba a meglévő osztály elé illessze be az Osztaly.java avagy az
Osztaly.cs forrásállományból a Feladvany osztályt definiáló kódrészletét! A
beillesztett osztály tetszés szerint bővíthető további tagokkal!
1 pont
Olvassa
be a feladvanyok.txt állományban lévő adatokat és tárolja el egy olyan
adatszerkezetben, ami a további feladatok megoldására alkalmas! Határozza meg
és írja ki a képernyőre a minta szerint, hogy hány feladvány található a
forrásállományban!
4 pont
Kérjen
be a felhasználótól egy 4...9 intervallumba eső (4≤x≤9) egész számot! A
beolvasást addig ismételje, amíg a megfelelő értékhatárból érkező számot nem
kapjuk! Határozza meg, és írja a képernyőre, hogy ebből a méretből hány
feladvány található a forrásállományban!
5 pont
Válasszon ki véletlenszerűen egy feladványt, amely az előző feladatban bekért méretű! A kiválasztott feladványt jelenítse meg a képernyőn a minta szerint! Ha nem sikerült véletlenszerű feladványt kiválasztani, akkor dolgozzon a legelső beolvasott feladvánnyal!
5 pont
Határozza
meg és írja a képernyőre a kiválasztott feladvány kitöltöttségét %-os formában
a minta szerint! A kitöltöttségen a kitöltött mezők arányát értjük az összes
mező számához viszonyítva! A százalékos értéket egész számra kerekítve
jelenítse meg!
3 pont
A
Feladvany osztály megfelelő metódusát felhasználva jelenítse meg a kiválasztott
feladványt a konzolon!
2 pont
Válogassa ki és írja ki fájlba az adott méretű feladványokat! Ha például a felhasználó a 4-es méretet adta meg, akkor a kimeneten egy sudoku4.txt állományba kerüljenek a 4x4-es méretű feladványok! Az állományban soronként egy feladvány kerüljön!
5 pont
Konzolos minta:
Kommunikáció 2pont
Grafikus feladatrész
Készítsen grafikus alkalmazást a következő feladatok megoldására, amelynek projektjét sudokuGUI néven mentse el!
1 pont
10. feladat
A
grafikus alkalmazásban a következő feladatokat végezze el:
Az új feladványok rögzítésre szolgáló alkalmazás felületét alakítsa ki a minta szerint! Az ablak szélessége 540 képpont, magassága 210 képpont legyen, címsorában a „Sudoku-ellenőrző” szöveget jelenítse meg!
Vezérlőelemek és elrendezés 4pont
A
méret beállítására szolgáló szöveges beviteli mező alapértelmezett értéke 4
legyen! A mező értékét csak a „+” és „-” gombok segítségével lehessen
változtatni a 4...9 intervallumban (4≤x≤9)!
A kezdőállapot gépelése közben a rögzítésre szolgáló mező alatt egy címkében folyamatosan jelezzük, hogy hány karakter lett beírva!
Az „Ellenőrzés” feliratú gombra kattintva ellenőrizzük, hogy a kezdőállapot hossza a méretnek megfelelő-e! Ha a feladvány hossza a kiválasztott méretnek megfelelő, akkor az „A feladvány megfelelő hosszúságú!” üzenetet jelenítse meg felugró ablakban! Ellenkező esetekben „A feladvány rövid: kell még # számjegy!”, vagy „A feladvány hosszú: törlendő # számjegy!” üzenetek közül jelenítse meg az oda megfelelőt, benne a # jel helyén a megfelelő számértékkel!