This a final research project designed to test my knowledge of discrete mathematics, specifically challenging my knowledge of Graph Theory, Set Theory, and Recursion. As the description states, given some game of checkers, the program must find all the polyominoes enclosed. A polyomino is a plane geometric figure formed by joining one or more equal squares edge to edge. It is a polyform whose cells are squares. It may be regarded as a finite subset of the regular square tiling.
It must change on every turn, so it must be efficient enough not to slow down the game or cause significant lag between the polyomino view and the game view.
Most challengingly, it must also be accurate. This means an adequate knowledge of Graph and Set Theory must be used to boil the checkerboard down from a game into a set of vertices and edges. Then, utilizing an adjacency algorithm I developed which recursively checks connections between sets of vertices and edges for commonalities, groups of connected vertices are found and then displayed dynamically on the checkerboard.
![image](https://private-user-images.githubusercontent.com/35611847/356902492-104d9465-90c3-4ff7-b3d2-9a40889180c6.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjU4Mjc4MDQsIm5iZiI6MTcyNTgyNzUwNCwicGF0aCI6Ii8zNTYxMTg0Ny8zNTY5MDI0OTItMTA0ZDk0NjUtOTBjMy00ZmY3LWIzZDItOWE0MDg4OTE4MGM2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTA4VDIwMzE0NFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThjMzFiNzdmOGJkYjNmNGUyYjAzZjNlODkzYmIyNGQxMjMzZjE1YTU2NGU4YjBjNzg4MWJiZjRkMTRmNGNlZjMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.m2laUoMHBaHPMmp2hs9KKckzP0ZlAXLEKJYQWOnhF8A)
The actual game is on the left, while the polyomino preview is magnified and on the right side, as it's the important part of the project.
The flowchart of the aforementioned algorithm is documented below.