Generowanie sudokuNajwiększym (choć wcale nie tak dużym) wyzwaniem podczas robienia sudoku jest generowanie planszy. Musimy zadbać o to, żeby plansz było dużo, żeby były poprawne (i miały jedno, unikalne rozwiązanie) i żeby można było wybrać poziom trudności. Okazuje się, że rozwiązanie jest bardzo proste i powinno zadowolić każdego.
Jak więc wygląda to proste rozwiązanie? Weźmy dowolną planszę o odpowiednim poziomie trudności i przeróbmy ją tak, żeby wyglądała na unikalną. Gracze nie powinni zauważyć różnicy. Jeszcze tylko trochę terminologii -- grupami pionowymi (poziomymi) będę nazywał grupy trzech kolejnych kolumn (wierszy) na planszy. Mamy więc trzy grupy pionowe i trzy grupy poziome. Sposób w jaki należy przerabiać planszę:
Zatem planszę można przerobić na 609 499 054 080 sposobów. Sporo, prawda? Oczywiście nie wszystkie są unikalne (np. gdy plansza ma dwie puste kolumny), ale jest tego wystarczająco dużo. Łatwo zauważyć, że plansza będzie wciąż poprawna i poziom trudności zostanie zachowany. Teraz wystarczy dla każdego poziomu trudności przypożądkować kilka plansz 'startowych' i mamy kompletny system generowania sudoku. Pozostaje tylko jedno pytanie -- skąd wziąć plansze startowe i jak ocenić ich poziom trudności? W sieci można znaleźć różnego rodzaju strony, które rozwiązują sudoku, niektóre z nich podają też ocenę trudności. Pozwala to już na dość dobre zbudowanie bazy plansz 'startowych' i zapewnienie, że żadne z nich nie są izomorficzne ;)
Podsumowanie rokuZa kilka dni zbliża się koniec roku i nic ciekawego już się raczej nie wydarzy, więc czas na małe podsumowanie ;)
Trochę się w tym roku działo, a kolejny zapowiada się jeszcze ciekawiej -- co z tego wyjdzie? Czas pokaże :)
freedoku.net ma już rok!Rok temu udostępniłem pierwszą wersję freedoku -- darmowego sudoku przez przeglądarkę. Niedawno przedłużyłem ważność domeny, więc freedoku zostanie z nami na trochę dłużej ;)
A jak to się zaczęło?
Miesiąc temu próbowałem znaleźć sudoku działające w przeglądarce, w które da się dość przyjemnie grać. Niestety, nic nie spełniło moich oczekiwań, więc... zrobiłem własne ;)
Gra nie odniosła ogromnego sukcesu, ale nie spotkała jej też spektakularna porażka ;). Freedoku ma codziennie kilka/kilkanaście wejść, więc nie jest źle. Zwłaszcza, że nie jest w żaden sposób promowane.
W dalszej części garść statystyk z google analytics.
Freedoku w wersji do drukuPlansze z freedoku można wydrukować, ale czy nadają się one do druku na ulotce, gazecie itp.? Nie bardzo. Wersja na stronie do druku jest specjalnie uproszczona (oszczędzanie tuszu / tonera) i drukowaniem zajmuje się tak naprawdę przeglądarka.
Potrzebowałem planszę do druku z 300 DPI, a to wymaga przygotowania grafiki w odpowiedniej rozdzielczości -- zwykłe przeskalowanie nie da wystarczająco dobrych rezultatów.
Napisałem program, który generuje plansze z freedoku dla zadanego DPI i boku planszy w cm, a efekt wyszedł całkiem pozytywny. Plansza o boku 7 x 7 cm przy 300 DPI wygląda tak:
Całość zaimplementowana w C#, przy okazji opiszę pewnie jakieś wskazówki odnośnie robienia podobnych rzeczy. A do czego mi potrzebne takie grafiki? W ciągu kilku tygodni powinna pojawić się na to pytanie odpowiedź ;).
Aktualizacja freedokuJest to pierwszy z wpisów o freedoku na moim blogu. Z czasem pojawi się tu ich więcej i choć głównie będą informować o aktualizacjach, pojawią się też takie, które będą opisywać rzeczy dziejące się pod maską.
Jeżeli ktoś znajdzie jakieś błędy, to proszę o napisanie w komentarzu lub na e-mail. Miłego grania.