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
Chtěl bych v Javě udělat program, který mi vygeneruje sudoku
znám pravidla sudoky, tedy by snad neměl být pro mě až takový problém udělat sudoku, která bude splňovat všechna pravidla pro sudoku (tedy řádku,sloupce a čtverce) akorát nevím jak mám poznat, jaká čísla a kolik musím nejméně odhalit aby se dala tato sudoka řešit, a řešitel přišel právě na to moje jedno řešení....
díky moc za radu
Offline
Ahoj, zkus se podívat do knížky Algoritmy v jazyku C a C++, tam je program, který vyřeší zadanou matici sudoku. Pokud ti to pomůže, podívej se na to. Část této knížky je na books.google.com, ale stránka 109 až 111, kde ten algoritmus je, tam zrovna nějsou naskenované.
Offline
Algoritmus na řešení sudoku není těžký. Stejně tak není ani jeho zápis není nijak dlouhý.
Často používaný algoritmus na řešení sudoku je tzv. backtracking. U něj je trochu problém s tím, že sudoku neřeší jako člověk, takže pro člověka může být následné řešení dosti obtížné. Proto bych zde použil spíše algoritmus, který bude sudoku řešit jako člověk, takže se nestane, že vygeneruješ pro člověka neřešitelné sudoku.
Offline
Kuci děkuji za snahu... to s tou sudokou v té knížce Algoritmy C a C++ si přečtu, ale pokud mi tam nenapíší, jaká čísla a kolik musím zveřejnit tak nevím:(
jinak jsme ve 2.ku SŠ tak na to trošku berte ohled neznám všechny možní druhy algoritmů a ten backtracking opravdu neznám
ale jestli jsem to dopře pochopil tak ten algoritmus umí udělat to, že když má zadanou nějakou sudoku tak ji vypočítá, ale já chci udělat program, který vygeneruje nějakou sudoku a pak vypíše nějaká čísla na určitých mástech tak, aby ji mohl člověk vyřešit.....
Offline
↑ VojtechSejkora:
Jasně, backtracking se používá pro řešení sudoku tabulky. Ale pokud chceš vygenerovat zadání, které má právě jedno řešení, tak se ti bude hodit algoritmus pro řešení sudoku. Alespoň já bych to dělal tak, že si vygeneruju čísla, která splňují pravidla sudoku (ne dvě stejná čísla ve čtverci, v řádku a ve slopci) a poté zkontroluji, zdali lze sudoku vyřešit tak, aby mělo právě jedno řešení.
Jak jsem už ale psal, tak ten backtracking asi nebude nejvhodnější, protože člověk sudoku většinou neluští metodou pokus omyl :D Většinou to řešíš za pomoci tzv. kandidátů. Doplníš patřičné číslo právě tam, kde ti zbyl už jenom jeden kandidát. K tomuhle musíš přihlížet při psaní toho algoritmu.
Já jsem si někdy dříve (možná taky v tom druháku, už nevím přesně) podobný algoritmus napsal, takže v případě zájmu ti mohu ještě poskytnout více info, případně ti ho ukázat, aby ses měl čeho chytit.
Offline
↑ 7867088:
tak to by mě tedy zajímalo jak to chceš vyřešit. když máš více neznámích jak rovnic:D
↑ septolet:
no jako můj spolubydlící by to tak klidně řešil:D
chvilku si budu lámat hlavu s tím a pokud na to nepříjdu tak se na ten tvůj algoritmus kouknu
díky
Offline
↑ VojtechSejkora:
:D Dobře, kdyžtak si řekni a pošlu ti ho třeba na email nebo ho někam uploadnu a pošlu ti link ke stažení.
Offline