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
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)
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.
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 🙂
Hej Paulina,
Do Pythona jest odpowiednik IntelliJ o nazwie PyCharm
https://www.jetbrains.com/pycharm/
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 😉
To nie magia – to było świadome 😉 to taka implementacja nieskończonej powierzchni. Wiem że mogłaby się odbić, ale ona woli przejść 😉
Cieszę się, że mój post przyczynił się do nawrotu Twoich wspomnień 🙂 pozdrawiam!
Ten tunel to niezły zwrot akcji! Spoko ta mrówka 😉