Program pro řešení/generování SUDOKU - SUDOKU solver / generator
Autor: Ondřej Vitouš


Program pro řešení, generování a tisk SUDOKU, včetně generování tiskových sestav

Řeší jednoznačnou logickou cesto prakticky všechny doposud známé typy SUDOKU, dokáže vám zkontrolovat váš postup a najít další možný krok, pokud nevíte, jak dál. Lze použít i pro dořešení již rozřešeného papírového SUDOKU. Generátor generuje pouze logicky řešitelná SUDOKU v pěti úrovních obtížnosti (pro začátečníky až po mistry SUDOKU). Jakékoliv SUDOKU lze také tisknout a nebo lze automaticky generovat sestavy nových SUDOKU pro tisk.

Program sudoku.zip je nutné po stažení rozpakovat a nainstalovat pomocí setup.exe. Také můžete pro upgrade stávající verze programu stáhnout pouze sudoku.exe a zaměnit stávající soubor aplikace.

Jsou implementovány tyto metody pro řešení (a generování SUDOKU): pointing pairs, box/line reduction, hidden pairs(triples, quads), Xwing, XYwing, XYChain, SwordFish, remote pairs. Pokud naleznete nějaké SUDOKU, které by snad nešlo těmito metodami vyřešit, a pošlete mi ho, rád doplním program o nové metody.




Návod k obsluze: Pomocí MENU -> Sudoku -> Generuj SUDOKU vygenerujte nové Sudoku. Pokud chcete zadat již existující Sudoku, zmáčkněte tlačítko "Zadej DATA". Objeví se formulář pro zadávání Sudoku. Klepněte myší na tlačítko "Nové" a formulář se vymaže.


Do políček formuláře vyplňte vaše Sudoku. Místo prázdných polí používejte nulu nebo mezerník. Pro opravu můžete použít šipky, nebo klávesu Backspace. Během zadávání je automaticky prováděná kontrola korektnosti. Pokud se vyskytnou dvě stejné číslice v rámci jednoho řádku, sloupce, nebo bloku, jsou zvýrazněné červeně a Sudoku nelze zadat. Na konci klepněte myší na tlačítko "Zadej data" a Sudoku se načte do programu. Program okamžitě zkontroluje řešitelnost daného Sudoku a vypíše informaci o potřebných metodách k řešení. Pokud Sudoku nelze vyřešit, je možné, že je špatně zadané. Další možností je, že uvedené Sudoku není korektně vytvořené, to znamená, že má více řešení a k výsledku nelze dospět logickou cestou.

Sudoku řešíme pomocí tlačítek "Zkus metodu" nebo "Vylušti krok". Funkce "Zkus metodu" postupně zkouší uvedené metody a na základě toho odstraňuje možná čísla pro daná pole. Je to tedy přehlednější pro sledování řešení. Funkce "Vylušti krok" dělá to samé, ale opakuje to tak dlouho, dokud nenalezne nějakou novou číslici. Je to tedy rychlejší. Kdykoliv se lze vrátit o krok zpátky tlačítkem "Zpět", nebo "Krok zpět". Všechna tato tlačítka lze libovolně kombinovat.

V okně logu ve spodní části programu se vypisují detaily k jednotlivým operacím řešení. Kliknutím na uvedený řádek se fialově zvýrazní pole, kterých se tato operace týkala.

Při ručním řešení klikneme myší na dané políčko, které se žlutě zvýrazní. Potom buď zadáme číslici, kterou tam chceme dosadit, nebo z možných číslic odmažeme číslice, o kterých si myslíme, že tam nemají být. Program tyto operace automaticky kontroluje, takže pokud zadáme špatnou číslici, nebo se pokoušíme odmazat správnou číslici, program nás na to upozorní.

Program také můžeme použít jako nápovědu pro další možný krok u Sudoku, které řešíme ručně. Doporučený postup je nejprve zadat originální Sudoku do programu. Tím zároveň zkontrolujeme, zda je Sudoku v pořádku. A potom do tohoto Sudoku doplníme námi nalezené možné číslice a vyřešené číslice (kliknutím na políčko a zapsáním). Pro rychlý pohyb mezi poli při zadávání těchto číslic je možné použít mezerník (přeskočení na další nevyřešené políčko). Při tomto zadávání nám program zkontroluje správnost námi vyřešených číslic. Nakonec použijeme funkci "Zkus metodu" a tak zjistíme, jak dál.

Program umožňuje ukládání rozdělaného Sudoku do souboru na disk a jeho zpětné načtení. Od verze 1.9 se ukládá také postup řešení a možné číslice. Aktuálně rozdělané Sudoku si program pamatuje a při startu ho automaticky načte. Program si také pamatuje 5 posledních řešených Sudoku.

Pokud je zadané Sudoku špatné, program vypíše hlášku "Špatně zadané sudoku! Nelze načíst data!!". Takové Sudoku nemá řešení. Pokud program napíše "Sudoku není řešitené tímto programem!", je možné, že toto Sudoku má více možností řešení (neexistuje jednoznačná logická cesta k řešení). V tomto případě je možné zkusit Sudoku dořešit až do bodu, kdy už to dále program neumí, a potom zkusit náhodně zvolit nějakou číslici a zkusit Sudoku dořešit. Pokud se to podaří na více různých možností, jedná se o špatně navržené Sudoku. Pokud se nám to podaří pouze s jedinou možností, je k řešení patrně potřebná metoda, která doposud v tomto programu není implementována. V takovém případě mi uvedené Sudoku zašlete a já se pokusím tuto metodu doplnit. Zatím jsou implementovány tyto metody řešení: pointing pairs, box/line reduction, hidden pairs(triples, quads), Xwing, XYwing, XYChain, SwordFish, remote pairs.

Další možností, kterou program má, je tisk Sudoku. Je možné tisknout aktuálně rozdělané Sudoku a to buď s možnými čísly, nebo bez. Je také možné tisknout prázdné archy pro řešení Sudoku a nebo generovat nové Sudoku. Můžeme zvolit 1 až 12 Sudoku na jednu stránku a navolit počet stran a obtížnost.






SUDOKU solver / generator
Autor: Ondřej Vitouš

Application for generating, solving and printing sudoku. Please download sudoku.zip, unpack it and run setup.exe. You may also use upgrade EXE file here to replace your Sudoku.EXE file.





Help: Press "Enter DATA" and fill Sudoku to this form. Use space or "0" for blank numbers. Press green "Enter DATA" button on the form. Program will then try to analyze sudoku and write it's state.

New numbers you can add by mouse click to the number. Or you can left program to show you how to resolve this sudoku by pressing "SOLVE" button.

So far this application is able to solve most of sudoku. It cannot resolve sudoku with more posible solutions but I thing that those kind of sudoku are bad designed and not proper at all. In some cases may not be sudoku solved by currently implemented methods. So than it's up to you to help program to solve it or to found some new logical method. In case you found one more, just let me know. So far I have implemented: pairs, triples, pointing pairs, box/line reduction, hidden pairs(triples, quads), XWing, XYwing, XYChain, SwordFish and remote pairs. I will explain those methods later. Since version 1.5, program can also generate sudoku and print forms.

Ondřej Vitouš