Skip to content
Snippets Groups Projects
Select Git revision
  • e6b6cd3751522fa78fc8cca842d61e18c2ddf7a7
  • master default protected
2 results

sudoku_apa

  • Clone with SSH
  • Clone with HTTPS
  • user avatar
    Tamas Bunth authored
    e6b6cd37
    History

    Sudoku elemek

    Feladvány

    Addot egy NxN méretű tábla. Ebbe a táblába kell elhelyezni pálcikákat úgy, hogy a táblát teljesen lefedje.

    Egy m hosszú pálcika m db különböző szimbolumot tartalmaz. Úgy kell elhelyezni a pálcikákat a táblában, hogy a tábla ne tartalmazzon olyan sort vagy oszlpot, ami két azonos szimbólumot tartalmaz.

    A pálcikák elforgathatóak és tükrözhetőek. Pl. a { 1, 2, 3 } elem ekvivalens a { 3, 2, 1} pálcikával, és behelyezhető függőlegesen és vízszintesen is a táblába.

    Egy konkrét feladat

    Adott egy 5x5-ös tábla.

    Az pálcikáink a következőek (Jelen esetben 3 és 2 hosszú pálcikákat definiáltunk.)

    • 5, 4, 3
    • 4, 1, 2,
    • 3, 1, 2,
    • 2, 1,
    • 5, 3,
    • 4, 2, 3
    • 5, 4, 1,
    • 1, 3, 5,
    • 2, 5, 4,

    Algoritmus

    Az algoritmus a bactracking elvét követi.

    1. Inicializálunk egy üres táblát. Az elemekhez rendelünk egy sorrendet.

    2. A bal fölső sarokból az első üres helyre (az algoritmus elején ez pont a bal fölső sarok, utána pedig olvasásirányba az első üres cella) elindulva megpróbálunk bepakolni egy pálcikát.

      • Ha a pálcikát sikeresen le tudtuk rakni, akkor folytatjuk a 2. lépésnél.

      • Ha nem sikerült lerakni, akkor megváltoztatjuk az elem elhelyezkedését (forgatjuk)

      • Ha nem sikerült lerakni egyik állapotában sem, akkor új element próbálunk lerarkni.

      • Ha egyik pálcikát se sikerült lepakolni, akkor felvesszük az utoljára letett pálcikát, és folytatjuk a 2. lépésnél.

    3. A feladvány akkor van kész, ha a tábla összes cellája foglalt.