Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Skrócony regulamin

Sudoku-jaki algorytm??

Idź do strony 1, 2, 3  Następny

 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Algorytmy + inżynieria oprogramowania
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Nail
Gość





PostWysłany: Nie Sty 01, 2006 4:21 pm      Temat postu: Sudoku-jaki algorytm?? Odpowiedz z cytatem Pisownia

Cześć wszystkim.

Przed świętami miałem pierwsze ćwiczenia z algorytmiki(do tej pory wykłady) i gość wymyślil, że na 6.01.2006 mamy napisać grę Sudoku w Delphi. Niestety nie podal jakich użyć algorytmów.
Informacji szukam od tygodnia w necie, ale kompletne dno:( - nie wiem może nie umiem szukać??

Dlatego proszę was o nakierowanie mnie jakich, algorytmów należało by użyć lub ewentualnie zarzucić jakiś kod źródłowy. Bo z Delphi to ja raczej noga jestem, a jak już programuje to tylko c++.
Powrót do góry
Marcin_Miga



Dołączył: 09 Lis 2005
Posty: 1540
Skąd: 127.0.0.1

PostWysłany: Pon Sty 02, 2006 9:00 am      Temat postu: Odpowiedz z cytatem Pisownia

Jeśli umiesz rozwiązywać SUDOKU na papierze, to zastosuj ten sam algorytm w programie. Ja bym zrobił to na kolekcjach elementów i zdarzeniach. Np. Plansza składa się z 81 POL, 9 RZEDOW, 9 KOLUMN, 9 OBSZAROW. I jeśli w jednym z POL uda ci się ustalić występowanie jakijś cyfry, to wiadomo, że w RZEDZIE, który zawiera to POLE, oraz KOLUMNIE i OBSZARZE dana cyfra już nie wystąpi. Więc POLE musi o tym swoich 'rodzicow' powiadomić.

pozdrawiaMM

_________________
Jestem pełnoletnim programistą. Programuję już ponad 18 lat...
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email Tlen
jelcyn
Site Admin


Dołączył: 22 Maj 2005
Posty: 1116
Skąd: Rzeszów

PostWysłany: Pon Sty 02, 2006 10:31 am      Temat postu: Odpowiedz z cytatem Pisownia

Nie wiem czy to takie proste. Bo są łatwe sudoku w których wystarczy dobrze się popatrzeć i cyfry same się "dopisują" ale są też takie trudne w których np. natrafiasz że można wpisać 2 różne cyfry w 1 pole, nie ma już dodatkowych wskazówek i wtedy trzeba jakby sprawdzić co by było gdybym tutaj wpisał którąś z tych liczb. A niektóre sudoku są tak trudne, że jest jakby kilka takich "rozgałęzień"

Rozwiązałem kiedyś kilka(naście) sudoku i nie zabierałem się za takie przypadki, ale po rozwiązaniu kilku sudoku człowiek zaczyna jakby skuteczniej je rozwiązywać tj. np. domyśla się jaki fragment najpierw sprawdzić bo np. tam jest największe prawodpodobieństwo odkrycia cyfry polecam rozwiązanie kilku sudoku, łatwiej wtedy będzie pisać program
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora
Andrey
Moderator


Dołączył: 27 Maj 2005
Posty: 331
Skąd: Łódź

PostWysłany: Pon Sty 02, 2006 11:39 am      Temat postu: Odpowiedz z cytatem Pisownia

Jezeli chcesz pisac bardzo typowy bruteforce to napewno przyda ci sie jakis algorytm z rekurencja z powrotami, aby w przypadku niepowodzenia algorytm wrocil do najlepiej dopasowanego miejsca musiasz byc jednak swiadom ze taki algorytm nie ma liniowego czasu wykonywania i w najbardziej zlych przypadkach moze wykonywac sie bardzo dlugo. Az mi sie nie chce wierzyc ze nigdzie nie znalazles sudoku-solvera :/
http://www.sudokusolver.co.uk/ <- chyba cos w JavaScript
http://www.sudoku-solver.com/free.htm <- w C++
http://www.di-mgt.com.au/sudoku.html <- w Excelu
http://www.scanraid.com/sudoku.htm <- krok po kroku w JavaScript chyba
http://sudoku.sourceforge.net/ <- tu napewno znajdziesz kod źródłowy bo to sourceforge aplet w Java
http://homepage.ntlworld.com/valleyway/solver.html <- brute force w javaScript
http://rightside.fissure.org/sudoku.cgi <- sudoku jako CGI
http://www.c-digital-art.co.uk/ <- nie wiem czy sa zordla ale podobniez VB

Do wyboru do koloru.
Pozdrawiam

_________________
learn UNIX, learn it good, learn it like a ninja would..
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora Numer GG
p4welo



Dołączył: 21 Wrz 2005
Posty: 145
Skąd: Wrocław/Wodzisław Śląski

PostWysłany: Nie Sty 08, 2006 2:59 pm      Temat postu: Odpowiedz z cytatem Pisownia

Wskazówka:
W każdym rzędzie i kolumnie iloczyn liczb musi wynosić
1*2*3*4*5*6*7*8*9 = 362880

_________________
Here comes the rain again, falling from the stars.
Drenched in my pain again, becoming who we are.
As my memory rests, but never forgets what I lost.
Wake me up when september ends.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Numer GG
Gość






PostWysłany: Nie Sty 08, 2006 3:09 pm      Temat postu: Odpowiedz z cytatem Pisownia

czyli 9!

;-)
Powrót do góry
samolot



Dołączył: 26 Sty 2006
Posty: 3195
Skąd: Toruń

PostWysłany: Pią Sty 27, 2006 1:29 pm      Temat postu: O algorytmie do SUDOKU Odpowiedz z cytatem Pisownia

Ja napisałem programik do rozwiązywania sudoku latem 2005r. Nie jest skończony, bo to mozolna praca , trochę brak czasu i cierpliwości.
Robiłem to chaotycznie i na wyczucie. Mój kolega jest fanem sudoku i to on mnie zainspirował.
Na temat metod rozwiązywania można przeczytać w książce Sudoku 1 i Sudoku 2 autorstwa Michaela Mepham, jest tam też zawarta partia diagramów do rozwiązania , podzielonych na łagodne, umiarkowane, trudne i diaboliczne. Ostatnio wróciłem do tematu i napisałem sobie taki schemat blokowy, który ma mi ułatwić pisanie procedur do tego programu. Założyłem ,że będzie kilka etapów rozwiązywania:
1- łatwy
2 -średnio trudny
3- trudny
Tu wymieniłem trzy ,ale jeśli diagram będzie bardzo trudny do rozwiązania to na pewno będą konieczne dalsze etapy.
Mój schemat blokowy na razie zawiera opis pierwszego etapu (patrz załącznik):



Opis algorytmu do sudoku.doc
 Opis:
Zawarty w pliku komentarz odwołujacy się do strony ksiązki dotyczy książki "Sudoku krok po kroku" autorstwa Carol Vorderman

Pobierz
 Nazwa pliku:  Opis algorytmu do sudoku.doc
 Wielkość pliku:  31 KB
 Pobierano:  628 raz(y)


_________________
Windows XP SP3 + VB 6.0 SP6 / Vista Home Basic SP2+ VB 6.0 SP6 / Vista Home Basic SP2+Microsoft VB 2008 EE + Framework 3.5
Proszę nie pisać do mnie prywatnych wiadomości w sprawach programowania , od tego jest forum.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Maniek
Gość





PostWysłany: Sro Cze 28, 2006 10:05 am      Temat postu: Algorytm tworzenia plansz Sudoku Odpowiedz z cytatem Pisownia

Czy ktoś wie jak tworzone są plansze Sudoku? Narazie napisałem program sudoku, w którym plansze wczytywane są z pliku. Ale to troche męczące zapisywanie tych plansz w pliku. Jest jakiś algorytm który potrafi stworzyć plansze w Sudoku?
Powrót do góry
samolot



Dołączył: 26 Sty 2006
Posty: 3195
Skąd: Toruń

PostWysłany: Sro Cze 28, 2006 9:27 pm      Temat postu: Odpowiedz z cytatem Pisownia

