Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 13. 11. 2012 12:08

Mythic
Příspěvky: 217
Reputace:   
 

Generator sudoku

Ahoj,
snažím se vytvořit program, který bude generovat sudoku. Prozatím řeším, jak rozmístit čísla do čtverce 9x9 aby se v žádném řádku, sloupci ani menších polích 3x3 neopakovali dvě čísla (předpokládám, že všichni vědí jak vypadá sudoku).

Nějak nemůžu přijít na to, jaký zvolit efektivní postup. Můj první návrh měl fungovat asi takto:

1. vygeneruju dvourozměrné pole a každý ř'ádek vyplním čísly 1-9, následně je promíchám.
2. zjistím jestli se ve sloupečkách neopakují dvě čísla a pokud ano, promíchám to znovu (a tady už narážím na problém).
3. zajistit aby se neopakovala čísla na souřadnicích [1,1],[1,2],[1,3],[2,1],[2,2],[2,3],[3,1],[3,2],[3,3] a pak i v dalších čtverečcích 3x3. (ale to už mi začíná připadat strašně komplikované a vůbec nevím jak bych to naprogramoval).

Neexistuje nějaký snazší způsob jak generovat sudoku ? Díky :)

Offline

 

#2 15. 11. 2012 14:12

LukasM
Příspěvky: 3274
Reputace:   193 
 

Re: Generator sudoku

↑ Mythic:
Nepřemýšlel jsem o tom moc do hloubky, ale dělal bych to jinak. Náhodně umístím čísla 1-9 do prvního řádku. Pak jdu na druhý řádek, a půjdu po číslech. Nejdřív jednička. V prvním řádku už jedna je, a určitě padla do jednoho z těch devíti bloků. Takže ji mohu umístit už jen na šest políček. Umístím ji náhodně na jedno z nich. Totéž 2-9. Totéž třetí řádek, tam už pro každé číslo budu mít jen tři možnosti.

Čtvrtý řádek. Tam mi na chvíli vypadne kontrola těch bloků, ale zase se budu muset dívat jestli náhodou už dané číslo není někde nad aktuálním políčkem. Atd. Atd.

Jak to udělat efektivně, to rozmyšlené nemám. Ale vzhledem k šílenosti tvého návrhu ti o to asi nejde, takže klidně hrubou silou. V každém kroku vybrat index políčka na daném řádku, zkusmo tam číslici umístit, a zkusit jestli porušuje nějakou podmínku. Pokud ano, umístím ji na jinou pozici. Pokud ne, jdu na další číslici.

To by mělo fungovat, myslím.

Offline

 

#3 25. 11. 2012 13:44 — Editoval mountdoom (25. 11. 2012 13:53)

mountdoom
Příspěvky: 186
Reputace:   
 

Re: Generator sudoku

Zdravím,

tady jsem ti naprogramoval generátor plného pole sudoku v Pythonu. Funguje to v pohodě, jedno sudoku je vygenerovano cca za 7 ms. Funkci "tisk" ignoruj, ta pouze vypise sudoku na obrazovku.

Sudoku:

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson