Inspiration

We were inspired by flood-filling algorithms and Conway's game of life, and we wanted to make a program that combines them and creates an interactive application that expands upon both concepts.

What it does

Our program initially simulates Conway's game of life, but after a cell is activated a certain number of times, the "entropy" of its ortho-neighbors would increase. When the ortho-neighbors have a high enough entropy, they merge with the cell, creating a group of cells. This group is indicated with a new number. Groups would then act as individual cells and they would follow a modified ruleset based on the Game of Life.

How we built it

Each member did some of the coding on their own device using Java. We handled version control using a GitHub repository.

Challenges we ran into

It was difficult to calculate the neighbors of the groups of cells and remove duplicates. We solved this by using the set data structure and setting cells in the same group or on the same coordinates as equivalent to each other. It was also difficult to implement the proportional ruleset for whether cells live or die. Since the number of neighbors is variable as opposed to constant, we developed a system based on percentages instead of the numbers of neighbors.

Accomplishments that we're proud of

We built Conway's Game of Life from scratch and expanded it to include groups of cells and rules for combining the groups of cells together. We defined how these groups would interact with their neighboring cells and designed a consistent ruleset that defined their behavior.

What we learned

We practiced implementing different elements in Java and practiced applying different data structures.

What's next for Entropy of Life

We plan to expand the entropy settings and implement changes so that blobs separate again after their entropy falls below a certain threshold. This will make the system more dynamic so that patterns can continue for longer. We hope this can make a Turing-complete system, just like the original Game of Life.

Built With

Share this project:

Updates