Ponieważ też napisałem taki programik (nie skończony) to jakieś tam przemyślenia mam. Zastosowałem kilka metod rozwiązywania sudoku krok po kroku, od łatwiejszych do coraz trudniejszych , ale na pewno nie wszystkich. Starałem się także rozwiązać jak najwięcej ręcznie, korzystając z kilku popularnych książek. Doszedłem do wniosku,że jeśli napisałbym program do końca (marzenie ściętej głowy) , który umiałby rozwiązać większość plansz sudoku (nie mówię wszystkich), to można by go wykorzystać do weryfikacji przypadkowo wstawionych cyfr i te , które mają rozwiązanie (a rozwiązanie jest tylko jedno)- można by kwalifikować jako gotowe sudoku do rozwiązania.
_________________
Windows XP SP3 + VB 6.0 SP6 / Vista Home Basic SP2+ VB 6.0 SP6 / Vista Home Basic SP2+Microsoft VB 2008 EE + Framework 3.5
Proszę nie pisać do mnie prywatnych wiadomości w sprawach programowania , od tego jest forum.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
marcin_an
Site Admin


Dołączył: 26 Maj 2005
Posty: 15312
Skąd: z drugiej strony Kabla

PostWysłany: Sro Cze 28, 2006 10:11 pm      Temat postu: Odpowiedz z cytatem Pisownia

Dla danej planszy sudoku może być więcej niż jedno prawidłowe
rozwiązanie, dlatego algorytm rozwiązujący jako test poprawności może nie być najlepszym pomysłem. Jeżeli wylosujemy pewną wypełnioną planszę i usuniemy z niej pewne liczby, to wersja rozwiazana może różnić się od pierwotnej i w ten sposób plansza zostanie odrzucona. Równocześnie stwierdzenie przez algorytm, że nie może rozwiazać planszy może być wewnętrznym problemem samego algorytmu. Przy złożoności samych algorytmów rozwiazujących nie widzę w tym sposobu na generowanie map.

W tym roku jako projekt semestralny musiałem przygotować kod generujący zadanie programowania liniowego reprezentujące sudoku i przekazać do programu rozwiazującego tego typu zadania. To zainspirowało mnie do napisania algorytmu rozwiązującego sudoku. Nie interesuje mnie tutaj akurat napisanie zawsze działającego i bezbłędnego algorytmu - takie już, z tego co wiem, są. Bardziej mnie zastanawiał algorytm ewolucyjny. Podstawową rzeczą jest tutaj ograniczenie warunków wejściowych oraz stworzenie dobrej funkcji oceniającej i właśnie to było moim celem. Algorytm narazie nie powstał (projekt broniłem zaledwie tydzień temu), ale na podstawie przemyśleń dochodzę do wniosku, że podobny sposób działania możnaby wykorzystać do tworzenia planszy sudoku.

Przepraszam za mało formalny język, ale chciałbym, by zrozumiały to także osoby, dla których wyrażenia w formie "Mamy macierz R, w której R_ij (i=1,2,...,9, j=1,2,...,9) to podzbiór M..." mogą być mniej jasne. Załóżmy, że każde pole planszy to zbiór, który może zawierać cyfry od '1' do '9'. Początkowo wszystkie 81 pól zawiera wszystkie cyfry. W pierwszym kroku dla któregoś pola wybieramy losowo pewną cyfrę, a następnie w odpowiednim wierszu, kolumnie i kwadracie usuwamy wszystkie wystąpienia tej cyfry. Operację powtarzamy, aż na każdym polu pozostanie tylko jedna cyfra. W kolejnym kroku usuwamy część liczb (pozostawiamy część pół pustymi) i otrzymujemy gotową planszę.

_________________
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Algorytmy + inżynieria oprogramowania Wszystkie czasy w strefie CET (Europa)
Idź do strony 1, 2, 3  Następny
Strona 1 z 3

 
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.28798 sekund, zapytan = 15
contact

| Darmowe programy i porady Jelcyna | VB4all | Promocje.biz | Tansze zakupy w Helionie | Skróć długi link |