Giter VIP home page Giter VIP logo

gol's Introduction

Game of Life

Il presente pacchetto contiene un'applicazione CRA il quale implementa l'automa cellurare chiamato appunto "Game of Life" sotto forma di griglia HTML

Run Locally

Clone the project

  git clone https://github.com/dominicus-io/gol.git

Go to the project directory

  cd gol

Install dependencies

  yarn install

Start the server

  yarn start

Usage/Examples

Visualizzata la pagina bastera caricare un file txt tramite il pulsante Upload nel seguente formato:

.*.....
...*...
**..***

Il carattere "." rappresenta celle morte/inattive mentre il carattere "*" rappresenta celle in vita.

Tutte le righe devono essere della stessa lunghezza e gli unici caratteri ammessi sono quelli sopra descritti ho l'applicazione non carichera il file e mostrera un messaggio di errore.

Successivamente si potra premere il pulsante Start per avviare il gioco e l'applicazione iniziera a generare a cadenza di un secondo alla volta tutte le permutazioni della griglia seguendo le regole del gioco

Si possono utlizzare anche i pulsanti:

  • Next - Genera la prossima permutazione della griglia solo se il gioco non è avviato
  • Reset - Resetta la griglia allo stato iniziale di quando si era caricato il file solo se il gioco non è avviato
  • Stop - Ferma il gioco compare solo se è avviato

API Reference

Grid

type Grid = {
    alive: Array<number>;
    n_rows: number;
    n_cols: number;
}

Rappresenta lo stato di una griglia n_rows * n_cols contenente celle in vita agli indici presenti in alive.

Parameter Type Description
alive Array<number> Una lista ordinata di indici delle celle in vita
n_rows number Il numero di righe della griglia
n_cols number Il numero delle colonne della griglia

nextPerm(currentState: Grid)

Ritorna una lista ordinata degli indici delle prossime celle vive

Il funzionamento è molto semplice:
Per ogni elemento in currentState.alive si recuperano i vicini(sia inattivi sia vivi) e i vicini inattivi, la differenza tra il numero di vicini e il numero di vicini inattivi, se compreso tra 2 e 3 (inclusi), indicherà se l'elemento deve restare in vita, successivamente per ognuno dei vicini inattivi dell'elemento si recuperano, a loro volta, i vicini e si vanno a ricercare all'interno currentState.alive tramite ricerca binaria, se il numero dei match è uguale a 3 allora si aggiunge l'elemento inattivo all'interno della collezione degli elementi in vita.

La complessita temporale è di O(nlog(n)) dove n = currentState.alive.length

Parameter Type Description
currentState Grid Lo stato corrente della griglia

gol's People

Watchers

Domenico Omar Guzzi 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.