Secciones de la página

eng. tol


Declaraciones


Funciones


Time oriented language


Árbol de ficheros

Funciones

Set EngSol()

Real EngJavascript()

Tol

Artículos del sitio

Presentación de Tol

Todos los programas

Simuladores visuales

Sitios que me gustan

Por categorías

Algoritmia

Búsqueda y ordenación

Computación fisiológica

Editorial y edición

Gráficos de datos

Herramientas y utilidades

Hipertexto

Informática forense

Lectura óptica de datos

Metaprogramación

No determinista

Ofimática

Recursión e iteración

Reglas y restricciones

Series y estadística









eng.tol de ChRules.Iterative

Funciones para el motor de reglas de caracteres, engine.

Declaraciones

Funciones

  • Set EngSol(Set linSet, Set rulSet, Real maxSta, Text preFil, Real numCol, Real rndCtr)
    Retorna el resultado de aplicar el conjunto de reglas rulSet al area linSet hasta que no haya reglas aplicables o se alcance el numero maximo de estados (ciclos) maxSta. Cada vez que haya un cambio de estado lo visualiza y los va escribiendo en el fichero htmFil, la traza se escribe como una tabla html de numCol columnas.
  • Real EngJavascript(Text dirSol, Text dirSrc)
    Reune todos los casos realizados y los prepara para que su resolucion pueda ser simulada por un simulador visual Javascript. Genera 2 ficheros en lenguaje Javascript: a) un fichero indice con un array en forma de tabña que contiene todos los casos resueltos, cada fila es (array de pasos, comentario), el nombre del array de pasos es el nombre del fichero sin extension y el comentario es igual cambiando el _ por blanco y b) un fichero mas grande, con tantos arrays como casos resueltos, cada uno de estos arrays contiene todos los pasos de resolucion del caso. El nombre de los arrays esta formado por el nombre de los ficheros. Para la generacion de estos 2 ficheros emplea 2 ficheros semilla que tienen la cabecera de comentarios de los programas Javascript. Recibe como parametros: a) el directorio de casos resueltos de entrada y b) el directorio de salida donde se escribira el codigo Javascript, asume que los ficheros semilla Javascript estan en este mismo directorio y los nombres de los ficheros para el array indice y el banco de datos son fijos. Retorna el numero de casos resueltos.

Funciones

Set EngSol()

//////////////////////////////////////////////////////////////////////////////
Set EngSol(Set linSet,  // Area a resolver
           Set rulSet,  // Conjunto de reglas
           Real maxSta, // Numero maximo de iteraciones (estados)
           Text preFil, // Ruta y nombre del fichero sin extension
           Real numCol, // Numero de columnas de la tabla de estados
           Real rndCtr) // 0, determinista, 1 aleatorio y >0 <1 pseudoaletorio
//////////////////////////////////////////////////////////////////////////////
{
  Real AreTrc(linSet, 0, preFil, numCol, 0); // estado 0, abre los ficheros

  Set  staMem = Copy(linSet); // Memoria de estado
  Real staNum = 1;            // Numero de estado (el inical es el 0)
  Real end    = Copy(FALSE);

  Real While(Not(end),
  {
    Set new = AreCic(staMem, RulRnd(rulSet,rndCtr));
    If(EQ(Card(new),0), Real(end:=TRUE), // Termino con exito
    {
      // Se ha alcanzado un nuevo estado
      Real AreTrc(new, staNum, preFil, numCol, 1); // Nuevo estado, en ciclo
      Set (staMem:=Copy(new)); // Memorizar el nuevo estado
      Real(staNum:=staNum+1);  // Probar con el siguiente estado
      If(GT(staNum,maxSta), Real(end:=TRUE), // Termino sin exito
                            FALSE)           // Cicla
    })
  });
  Real AreTrc(Empty, 0, preFil, numCol, 2); // Cierra, fin del ciclo

  staMem
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el resultado de aplicar el conjunto de reglas rulSet al area linSet
hasta que no haya reglas aplicables o se alcance el numero maximo de estados
(ciclos) maxSta.
Cada vez que haya un cambio de estado lo visualiza y los va escribiendo en el
fichero htmFil, la traza se escribe como una tabla html de numCol columnas.",
EngSol);
//////////////////////////////////////////////////////////////////////////////

Real EngJavascript()

//////////////////////////////////////////////////////////////////////////////
Real EngJavascript(Text dirSol, // Directorio de casos resueltos
                   Text dirSrc) // Directorio de Javascript
//////////////////////////////////////////////////////////////////////////////
{
  Set  filSet = DirExtAll(dirSol, "js", FALSE, TRUE); // Todos los ficheros
  Text filCod = DirReadFiles(dirSol, "js", "\n");     // Todo los scripts

  // Contruir el array de casos, indice
  Set  arrSet = For(1, Card(filSet), Text(Real filPos) // Para los casos
  {
    Text arrNam = GetFilePrefix(filSet[filPos]);
    Text arrLbl = Replace(arrNam, "_", " ");
    Text arrNew = "new Array(" + arrNam + ", '" + arrLbl + "')";
    Text arrEnd = If(Card(filSet)==filPos, "", ",\n"); // El ultimo diferente
    "  "+arrNew+arrEnd
  });
  Text arrTxt = SetSum(arrSet); // Une todos los textos
  Text arrSed = dirSrc+"/simulatorarray.sed"; // Fichero semilla
  Text arrPth = Replace(arrSed,".sed",".js"); // Fichero javascript
  Text WriteFile(arrPth, Replace(ReadFile(arrSed), "_ARR_", arrTxt));

  // Construir el banco de datos de pasos, steps, de los casos
  Text sdbSed = dirSrc+"/simulatordb.sed";  
  Text sdbPth = Replace(sdbSed,".sed",".js");
  Text WriteFile(sdbPth, Replace(ReadFile(sdbSed), "_SDB_", filCod));

  Card(filSet) // Numero de casos
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Reune todos los casos realizados y los prepara para que su resolucion pueda
ser simulada por un simulador visual Javascript.
Genera 2 ficheros en lenguaje Javascript:
a) un fichero indice con un array en forma de tabña que contiene todos los
   casos resueltos, cada fila es (array de pasos, comentario),
   el nombre del array de pasos es el nombre del fichero sin extension y
   el comentario es igual cambiando el _ por blanco y
b) un fichero mas grande, con tantos arrays como casos resueltos,
   cada uno de estos arrays contiene todos los pasos de resolucion del caso.
El nombre de los arrays esta formado por el nombre de los ficheros.
Para la generacion de estos 2 ficheros emplea 2 ficheros semilla que tienen
la cabecera de comentarios de los programas Javascript.
Recibe como parametros:
a) el directorio de casos resueltos de entrada y
b) el directorio de salida donde se escribira el codigo Javascript,
   asume que los ficheros semilla Javascript estan en este mismo directorio y
   los nombres de los ficheros para el array indice y
   el banco de datos son fijos.
Retorna el numero de casos resueltos.",
EngJavascript);
//////////////////////////////////////////////////////////////////////////////

Time oriented language

//////////////////////////////////////////////////////////////////////////////
// FILE    : eng.tol
// AUTHOR  : http://www.asolver.com
// PURPOSE : Funciones para el motor de reglas de caracteres, engine.
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
// FUNCTIONS
//////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////
Set EngSol(Set linSet,  // Area a resolver
           Set rulSet,  // Conjunto de reglas
           Real maxSta, // Numero maximo de iteraciones (estados)
           Text preFil, // Ruta y nombre del fichero sin extension
           Real numCol, // Numero de columnas de la tabla de estados
           Real rndCtr) // 0, determinista, 1 aleatorio y >0 <1 pseudoaletorio
//////////////////////////////////////////////////////////////////////////////
{
  Real AreTrc(linSet, 0, preFil, numCol, 0); // estado 0, abre los ficheros

  Set  staMem = Copy(linSet); // Memoria de estado
  Real staNum = 1;            // Numero de estado (el inical es el 0)
  Real end    = Copy(FALSE);

  Real While(Not(end),
  {
    Set new = AreCic(staMem, RulRnd(rulSet,rndCtr));
    If(EQ(Card(new),0), Real(end:=TRUE), // Termino con exito
    {
      // Se ha alcanzado un nuevo estado
      Real AreTrc(new, staNum, preFil, numCol, 1); // Nuevo estado, en ciclo
      Set (staMem:=Copy(new)); // Memorizar el nuevo estado
      Real(staNum:=staNum+1);  // Probar con el siguiente estado
      If(GT(staNum,maxSta), Real(end:=TRUE), // Termino sin exito
                            FALSE)           // Cicla
    })
  });
  Real AreTrc(Empty, 0, preFil, numCol, 2); // Cierra, fin del ciclo

  staMem
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el resultado de aplicar el conjunto de reglas rulSet al area linSet
hasta que no haya reglas aplicables o se alcance el numero maximo de estados
(ciclos) maxSta.
Cada vez que haya un cambio de estado lo visualiza y los va escribiendo en el
fichero htmFil, la traza se escribe como una tabla html de numCol columnas.",
EngSol);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Real EngJavascript(Text dirSol, // Directorio de casos resueltos
                   Text dirSrc) // Directorio de Javascript
//////////////////////////////////////////////////////////////////////////////
{
  Set  filSet = DirExtAll(dirSol, "js", FALSE, TRUE); // Todos los ficheros
  Text filCod = DirReadFiles(dirSol, "js", "\n");     // Todo los scripts

  // Contruir el array de casos, indice
  Set  arrSet = For(1, Card(filSet), Text(Real filPos) // Para los casos
  {
    Text arrNam = GetFilePrefix(filSet[filPos]);
    Text arrLbl = Replace(arrNam, "_", " ");
    Text arrNew = "new Array(" + arrNam + ", '" + arrLbl + "')";
    Text arrEnd = If(Card(filSet)==filPos, "", ",\n"); // El ultimo diferente
    "  "+arrNew+arrEnd
  });
  Text arrTxt = SetSum(arrSet); // Une todos los textos
  Text arrSed = dirSrc+"/simulatorarray.sed"; // Fichero semilla
  Text arrPth = Replace(arrSed,".sed",".js"); // Fichero javascript
  Text WriteFile(arrPth, Replace(ReadFile(arrSed), "_ARR_", arrTxt));

  // Construir el banco de datos de pasos, steps, de los casos
  Text sdbSed = dirSrc+"/simulatordb.sed";  
  Text sdbPth = Replace(sdbSed,".sed",".js");
  Text WriteFile(sdbPth, Replace(ReadFile(sdbSed), "_SDB_", filCod));

  Card(filSet) // Numero de casos
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Reune todos los casos realizados y los prepara para que su resolucion pueda
ser simulada por un simulador visual Javascript.
Genera 2 ficheros en lenguaje Javascript:
a) un fichero indice con un array en forma de tabña que contiene todos los
   casos resueltos, cada fila es (array de pasos, comentario),
   el nombre del array de pasos es el nombre del fichero sin extension y
   el comentario es igual cambiando el _ por blanco y
b) un fichero mas grande, con tantos arrays como casos resueltos,
   cada uno de estos arrays contiene todos los pasos de resolucion del caso.
El nombre de los arrays esta formado por el nombre de los ficheros.
Para la generacion de estos 2 ficheros emplea 2 ficheros semilla que tienen
la cabecera de comentarios de los programas Javascript.
Recibe como parametros:
a) el directorio de casos resueltos de entrada y
b) el directorio de salida donde se escribira el codigo Javascript,
   asume que los ficheros semilla Javascript estan en este mismo directorio y
   los nombres de los ficheros para el array indice y
   el banco de datos son fijos.
Retorna el numero de casos resueltos.",
EngJavascript);
//////////////////////////////////////////////////////////////////////////////

Árbol de ficheros

ChRules.Iterative programa de aplicacion iterativa de reglas de areas de caracteres

  • make.tol aplica unas bases de reglas de reescritura a varios escenarios
  • make.bat mandato de ejecucion del programa de aplicacion de reglas
  • tol directorios que contienen fichero de codigo fuente Tol
    • cmm funciones comunes
    • app directorio funciones y datos de areas, reglas y motor de reglas
      • are.tol funciones de areas sobre las que se aplican las reglas
      • rul.tol funciones de reglas que transforman de areas de caracteres
      • eng.tol funciones del motor iterativo de aplicacion de reglas
      • bub.tol para realizar un orden parcial con metodo de burbuja
      • cel.tol automata celular con reglas de reproduccion y muerte
      • lab.tol base de reglas para que un robot salga de un laberinto
      • fll.tol base de reglas para rellenar, fill, superficies cerradas
      • pon.tol base de reglas de un pingpong electronico, pong
    • inc.tol para la inclusion de funciones, areas y bases de reglas
  • simulator directorio del simulador en Javascript del motor iterativo de reglas
    • css directorio para css, Cascading Style Sheets, del simulador
      • simulator.css css para simular areas de aplicacion de las reglas
    • src directorio de codigo fuente Javascript del simulador de reglas
      • simulator.js simula el funcionamiento del motor de aplicacion de reglas
      • simulatorarray.js array con ejemplos de evolucion para cada base de reglas
  • automata_celular_al_azar.html automata celular de reglas al azar de reproduccion y muerte
  • automata_celular_determinista.html automata celular determinista de reglas de reproduccion y muerte
  • burbuja_y_sedimentos.html orden parcial con metodo de burbuja simulando una sedimentacion
  • laberinto_2_cabezones.html laberinto con 2 robots que se autobloquean y no pueden salir
  • laberinto_2_negociadores.html laberinto con 2 robots y reglas para resolver su mutuo bloqueo
  • laberinto_mas_grande.html robot que sale del laberinto aplicando reglas de la mano derecha
  • laberinto_mano_izquierda_html robot que busca la salida aplicando reglas de la mano izquierda
  • laberinto_mini_1_robot.html pequeño laberinto con un robot y reglas de la mano derecha
  • partida_de_pong_al_15.html partida de pong donde el 15% de las veces las reglas son al azar
  • partida_de_pong_al_20.html partida de pong donde el 20% de las veces las reglas son al azar
  • partida_de_pong_azarosa.html partida de pingpong electronico, pong, con reglas aleatorias
  • partida_de_pong_eterna.html ciclo eterno de una partida de pong, con reglas deterministas
  • rellena_caja_al_azar.html reglas para llenar superficies aplicadas a una caja con lineas
  • rellena_k_al_azar.html rellenado de superficies aplicado al interior de una letra K
  • simulator.html simulador del motor iterativo de reglas de areas de caracteres
  • chrules_iterative.pdf funciones del motor de aplicacion de reglas de caracteres

2015 asolver.com | Aviso legal | XHTML | Δ Θ Ξ | Creative Commons | Mapa y funciones del sitio

Tol