Secciones de la página

rul. tol


Declaraciones


Funciones


Time oriented language


Árbol de ficheros

Funciones

Set RulGet()

Set RulRnd()

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









rul.tol de ChRules.Iterative

Funciones para reglas de caracteres, rules.

Declaraciones

Funciones

  • Set RulGet(Text rulTxt)
    Retorna un cojunto de pares (oldSet, newSet) a partir de un texto que describe reglas de la forma: xxx :- yyy , primera linea de la primera regla terminada en , xxx :- yyy , segunda linea de la primera regla terminada en , xxx :- yyy ; ultima linea de la primera regla terminada en ; ... zzz :- yyy , zzz :- yyy , zzz :- yyy ; El simbolo < :- > de separacion de condicion accion, el < ,> de terminacion de linea y el simbolo < ;> de terminacion de regla son simbolos reservados y no pueden aparecer en el interior de los textos.
  • Set RulRnd(Set rulSet, Real rndRat)
    Dependiendo de rndRat: - Si 0 las reglas en el mismo orden que recibe. - Si 1 las reglas siempre desordenadas. - Si p entre 0 y 1 entonces p veces desordenadas y 1-p veces ordenadas, esto es, - cuanto mayor es p mas al azar se comporta, - cuanto menor es p mas cercano al determinismo se comporta. Esto permite al motor de reglas funcionar: a) de forma totalmente derterminista, b) de forma totalmente aleatoria o c) de forma parcialmente aleatoria. Notese que algunos problemas no pueden resolverse si se barajan las reglas mientras que otros si. Aunque solo con la 3 parte del Case() se puede programar se ha preferido dejar claros los 2 casos extremos de 0 y de 1.

Funciones

Set RulGet()

//////////////////////////////////////////////////////////////////////////////
Set RulGet(Text rulTxt) // Regla en texto
//////////////////////////////////////////////////////////////////////////////
{
  // Tokenizer() separa por un solo caracter, getTok() lo hace por varios pero
  // asume que el caracter de control Char(1) no aparece en el texto.
  Set getTok(Text t, Text s) { Tokenizer(Replace(t, s, Char(1)), Char(1)) };

  Set  tok001 = getTok(rulTxt," ;"); // Separar las reglas
  // Quedarse con las reglas no vacias
  Set  tok002 = Select(tok001, Real(Text rul) { Compact(rul)!="" });

  // Generar el conjunto de reglas
  Set EvalSet(tok002, Set(Text rul)
  {
    Set linSet = getTok(rul," ,"); // Separar cada linea
    // Separara la parte de la accion de la de la condicion
    Set parSet = EvalSet(linSet, Set(Text lin) { getTok(lin," :- ") });

    // La primera columna son condiciones, la segunda columna acciones, se
    // traspone para facilitar el acceso por filas
    Set traSet = Traspose(parSet); 
    Set conSet = traSet[1]; // Los primeros son condiciones
    Set accSet = traSet[2]; // Los segundos son condiciones
    [[ conSet, accSet ]]
  })
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna un cojunto de pares (oldSet, newSet) a partir de un texto que 
describe reglas de la forma:
  xxx :- yyy ,      primera linea de la primera regla terminada en ,
  xxx :- yyy ,      segunda linea de la primera regla terminada en ,
  xxx :- yyy ;      ultima  linea de la primera regla terminada en ;
  ...
  zzz :- yyy ,
  zzz :- yyy ,
  zzz :- yyy ;
El simbolo < :- > de separacion de condicion accion, el < ,> de terminacion
de linea y el simbolo < ;> de terminacion de regla son simbolos reservados
y no pueden aparecer en el interior de los textos.",
RulGet);
//////////////////////////////////////////////////////////////////////////////

Set RulRnd()

//////////////////////////////////////////////////////////////////////////////
Set RulRnd(Set  rulSet, // Conjunto de reglas
           Real rndRat) // Desorden total, parcial u orden de las reglas
