Algorytmy


Sudoku – algorytm rozwiązujący łamigłówkę

Zaprezentuję dzisiaj program łamiący sudoku. Co prawda nawet na wikipedii jest link do metody łamiącej (podobno) każde sudoku, lecz ja mam największą frajdę, jak sobie samemu coś wymyślę i to działa póżniej. Algorytm powinien sobie radzić z każdym sudoku które da się rozwiązać, aczkolwiek głowy nie daje i mogą się znaleźć takie, których nie rozwiążę. Testowałem na ponad 10 niby najtrudniejszych i radził sobie bez problemu.

Początkowo zacząłem pisać skrypt w JavaScript pod przeglądarką. Okazało się, że stos jest za płytki albo są jakieś inne ograniczenia ilości zagłębień bo nie pozwalały mi browsery na wykonanie wymaganych obliczeń. Więc przepisałem kod na ruby. Poszło całkiem gładko :)

Używam systemu Linux – Ubuntu 10.10 – ruby 1.9.2p136. Jeśli chcesz mieć 100% pewności, że wszystko zadziała tak jak w opisie, ogarnij podobną konfigurację, albo przynajmniej tą samą wersję rubiego. A więc do dzieła!

(czytaj dalej…)


Tetris – część 1 (Algorytm rotacji klocków)

Jak już pisałem wcześniej przeglądarka internetowa daje nam olbrzymie możliwości. Zaprezentuję dzisiaj jak napisać grę TETRIS. Chyba nikomu nie muszę wyjaśniać o co w niej chodzi. Jeżeli jednak ktoś nie wie, zapraszam pod http://pl.wikipedia.org/wiki/Tetris.

W części pierwszej zaprezentuję jak stworzyć silnik do generowania i obracania klocków, w czyściutkim JavaScript. Jeszcze do niedawna sądzono, że jest do bardziej zabawka niż język z prawdziwego zdarzenia. Według mnie, jest to wysokopoziomowy kombajn, który wymiata możliwościami, ale też ciężko się niekiedy w nim połapać.

Mam nadzieję, że masz co nieco pojęcia o programowaniu w JS, ale postaram się przybliżyć pewne techniki, które wymagają nieco głębszej znajomości języka.

Silniczek oprzemy na interfejsie który będzie potrafił 3 rzeczy.

  1. create(type) -> Tworzy klocek (Tetramino) o podanym typie
  2. rand() -> tworzy klocek o losowym typie
  3. rotate(k) -> obraca klocek o 90° w przeciwną stronę do ruchu wskazówek zegara
(czytaj dalej...)

  • Kontakt

    mail: firma[at]programista[dot]it
    tel: 511 138 596

  • Kalendarium Wpisów

    Maj 2012
    P W Ś C P S N
    « lut    
     123456
    78910111213
    14151617181920
    21222324252627
    28293031  
  • © 1996-2010 Programowanie - Webmastering. Wszystkie prawa zastrzeżone.
    iDream theme by Templates Next | śmieszne teksty Społeczność Wiśniowa Góra Wiśniowa Góra