stary kod – Mrówka Langtona – #0E

Przeglądając RSS rzucił mi się w oczy nostalgiczny wpis opisujący pierwszą stronę www. Kolejny dzień przyniósł wpis o próbach implementacji algorytmu mrówkowego. Te dwa wpisy poruszyły jakąś klapkę w mojej pamięci i przypomniał mi się czas kiedy miałam potrzebę sprawić, żeby programowanie znowu sprawiło mi trochę radości. Poszperałam trochę w starych kodach i znalazłam to czego szukałam.

Imentacja Mrówki Langtona zrobiona w lipcu 2014. Wykorzystałam do tego Pythona i pygame. Wrzuciłam źródła na githuba. Nawet dwa razy, bo IntelliJ nie miał wsparcia dla Pythona i wyrzucił mi importy, których nie mógł rozwiązać 😛

Większość programistów kojarzy automaty komórkowe, nawet jeśli nie pod tą nazwą, to duża część zetknęła się z ’Grą w życie’ Conwaya.

Jeśli chodzi o mrówkę, algorytm jest prosty: mamy planszę złożoną z białych komórek i jedną wyróżnioną komórkę – nazywaną mrówką. Mrówka porusza się w następujący sposób:

  • jeśli jest na polu białym obraca się o 90 stopni w lewo, zmienia kolor komórki na czarny i robi krok do przodu
  • jeśli jest na polu czarnym to obraca się o 90 stopni w prawo, zmienia kolor komórki na biały i robi krok do przodu

anim

Najciekawsze w tym prostym algorytmie jest to, że, po około 10000 kroków tego pozornego chaosu mrówka zaczyna drążyć regularny tunel 🙂

A jeszcze ciekawsze ruchy można zaobserwować jeśli na planszę wypuścimy więcej niż jedną mrówkę na raz: (10 mrówek – plansza 100 na 100 pikseli)

anim

Na początku po prawej stronie można zobaczyć zielone i czerwone mrówki, które wzajemnie zjadają swoje ślady.

A tu symulacja dla 30 mrówek wypuszczonych na planszę 300 na 300 pikseli.

anim.gif

Gdybym dzisiaj miała zaprogramować to jeszcze raz pewnie zrobiłabym większą mrówkę, ale wtedy nie miałam takiej rozdzielczości ekranu i wyglądało to dobrze 😉

Zaczynam się zastanawiać, czy gdzieś w odmętach dysku nie mam więcej takich małych programów, o których już nie pamiętam, a mogłyby posłużyć jako inspiracja do kolejnych wpisów. Zawsze to lepiej widzieć swój postęp na starych kawałkach kodu 🙂

0 thoughts on “stary kod – Mrówka Langtona – #0E

  1. Strasznie ciekawy wpis… za to w kodzie znalazłem buga 😀 Odpaliłem skrypt z dwiema mrówkami, jedna z nich mi się zainicjowała blisko krawędzi… i kiedy wykonała ruch poza krawędź, pojawiała się po drugiej stronie ekranu, magicznie tam przeskakując 😉

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.