//////////////////////////////////////////////////////////////////////////////
{
  Case(
    rndRat <= 0, rulSet,             // Se conserva el orden
    rndRat >= 1, SetShuffle(rulSet), // Se desordenar siempre
    TRUE,        If(Rand(0,1) <= rndRat, SetShuffle(rulSet), rulSet))
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Dependiendo de rndRat:
- Si 0 las reglas en el mismo orden que recibe.
- Si 1 las reglas siempre desordenadas.
- Si p entre 0 y 1 entonces p veces desordenadas y 1-p veces ordenadas,
  esto es,
  - cuanto mayor es p mas al azar se comporta,
  - cuanto menor es p mas cercano al determinismo se comporta.
Esto permite al motor de reglas funcionar:
a) de forma totalmente derterminista,
b) de forma totalmente aleatoria o
c) de forma parcialmente aleatoria.
Notese que algunos problemas no pueden resolverse si se barajan las reglas
mientras que otros si.
Aunque solo con la 3 parte del Case() se puede programar se ha preferido
dejar claros los 2 casos extremos de 0 y de 1.",
RulRnd);
//////////////////////////////////////////////////////////////////////////////

Time oriented language

//////////////////////////////////////////////////////////////////////////////
// FILE    : rul.tol
// AUTHOR  : http://www.asolver.com
// PURPOSE : Funciones para reglas de caracteres, rules.
//////////////////////////////////////////////////////////////////////////////


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

//////////////////////////////////////////////////////////////////////////////
Set RulGet(Text rulTxt) // Regla en texto
//////////////////////////////////////////////////////////////////////////////
{
  // Tokenizer() separa por un solo caracter, getTok() lo hace por varios pero
  // asume que el caracter de control Char(1) no aparece en el texto.
  Set getTok(Text t, Text s) { Tokenizer(Replace(t, s, Char(1)), Char(1)) };

  Set  tok001 = getTok(rulTxt," ;"); // Separar las reglas
  // Quedarse con las reglas no vacias
  Set  tok002 = Select(tok001, Real(Text rul) { Compact(rul)!="" });

  // Generar el conjunto de reglas
  Set EvalSet(tok002, Set(Text rul)
  {
    Set linSet = getTok(rul," ,"); // Separar cada linea
    // Separara la parte de la accion de la de la condicion
    Set parSet = EvalSet(linSet, Set(Text lin) { getTok(lin," :- ") });

    // La primera columna son condiciones, la segunda columna acciones, se
    // traspone para facilitar el acceso por filas
    Set traSet = Traspose(parSet); 
    Set conSet = traSet[1]; // Los primeros son condiciones
    Set accSet = traSet[2]; // Los segundos son condiciones
    [[ conSet, accSet ]]
  })
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna un cojunto de pares (oldSet, newSet) a partir de un texto que 
describe reglas de la forma:
  xxx :- yyy ,      primera linea de la primera regla terminada en ,
  xxx :- yyy ,      segunda linea de la primera regla terminada en ,
  xxx :- yyy ;      ultima  linea de la primera regla terminada en ;
  ...
  zzz :- yyy ,
  zzz :- yyy ,
  zzz :- yyy ;
El simbolo < :- > de separacion de condicion accion, el < ,> de terminacion
de linea y el simbolo < ;> de terminacion de regla son simbolos reservados
y no pueden aparecer en el interior de los textos.",
RulGet);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Set RulRnd(Set  rulSet, // Conjunto de reglas
           Real rndRat) // Desorden total, parcial u orden de las reglas
//////////////////////////////////////////////////////////////////////////////
{
  Case(
    rndRat <= 0, rulSet,             // Se conserva el orden
    rndRat >= 1, SetShuffle(rulSet), // Se desordenar siempre
    TRUE,        If(Rand(0,1) <= rndRat, SetShuffle(rulSet), rulSet))
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Dependiendo de rndRat:
- Si 0 las reglas en el mismo orden que recibe.
- Si 1 las reglas siempre desordenadas.
- Si p entre 0 y 1 entonces p veces desordenadas y 1-p veces ordenadas,
  esto es,
  - cuanto mayor es p mas al azar se comporta,
  - cuanto menor es p mas cercano al determinismo se comporta.
Esto permite al motor de reglas funcionar:
a) de forma totalmente derterminista,
b) de forma totalmente aleatoria o
c) de forma parcialmente aleatoria.
Notese que algunos problemas no pueden resolverse si se barajan las reglas
mientras que otros si.
Aunque solo con la 3 parte del Case() se puede programar se ha preferido
dejar claros los 2 casos extremos de 0 y de 1.",
RulRnd);
//////////////////////////////////////////////////////////////////////////////

Á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