Giter Club home page Giter Club logo

se-hw02's Introduction

Run on Repl.it Build Status MIT license DOI

Software Engineering 2020, Homework 2

Conway's Game Of Life

Game of Life

The Game of Life (an example of a cellular automaton) is played on an infinite two-dimensional rectangular grid of cells. Each cell can be either alive or dead. The status of each cell changes each turn of the game (also called a generation) depending on the statuses of that cell's 8 neighbors. Neighbors of a cell are cells that touch that cell, either horizontal, vertical, or diagonal from that cell.

The initial pattern is the first generation. The second generation evolves from applying the rules simultaneously to every cell on the game board, i.e. births and deaths happen simultaneously. Afterwards, the rules are iteratively applied to create future generations. For each generation of the game, a cell's status in the next generation is determined by a set of rules. These simple rules are as follows:

  1. If the cell is alive, then it stays alive if it has either 2 or 3 live neighbors
  2. If the cell is dead, then it springs to life only in the case that it has 3 live neighbors

There are, of course, as many variations to these rules as there are different combinations of numbers to use for determining when cells live or die. Conway tried many of these different variants before settling on these specific rules. Some of these variations cause the populations to quickly die out, and others expand without limit to fill up the entire universe, or some large portion thereof. The rules above are very close to the boundary between these two regions of rules, and knowing what we know about other chaotic systems, you might expect to find the most complex and interesting patterns at this boundary, where the opposing forces of runaway expansion and death carefully balance each other. Conway carefully examined various rule combinations according to the following three criteria:

  1. There should be no initial pattern for which there is a simple proof that the population can grow without limit.
  2. There should be initial patterns that apparently do grow without limit.
  3. There should be simple initial patterns that grow and change for a considerable period of time before coming to an end in the following possible ways:
    • Fading away completely (from overcrowding or from becoming too sparse).
    • Settling into a stable configuration that remains unchanged thereafter, or entering an oscillating phase in which they repeat an endless cycle of two or more periods.

Further Reading : Wikipedia

Programming Languages used :

  1. Go
  2. Scala
  3. Dart

Instructions to run the code :

  1. Click on Run on Repl.it badge
  2. Edit .replit file for each language as follows
    • Go
      language = "go"
      run = "go run code/go/gameoflife.go""
      
    • Scala
      language = "scala"
      run = "scala code/scala/gameoflife.scala"
      
    • Dart
      language = "dart"
      run = "dart code/dart/gameoflife.dart"
      
  3. Click on Run on the top of the page.
  4. After you are done, fill out this survey form for analysis.

Team Members :

  1. Steve Menezes
  2. Aadil Khan
  3. Durga Devi Mummadi
  4. Nikitha Thotireddy
  5. Bhavesh Agrawal

se-hw02's People

Contributors

bhavesh242 avatar durga71 avatar aadilk97 avatar stevemenezes avatar nikithareddyt avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.