Biorąc pod uwagę zestaw płytek na siatce, chcę ustalić:
- Jeśli płytki tworzą zamkniętą figurę
- Jeśli płytki tworzą zamkniętą figurę, licząc boki planszy jako krawędź figury
- Jeśli jedno z dwóch poprzednich stwierdzeń jest prawdziwe, które dodatkowe płytki mieszczą się w załączonej figurze, początkowa forma płytek.
Gracz rozpocznie od naciśnięcia jednego kafelka, a następnie przeciągnięcia palcem na inne kafelki, aby utworzyć łańcuch płytek tego samego koloru. Będę sprawdzać, kiedy idę, aby sprawdzić, czy następny kafelek jest prawidłowy. Dawny. Jeśli gracz zaczyna na czerwonym kafelku, jego jedynym następnym prawidłowym ruchem jest sąsiadujący czerwony kafelek (przekątne się liczą). Kiedy użytkownik podnosi palec, muszę być w stanie sprawdzić 3 powyższe elementy.
Tak więc początkowo myślałem, że ponieważ za każdym razem, gdy szedłem, sprawdzałem ważność łańcucha , gdy gracz podniósł palec, mogłem sprawdzić, czy pierwszy i ostatni kafelek sąsiadują ze sobą. (Wiem już, że są tego samego koloru.) Gdyby były obok siebie, miałem przeczucie, że stworzyłem zamkniętą postać, i zamierzałem przyjść tutaj, aby sprawdzić, czy brakuje mi czegoś dużego, i dostać jakiś logiczny / matematyczny dowód, że moje przeczucie było prawidłowe (lub przykład, który dowodzi, że jest niepoprawny).
Ale wtedy pomyślałem o numerze 2: muszę także uwzględnić łańcuchy, które wykorzystują krawędź planszy jako bok załączonej figury. W takim przypadku pierwszy i ostatni element w łańcuchu nie przylegałyby do siebie, ale nadal miałbym zamkniętą figurę. Więc teraz wracam do punktu wyjścia.
Co mogę zrobić z tym łańcuchem współrzędnych siatki, aby dowiedzieć się, czy tworzą one zamkniętą figurę, czy nie? I raz ja nie wiem mam zamkniętą figurę, co jest najlepszym sposobem, aby uzyskać dodatkową listę wszystkich płytek, które mieszczą się wewnątrz jego granic?
Powyżej narysowałem zdjęcia 4 możliwych wyników tego testu.
Łańcuch nie tworzy zamkniętej figury.
Łańcuch tworzy zamkniętą figurę.
Jeśli policzysz boki planszy jako krawędź (lub więcej niż jedną krawędź) figury, łańcuch tworzy zamkniętą figurę.
Łańcuch tworzy zamkniętą figurę, ale istnieją dodatkowe punkty danych (prawnie wybrane przez użytkownika jako część łańcucha), które nie są częścią tworzonej figury.
Przypadek 4 jest najtrudniejszy, ponieważ musiałbyś wyodrębnić „dodatkowe” ogniwa łańcucha, aby znaleźć zamkniętą figurę i kawałki, które się w niej znajdują (ale nie wokół „niezamkniętego” obszaru).
Więc ... Czy ktoś ma pomysł na dobry sposób na rozwiązanie tego problemu, czy po prostu dla mnie punkt wyjścia? W tym momencie chodzę w kółko i przydałaby mi się kolejna para oczu.