Skip to content

Given a checkerboard, this program looks for tilings of the checkerboard with various types of polyominoes, including dominoes, the two types of triominoes, and larger polyominoes.

Notifications You must be signed in to change notification settings

nicholascabrera/Polyominoes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Polyominoes

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.

image

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

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.

image

About

Given a checkerboard, this program looks for tilings of the checkerboard with various types of polyominoes, including dominoes, the two types of triominoes, and larger polyominoes.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages