Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [skrypt] Rozwiązywacz sudoku
Forum PHP.pl > Inne > Oceny
Hacker
Ponieważ mi się nudziło wpadłem na pomysł napisania rozwiązywacza sudoku (jak się potem okazało w sieci jest takich programów sporo). No ale cóż... Proszę o ocenę

Opis

Wpisujesz liczby, które masz podane w sudoku do formularza w odpowiednie miejsca.
Klikasz ok.
Program po chwili powinien dać wynik (pomimo wielu operacji na tablicach, a ja myślałem, że będzie to trochę mielił).
Wyświetlone zostanie rozwiązane sudoku razem z logiem z rozwiązywania.

Linki

Rozwiązywacz sudoku
kod źródłowy 1
kod źródłowy 2
dr_bonzo
Nawet nie wiem jak to ma dzialac? Daj troczeopisu na stronie
TO tylko sprawdza czy wpisano prawidlowo liczby?
Czy rozwiazuje sudoku po wpisaniu wyjsciowych liczb?
Hacker
Rozwiązywacz - rozwiązuje
Po co opis wpisujesz i jazzzzzzda
siemakuba
jedno co musisz zrobić na pewno, to dodanie maxlength do inputów. Cóź to za sudoku, w którym mogę sobie wpisać w jedno pole np. 98234 ? :P

pozdr.
tes
Nie działa ten twój skrypt ;]
Hacker
jak to nie działa??
Brałem najtrudniejsze zadanka ze stronek które znalazłem i działał...
Maxlength ok się zrobi
bim2
Mi też nie działa sad.gif Niemożliwe do wykonania tongue.gif
tes
Taki pech, tobie rozwiązywał wszystko, a mi pierwszego lepszego nie mógł trzasnąć ;]
Przykład brałem z : http://sudoku.friko.net/pl/

Dokładnie taki:


W ogóle trochę mały ten skrypt, zwłaszcza że czasem zdarzają się przykłady gdzie trzeba założyć pewną odpowiedź i na jej podstawie sprawdzać dalej diagram itd... Nie każdy przykład da się rozwiązać samymi porównaniami.
tiraeth
Wziąłem pierwszy lepszy diagram STĄD i zadziałało smile.gif
TomASS
Na ostatnie wakacje był konkurs na rozwiązywanie SUDOKU, pomyśałem, okej - jestem programistą i napiszę sobie do tego skrypt, po co się męczyć. Okazało się to nie takie proste, otóż, w bardziej skomplikowanych przykładach, nie da się rozwiązać SUDOKU tylko przez same porównania. Próbowałem rozwiązać to poprzez "strzelanie" komputer w sytuacji patowej, wybiera jakąś liczbę i przeprowadza obliczenia, jeśli okazało się to niepoprawnym rozumowaniem to "strzela" dalej. Niestety ta metoda nie sprawdza się zawsze (podobnie jak Twój skrypt).

Ale chylę czoła, bo dużo sudoku można nim rozwiązać smile.gif
Hacker
hmmm... dzięki tomASS zobaczę ten przykład i dopracuje skrypt... Mój skrypt opiera się tylko na logice
EDIT:

tes, to twoje sudoku nie ma jednoznacznego unikalnego rozwiązania


A takie sudoku to wedłud mnie jest do d**y
tes
Wziąłem pierwsze lepsze.
Ale jak widzisz TomASS napisał to co ja o tych porównaniach.

W każdym razie powodzenia smile.gif
Hacker
Dobra jak znajdę chwilę czasu dopiszę strzelanie w ostateczności...
Hmm... Dlaczego nikt nie komentuje kodu źródłowego? Czyżby nikomu nie chciało się wnikać w to jak to działa?
Jojo
Nie to żebym się czepiał ale ja ten kod gdzieś już widziałem... chociaż może tylko mi się zdaje...
Hacker
No, może widziałeś podobny kod, bo jak mówię potem się okazało, że sporo jest tego w sieci. Ale zapewniam ciebie, że ten kod jest w 100% napisany przeze mnie od zera

EDIT:
ufff...
Sprawdzcie nową wersję powinno rozwiązać WSZYSTKO
bim2
Cytat
Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

Notice: Undefined offset: 0 in /home/hacker/ftp/sudoku/sudoku.php on line 160

I w dodatku nie rozwiazało. Były dwa okienka calkowcie puste ;P Brałem gre z :
http://sudoku.friko.net/pl/
Hacker
hmmm... ciekawe mógłbyś podać to sudoku??
bim2
no podłem:
http://sudoku.friko.net/pl/
Hacker
hmmmm... ciekawe tylko chyba się nie zrozumieliśmy...
Podaj cyfry albo przynajmniej z jakiego dnia było to sudoku...
bim2
Heh już ich nie mam haha.gif Sprawdzilem czy dziala i koniec. Losowałem tak aby były dwa puste okienka ;P. Wszedzie w twoim skrypcie zamiast liczb daly się 0
Hacker
hmmm...
To najprawdopodobniej było to.

Już naprawiłem sprawdź
EDIT
i znowu sudoku z wieloma rozwiązaniami...
bim2
I tera działa pięknie biggrin.gif GZ
Hacker
jak to wcale nie??

Podaj przykład... Albo chociaż screena daj.
TomASS
Tutaj ktoś uporał się z problemem rozwiązywania sudoku, które mają wiele rozwiązań.
Vengeance
Czy ja wiem, czy te "strzelanie" jest aż tak trudne w realizacji?

Sądze, że można rozwiązać to tak. Rozwiązywacz SUDOKU niech będzie klasą, która jako konstruktor przyjmuje tablicę dwuwymiarową odzwierciedlającą każde pole i przypisaną do niego liczbę.

Gdy okazuje się, że w polu mogą być np. 2 możliwości, następuje coś w rodzaju uruchomienia kolejnego wątku. Czyli skrypt tworzy 2 nowe obiekty rozwiązywacza SUDOKU podając im tablicę z liczbami które już odgadł + tymi dwoma możliwościami. I tak rekurencyjnie, aż któryś z rozwiązywaczy dojdzie do sedna sprawy tj. poprawnego wyniku.

Co prawda łatwo opisać, a pewnie trudniej skodzić - ale może pomysł się przyda. Rekurencja ot co.
Hacker
@vegance
Patrz na mój kod masz tam to samo tylko, że nie na obiektach rozwiązywacza tylko odpowiada za to funkcja randomize i tablica $backup ot co.
a jeżeli chodzi o "skodzenie" twojego pomysłu to w jakim chcesz języku Pascal, Delphi, C++, php, Java, JavaScript, a może asembler biggrin.gif?

Mój rozwiązywacz także mógłby podawać wszystkie rozwiązania ale było by to poprostu zbyt duże obciążanie serwera...
Vengeance
Ja do innych niż kochane php się nie dotykam ;P Ono mnie utrzymuje i go nie zdradze ;P
Hacker
Hmmm...
@Vegance ja się pytałem w czym chcesz takowy kod odemnie otrzymać... biggrin.gif

@Vengeance Looknij, ostatnio mi się nudziło i zrodziło się coś takiego w Javie.
SolverGUI
Solver

Dzięki tiraeth. Ktoś testował??
tiraeth
W sumie nie odkopałeś tematu smile.gif

Cytat
Ps. Sorry za dwa długie posty - niestety nie mam już serwera, na który mógłbym to wrzucić.

phpfi.com
wrzuć tam i zedytuj posta
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.