• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pathfinder w JS

VPS Starter Arubacloud
+1 głos
276 wizyt
pytanie zadane 20 lipca 2015 w JavaScript przez Magicone Nałogowiec (45,100 p.)
Hej, ostatnio natknąłem się na challange, polegający na znalezieniu w dwuwymiarowym układzie współrzędnych najkrótszej drogi od punktu A do punktu B. Oczywiście na mapie są kolizje, zapisane w postaci #, na które nie można wchodzić. Algorytm, który napisałem(link na dole) dziwnie radzi sobie z podaną w skrypcie, przykładową trasą. Czy znalazłby się ktoś, kto mógłby stwierdzić, co w nim nie tak? Do wyboru został jeszcze floodfill, ale mega trapi mnie, dlaczego to nie chce działać. Tak, na większą skalę takie coś nie ma sensu, ale do jakiegoś prostego RPG mogłoby być może przydatne :P

 

Kod zamieszczam tutaj, nie chcę przypadkowo uszkodzić "struktury" forum: http://pastebin.com/TdFEyvHR

1 odpowiedź

+1 głos
odpowiedź 20 lipca 2015 przez Comandeer Guru (599,730 p.)
wybrane 24 lipca 2015 przez Magicone
 
Najlepsza
Hmm… Jakąś trasę zwraca. Pytanie jaką powinno zwracać ;) Masz przewidywany output?
komentarz 20 lipca 2015 przez Magicone Nałogowiec (45,100 p.)
Generalnie cały pathfinder polega na określeniu jak najkrótszej trasy, myślałem, żeby dodawać dobre tasy do zmiennej truePaths, a następnie wybierać najkrótszą z nich i zwracać, coś jednak nie chce mnie słuchać. :D
komentarz 21 lipca 2015 przez Comandeer Guru (599,730 p.)
Jak na razie to chyba 1 trasę znajduje? Prawdę mówiąc na chwilę obecną nie bardzo wiem jak to poprawić
komentarz 21 lipca 2015 przez Magicone Nałogowiec (45,100 p.)
Tak, cośtam daje. Ale rezultaty są.. no głupie po prostu. :D Przykładowo: 1,1; 2,1; 1,1; -> idąc na pozycję 2,1 z 1,1 ponownie wraca na 1,1. Algorytm powinien działać tak, że z każdej pozycji próbuje się poruszyć w górę/dół/prawo/lewo, rekurencyjnie porusza się na daną pozycję, jeśli nie ma kolizji, nie przekracza wymiarów mapy oraz nie był jeszcze na danej pozycji(1,1; 2,1; 1,1; trochę zaskakuje). Zakładam, że jest gdzieś błąd założenia, albo w składni się machnąłem jakoś - mimo tego, że przepisywałem go już 3 razy. :D
komentarz 24 lipca 2015 przez Magicone Nałogowiec (45,100 p.)
edycja 24 lipca 2015 przez Magicone

Znalazłem jeden błąd. Na starcie, gdy szukało kolizji i dodawało je do zmiennej received należało uwzględnić punkt A :) Teraz działa nieco normalniej(?), ale dalej nie zgodnie z tym, co chciałem osiągnąć. Ze względu na to, jaki cel miała pierwsza trasa( spójrz podpunkt a) na obrazku(kolejność) ) - received było zajęte i inne trasy nie mogły tędy biegnąć. Zatem błędem założenia było stworzenie jednego, globalnego received! :) Mimo, że odpowiedź uzyskałem sam daje Ci najlepszą, bo jedyny mi odpisałeś :P Co do samego algorytmu, w tym wypadku najoptymalniejsza trasa to b) lub c) :)

 

obrazek:

 

PS. javascript przy tym algorytmie wymięka - za dużo stosów tworzy :)

komentarz 24 lipca 2015 przez Comandeer Guru (599,730 p.)
JS czy przeglądarka? ;) być może io.js by wyrobiło
komentarz 24 lipca 2015 przez Magicone Nałogowiec (45,100 p.)
przegladarka, i dont doubt that :D

Podobne pytania

0 głosów
1 odpowiedź 158 wizyt
pytanie zadane 23 marca 2019 w JavaScript przez BT101 Stary wyjadacz (12,540 p.)
+1 głos
1 odpowiedź 395 wizyt
pytanie zadane 16 marca 2021 w JavaScript przez Adam Kowalski Użytkownik (630 p.)
0 głosów
1 odpowiedź 271 wizyt
pytanie zadane 19 czerwca 2018 w JavaScript przez Kiszony Użytkownik (630 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...