
The Game of Life is not your typical computer game. It is a 'cellular automaton', and was invented by Cambridge mathematician John Conway. This game became widely known when it was mentioned in an article published by Scientific American in 1970. It consists of a collection of cells which, based on a few mathematical rules, can live, die or multiply. Depending on the initial conditions, the cells form various patterns throughout the course of the game.
It's a zero-player game, meaning that its evolution is determined by its initial state, requiring no further input. One interacts with the Game of Life by creating an initial configuration and observing how it evolves. It is Turing complete and can simulate a universal constructor or any other Turing machine. Learn more about Turing Completeness in the Learn More section!
Each cell with one or no neighbors dies, as if by solitude. Each cell with four or more neighbors dies, as if by overpopulation. Each cell with two or three neighbors survives.
Each cell with three neighbors becomes populated.
Turing completeness is a computational system that can compute every Turing-computable function is called Turing-complete. Alternatively, such a system is one that can simulate a universal Turing machine.
In computability theory, a system of data-manipulation rules (such as a computer's instruction set, a programming language, or a cellular automaton) is said to be Turing-complete or computationally universal if it can be used to simulate any Turing machine. This means that this system is able to recognize or decide other data-manipulation rule sets. Virtually all programming languages today are Turing-complete. The concept is named after English mathematician and computer scientist Alan Turing.
Each cell with one or no neighbors dies, as if by solitude. Each cell with four or more neighbors dies, as if by overpopulation. Each cell with two or three neighbors survives.
The chief use for cellular automata, however, is to model physical and biological systems. Cellular automata can often serve as simpler tools for modeling systems than traditional mathematical methods. They are ideal for modeling systems that—like cellular automata themselves—are composed of simple components that manifest complex behavior. A few examples are gas phenomena, urban development, immunological processes, and crystallization. The best known application of cellular automata, however, is modeling living systems. This application is the province of the emerging field of artificial life, which is concerned with modeling biological life or even creating an artificial form of life on a computer, in an attempt to fathom the mystery of the emergence of complex life forms in a universe of increasing entropy.
When I was first began development on this application, I carefully considered which language I wanted to use to tackle Conway's Game of life. Ultimately, I chose React. I know React well and I knew I could knock the Front End out of the park.
First things first, I got to work on the Grid itself and added the alogrithmic logic to get my desired functionality. I also used the immer dependency to generate a draft copy of the next grid before rendering it. After the game and all of its custom functions were completed, I started diving into the design of the web app itself. I defintely brought my vision to life and it was a blast!
Before I even began coding, I knew exactly what I wanted to do with the UI and over all design. And while some of my design elements added a few hurdles to jump over, I really feel those decsions were completely worth it for the end product. Go big or go home, am I right? I created the logo graphic for this application using Inkscape and Gimp.
If you would like to contact me to discuss this project or any other front-end project, please email me at: rodrigosibaja88@outlook.com