Dzień 20 - poszukiwanie potworów
To był jeden z najtrudnieszych dni. Składanie zdjęć satelitarnych z fragmentów to świetna zabawa, pod warunkiem, że się ten proces już wcześniej przećwiczyło. W zadaniu Jurassic Jigsaw można się było wykazać spostrzegawczością.

Najpierw popełniłam błąd w definicjach funcji przekształcających współrzędne punktów obrazu w transformacjach (obrotach i odbiciach względem osi).
Poniżej funkcja transformująca frament (tile
) w obrocie (wartość 0-3
oznaczająca odpowiednio obrót o 0, 90, 180, 270 stopni) i odbiciu
(wartość 0-2 oznaczająca odpowiednio: brak odbicia, odbicie horyzonralne
- symetria względem osi Y, odbicie wertykalne - symetria względem osi X). Rotacja i odbicie są operacjami przemiennymi, więc ich kolejność nie ma znaczenia: poniższy kod dokonuje transformacji obrazu przez złożenie obrotu i odbicia:
|
|
Minęło też dużo czasu zanim zrozumiałam, że układanie pełnego obrazu mogę rozpocząć od dowolnego elementu, a pozostałe ułożą się ładnie, jeśli będę przeszukiwać graf elementów "wszerz", dobierając te, które pasują do odpowiedniej krawędzi odpowiadającą jej stroną. Wcale nie muszę zaczynać od narożnika.
A ostatni błąd - klasyka gatunku! - to mój upór w wysyłaniu liczby znalezionych potworów, podczas gdy należało znaleźć liczbę znaków # nie należących do potwora. Nie wiem zresztą, czy skanowanie obrazu przesuwającym się "okienkiem", którego zawartość - spłaszczoną do jednego wiersza - sprawdzałam wyrażeniem regularnym o kształce potwora - to najlepsza strategia, ale tylko na taką było mnie stać.
Udało się. Mój kawałek morza z potworami poniżej:
