Base de reglas y area de un automata celular que simula un juego de la vida. Los automatas celulares son modelos de sistemas dinamicos que evoluciona en forma de pasos discretos y que pueden modelizar sistemas naturales basados en un conjunto, mas o menos grande, de seres simples que interactuan unos con otros de forma local, por cercania. En la teoria, en la decada de los 40, los automatas celulares fueron plateados por Konrad Zuse y Stanislaw Ulam. En la practica, en los años 50 y dentro de la informatica, el concepto de automata celular fue planteado por John von Neumann. // Esta base de reglas emula a un automata celular donde un conjunto de celulas: a) se mueven de forma libre por el area, b) reproduciendose por parejas y engendrando entre 2 una nueva celula y c) tambien pueden morir cuando: - estan demasiado juntas (superpoblacion) o, por el contrario, - demasiado aisladas.
//////////////////////////////////////////////////////////////////////////////
Set CelAre = AreaBuild(
[["···············",
"···············",
"···············",
"······O·O······",
"····O··O··O····",
"······O·O······",
"···············",
"···············",
"···············"]]);
//////////////////////////////////////////////////////////////////////////////
PutDescription("Area para un automata celular.", CelAre);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Set CelRul = SetOfSet(
RuleBuild([["OO => ··"]]), // Muerte por superpoblacion
RuleBuild([["O => ·",
"O ·"]]), // Muerte por superpoblacion
RuleBuild([["··· => ···",
"·O· ···",
"··· ···"]]), // Muerte por soledad
RuleBuild([["O·O => ·O·",
"··· O·O"]]), // Reproduccion hacia abajo
RuleBuild([["··· => O·O",
"O·O ·O·"]]), // Reproduccion hacia arriba
RuleBuild([["O· => ·O",
"·· O·",
"O· ·O"]]), // Reproduccion lateral
RuleBuild([["·O => O·",
"·· ·O",
"·O O·"]]), // Reproduccion lateral
RuleBuild([["O· => ··",
"·· ·O"]]), // Movimiento diagonal
RuleBuild([["·O => ··",
"·· O·"]]), // Movimiento diagonal
RuleBuild([["·· => ·O",
"O· ··"]]), // Movimiento diagonal
RuleBuild([["·· => O·",
"·O ··"]])); // Movimiento diagonal
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Base de reglas para probar el comportamiento de un automata celular.",
CelAre);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// FILE : cel.tol
// AUTHOR : http://www.asolver.com
// PURPOSE : Base de reglas y area de un automata celular que simula un juego
// de la vida.
//
// Los automatas celulares son modelos de sistemas dinamicos que evoluciona en
// forma de pasos discretos y que pueden modelizar sistemas naturales basados
// en un conjunto, mas o menos grande, de seres simples que interactuan unos
// con otros de forma local, por cercania.
//
// En la teoria, en la decada de los 40, los automatas celulares fueron
// plateados por Konrad Zuse y Stanislaw Ulam.
//
// En la practica, en los años 50 y dentro de la informatica, el concepto de
// automata celular fue planteado por John von Neumann.
//
// Esta base de reglas emula a un automata celular donde un conjunto de
// celulas:
// a) se mueven de forma libre por el area,
// b) reproduciendose por parejas y engendrando entre 2 una nueva celula y
// c) tambien pueden morir cuando:
// - estan demasiado juntas (superpoblacion) o, por el contrario,
// - demasiado aisladas.
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// CONSTANTS
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Set CelAre = AreaBuild(
[["···············",
"···············",
"···············",
"······O·O······",
"····O··O··O····",
"······O·O······",
"···············",
"···············",
"···············"]]);
//////////////////////////////////////////////////////////////////////////////
PutDescription("Area para un automata celular.", CelAre);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Set CelRul = SetOfSet(
RuleBuild([["OO => ··"]]), // Muerte por superpoblacion
RuleBuild([["O => ·",
"O ·"]]), // Muerte por superpoblacion
RuleBuild([["··· => ···",
"·O· ···",
"··· ···"]]), // Muerte por soledad
RuleBuild([["O·O => ·O·",
"··· O·O"]]), // Reproduccion hacia abajo
RuleBuild([["··· => O·O",
"O·O ·O·"]]), // Reproduccion hacia arriba
RuleBuild([["O· => ·O",
"·· O·",
"O· ·O"]]), // Reproduccion lateral
RuleBuild([["·O => O·",
"·· ·O",
"·O O·"]]), // Reproduccion lateral
RuleBuild([["O· => ··",
"·· ·O"]]), // Movimiento diagonal
RuleBuild([["·O => ··",
"·· O·"]]), // Movimiento diagonal
RuleBuild([["·· => ·O",
"O· ··"]]), // Movimiento diagonal
RuleBuild([["·· => O·",
"·O ··"]])); // Movimiento diagonal
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Base de reglas para probar el comportamiento de un automata celular.",
CelAre);
//////////////////////////////////////////////////////////////////////////////
ChRules.RandRecursive programa de aplicacion de reglas de rectangulos de caracteres
2015 asolver.com | Aviso legal | XHTML | Δ Θ Ξ | Creative Commons | Mapa y funciones del sitio