Witam. Otóż mam za zadanie zaprogramować sudoku w javie. No i tak, mam już funkcje odpowiedzialne za generowanie całej planszy ( wszystkie pola wypełnione ), ale teraz chciałbym stworzyć pare pustych pół do wypełnienia i trochę nie wiem jak się za to zabrać( nie chodzi mi tutaj o jakieś ustawianie poziomu trudności, powiedzmy że chciałbym tylko wybrać ile pól ma być pustych ). W sumie znalazłem 2 algorytmy - dlx - trochę za skomplikowane jak dla mnie ,a drugi to - usuwanie pola i rozwiązywanie sudoku po każdym usunięciu aby sprawdzić czy istnieje tylko jedno rozwiązanie ( tutaj trzeba by było napisać, też 'solver' :( ). Czy są może jakieś inne sposoby aby z pełnej planszy "wyciąć pare pól i by gra cały czas miała jedno rozwiązanie ?
Proszę o pomoc. Pozdrawiam.
yyyyy? oprócz danych na planszy trzymasz ich kopie w tablicy z czego w tablicy masz wszystkie dane a na planszy nie usuwasz tylko zwyczajnie nie wypełniasz wszystkiego. Z tego co wiem w sudoku się usuwa tak pola, żeby było jedno rozwiązanie więc problem ten znika.
Dzieki za odpowiedz. No wlasnie musi byc jedno rozwiazanie wiec wybor pol do 'ukrycia' nie jest taki prosty. Zastanawiam sie na odpowiednim algorytmem.
@mr_jaro autorowi nie chodzi o grę jako taką, tylko o algorytm "ukrywania" pól w taki sposób żeby plansza miała cały czas jednoznaczne rozwiązanie. Jak źle powyrzucasz albo wyrzucisz za dużo to niestety może się okazać ze plansza ma więcej rozwiązań :)
W zasadzie jak są takie gry to to raczej plansza się nie zmienia w sensie nie ma losowego zdejmowania cyfr tylko jest z góry określony stały dla danej planszy ostatecznie względem poziomu trudności, tylko, że rozstawień jest bardzo duża ilość.
No tak Shalom ma racje, tzn chodzi mi algorytm ukrywania pól tak aby pozostawić grę z jednym rozwiązaniem. Ten algorytm z wyrzucaniem liczby a nastepnie sprawdzaniem ilości rozwiązań jest dobry, ale jego złożoność jest chyba duża. Zresztą też za bardzo nie wiem jakby zliczać te rozwiązania. Tzn znalazłem jedno potem szukam drugiego i każda znaleziona liczby w danym polu musi być różna od tej z poprzedniego rozwiązania? ( tzn wystarczy że tylko dwie będą zamienione miejscami a rozwiązanie jest już inne... ) Jakieś pomysły, wskazówki?
Jakieś propozycje :P ?Byłbym bardzo wdzięczny za jakąkolwiek pomoc.