Proste sudoku

0

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.

0

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.

0

Dzieki za odpowiedz. No wlasnie musi byc jedno rozwiazanie wiec wybor pol do 'ukrycia' nie jest taki prosty. Zastanawiam sie na odpowiednim algorytmem.

0

@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ń :)

0

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ść.

0

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?

0

Jakieś propozycje :P ?Byłbym bardzo wdzięczny za jakąkolwiek pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1