Zabawa półprzezroczystymi kółkami i algorytmem genetycznym

Cała zabawa została zaproponowana na serwisie stackoverflow.com. Napisałem program, który układa obrazki z półprzezroczystych kół. Teraz jestem w stanie pokazać pierwsze przyzwoite rezultaty.

Program nie jest jeszcze kompletny. Na razie działa algorytm genetyczny przetważający obrazek na postać wektorową i renderowanie tej postaci wektorowej do formatu .ppm.

Do rzeczy. Dostępne są źródła pierwszego publicznego wydania. Licencja GPL2+

  • Tylko lua. Bez żadnych bibliotek. Wystarczy działający interpreter i można się bawić.
  • Testy modułowe. W paczce jest egzemplarz luaunit z rozszerzonym zestawem assertów.
  • Obsługa formatu .ppm (tzn. wariant P6, zwany również plain).

Obowiązkowym przykładem jest Lena. Ze względu na ślamazarność kodowania obrazu wziąłem jakiś mniejszy egzemplarz. Kanoniczny ma rozmiar 512x512. Kodowanie trwało ok. pół godziny.

Lena Lena zakodowana

Wnioski z projektu:

  • Warto by przyjrzeć się jakimś gotowym frameworkom obiektowym dla lui. Brak oficjalnych idiomów potrafi zmęczyć człowieka.
  • Algorytm genetyczny dobrze spełniający swoje zadanie to nieoczywista sprawa.
  • Framework luaunit przyzwoicie zdaje egzamin, gdy nie potrzeba mock-upowania mnóstwa rzeczy.
  • Warto by się zakręcić wokół zestawu narzędzi do programowania luowego. Przy takiej zabawie profiler by się przydał.