Witam,
mam problem, chciałem stworzyć mrówkę Langtona, lecz po ukończeniu nie działa poprawnie, punkt (mrówka) zamiast poruszać się wg ustalonych zasad miga w miejscu. Nie wiem co się dzieje, mam wrażenie, że problemem jest case po prawej stronie siedzący w długim case True/False, lecz starałem się na 3 sposoby to rozwiązać i zawsze był ten sam efekt migotania.
Zasady działania tego automatu komórkowego są proste, można je przeczytać na wiki: http://pl.wikipedia.org/wiki/Mr%C3%B3wka_Langtona.
Program jest w załączniku.
Może wyjaśnię krótko co tu się dzieje.
Te 2 wartości 10 i 10 określają w którym miejscu ma być mrówka początkowo, natomiast dwójka jest znacznikiem ułożenia mrówki, malutki case obraca ją w lewo lub w prawo, a wspomniany domniemany problematyczny case zmienia położenie mrówki.
Bardzo proszę o pomoc bo już na prawdę nie wiem w czym rzecz.
I z góry dziękuję
Mrówka Langtona
Mrówka Langtona
- Załączniki
-
- Ant_final.vi
- (35.26 KiB) Pobrany 338 razy
Re: Mrówka Langtona
Proszę:) Problemem było to, iż w wewnętrznym FOR co prawda zmieniałeś położenie i kierunek mrówki, ale tylko w danej iteracji tego FOR. Następna iteracja przywracała poprzednie wartości kierunku i położenia. Problem rozwiązałem używając w prosty sposób zmiennych lokalnych, dodatkowo zwiększyłem planszę i położenie początkowe by było widać ten charakterystyczny regularny wzór (i widać;) ), aczkolwiek przeszukiwanie całej macierzy dwoma pętlami FOR nie jest zbyt optymalnym rozwiązaniem.
Powodzenia w projekcie!
EDIT:
Dobra, stwierdziłem, że nie mogę zostawić tej wersji tak nieoptymalnej, więc dorzucam do postu plik Ant_final (2).vi
Dotarcie do regularnego wzoru trwa w drugiej wersji 40 sekund, w Twojej to około 90 sekund, więc różnica znaczna - zwłaszcza, że moja wersja ma czas prawdopodobnie niezależny od rozmiaru macierzy. Oczywiście miliseconds to wait ustawiłem na 0, aby program wykorzystywał 100% rdzenia i liczył tak szybko jak potrafi - do debuggingu wpisz sobie tam te 1000 ms lub wiecej. Tylko dorzuć do programu warunki jego zatrzymania po dotarciu mrówki do krawędzi, żeby nie liczył bez sensu w nieskończoność:)
Powodzenia w projekcie!
EDIT:
Dobra, stwierdziłem, że nie mogę zostawić tej wersji tak nieoptymalnej, więc dorzucam do postu plik Ant_final (2).vi

- Załączniki
-
- Ant_final (2).vi
- Wersja bardziej optymalna
- (19.7 KiB) Pobrany 354 razy
-
- Ant_final (1).vi
- Wersja nieoptymalna
- (24.12 KiB) Pobrany 306 razy
Re: Mrówka Langtona
Na prawdę bardzo, bardzo dziękuje za pomoc.
Niestety mam problem, bo ja dysponuje LabView w wersji 8.5 a Ty chyba w 11. z tego co pamiętam jest opcja by zapisywać z konwersją do jakiejś poprzedniej wersji. Bardzo bym był wdzięczny jeśli mógłbyś to zrobić.
Mam jeszcze pytanie czy może orientujesz się czy w Intensity Graph da się zmieniać kolorystykę pól?
Niestety mam problem, bo ja dysponuje LabView w wersji 8.5 a Ty chyba w 11. z tego co pamiętam jest opcja by zapisywać z konwersją do jakiejś poprzedniej wersji. Bardzo bym był wdzięczny jeśli mógłbyś to zrobić.

Mam jeszcze pytanie czy może orientujesz się czy w Intensity Graph da się zmieniać kolorystykę pól?
Re: Mrówka Langtona
Ach, przepraszam, byłem przekonany, że jak edytuję Twoją wersję pliku to LV automatycznie zapisze w takiej samej wersji a nie w nowszej... Oba pliki wrzucam tutaj jeszcze raz, mam nadzieję, że będzie okej.
Kolorki można ustawić w taki sposób: http://digital.ni.com/public.nsf/allkb/ ... 6F007C7B58
Kolorki można ustawić w taki sposób: http://digital.ni.com/public.nsf/allkb/ ... 6F007C7B58
- Załączniki
-
- Ant_final (2).vi
- Zoptymalizowana, 8.5
- (26 KiB) Pobrany 286 razy
-
- Ant_final (1).vi
- Niezoptymalizowana, 8.5
- (30.33 KiB) Pobrany 303 razy
Mrówka Langtona
Jeszcze raz bardzo dziękuję za pomoc. 
