Vir

Takie zwykłe blogowanie.

Odnalezienie drogi

No i proszę, oto ona, odnaleziona droga. Algorytm ślepy poradził sobie z odnalezieniem drogi z jednego punktu do drugiego.

1000
0000
0000
0000
0020

0010
0000
0000
0000
0020

0000
0000
0000
0000
0010

Tutaj jeszcze drugi przykład.

10000000
00000000
00000000
00000020
00000000

00000010
00000000
00000000
00000020
00000000

00000000
00000000
00000000
00000010
00000000

Mamy dwa punkty. Punkt początkowy 1 i punkt końcowy 2. Punkty 0 są podestami na planszy. Naszym zadaniem jest przejść punktem 1 do miejsca, gdzie znajduje się punkt 2. Zrobiłem to w ten sposób. Najpierw ustaliłem rozmiar planszy, czyli szerokość i wysokość. Następnie stworzyłem tablicę dwuwymiarową. Ustaliłem punkty minimalne, czyli x_min, y_min, i maksymalne czyli x_max, y_max. Żeby przypadkiem nie wywaliło mnie poza planszę, bo wyskakuje wyjątek sygnalizujący błąd wykroczenia poza zakres tablicy.

Następnie ustaliłem punkt początkowy o wartości 1 oraz punkt końcowy o wartości 2. Współrzędne punktów są zapisane na planszy, a nie jako składowe punktów. Wyzerowałem planszę, naniosłem na nią punkty. Wyświetliłem ją. No i teraz tak, co zrobić żeby ten punkt 1 dotarł do punktu 2? Musi mieć takie same współrzędne. Tak więc równam wpierw współrzędną x punktu 1 i wyświetlam planszę, a następnie współrzędną y względem punktu 2. Tak więc wpierw punkt 1 ustawia się w tej samej kolumnie co punkt 2, a potem w wierszu.

Jak zmieniam pozycje punktów? Iteracjami. Wpierw w pętli while algorytm nalicza ile wystąpieć zostało mi do wyrównania punktu 1 z punktem 2, a następnie ustawia punkt po osi x dodając odpowiednią liczbę oczek do współrzędnej x punktu 1. Tak samo dla osi y. Po wykonaniu wszystkich czynności algorytm wyświetla plansze. Jest to zestawienie algorytmu ślepego mojego autorstwa. Dlaczego ślepego? Bo nie patrzy na to co nieistotne tylko idzie w odpowiednim kierunku.

Jest to algorytm bardzo elastyczny i szybki. W bardzo szybki sposób odnajduje drogę do wybranego punktu.