Secciones de la página

Programando en Tol


Omr. Forms


Antonio. Salmeron


Sfk. Wrap


SHi. SyntaxHighlight


Rae. Lemario


Ediciones. aContracorriente


iForense


con-Q. tv


Ink. Watercolor


3d. SquaresPuzzle


Xlsx. Reader


Xls. Reader


TowerHanoi. Recursive


Electricity. DemandPrice


Gnuplot. Test


Dct. Writer


ChRules. Iterative


WordSearch. LetterSoup


PDonnelly. CellsMatrix


Constraint. Queen


ChRules. RandRecursive


Sfk. Diary


Benford. Test


Constraint. Action

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









Programando en Tol, Time Oriented Languaje

Bienvenidos al sitio dedicado a ofrecer el código fuente de programas desarrollados en lenguaje Tol (Time Oriented Language), donde los programadores de Tol o los interesados en conocer este lenguaje encontrarán código útil, trucos, ejemplos, estilos de programación, ideas, etc.

A continuación se presenta un breve resumen de los nuevos programas incluidos y de los actualizados recientemente. En cada programa, pulsando el botón azul con flecha del título se accede al código completo del programa. También se puede acceder a ellos con el menú de la izquierda y en el menú de la derecha pueden encontrarse los programas categorizados por las clases a las que pertenecen.

2015.12.06 programa Omr.Forms

Es el programa constructor del sitio web OmrForms.es, que es un sitio dedicado a la comercialización de servicios y formularios en papel para la lectura óptica de datos. Los contenidos para este sitio web se estructuran en base a posts con 3 niveles de importancia (status) y que se guardan en un único fichero de texto denominado agenda de posts que

Es el programa constructor del sitio web OmrForms.es, que es un sitio dedicado a la comercialización de servicios y formularios en papel para la lectura óptica de datos. Los contenidos para este sitio web se estructuran en base a posts con 3 niveles de importancia (status) y que se guardan en un único fichero de texto denominado agenda de posts que es un banco de contenidos. Los 3 niveles de los posts son: a) A de Anulado, significa que está en el banco de contenidos pero que no se puplica, b) B de Bajo, se publica, pero no sale en el menú principal en la parte superior izquierda de todas las páginas web del sitio y c) C de Común, se publica y aparece enlazado desde el menú principal de todas las páginas.

Las opciones principales de Omr.Forms son: a) la generación de páginas mediante la opción denominada web, b) la creación del índice principal, homepage, y de las páginas absolutas, que valen para protección de directorios y control de errores, con la opción rot, c) la elaboración del mapa del sitio en Xml con la opción xsm, siglas de Xml site map, d) con las opciones ftp, fup y snd la actualización por Ftp del sitio, bien de todo el contenido (opciones ftp + snd, de send) o bien de las últimas páginas, imágenes y documentos actualizados (opciones fup + snd, de ftp update) y e) mediante la opción tst se realizan unos tests de la funcionalidad interna que comprueban ciertos funcionamientos del programa.

2015.12.06 programa Antonio.Salmeron

Este programa se denomina Antonio.Salmeron pues es el constructor del sitio web AntonioSalmeron.com. La construcción del sitio web se realiza a partir de contenidos en formato de posts albergados en unos ficheros que se denominan agendas. Cada agenda contiene un conjunto de post, agrupados generalmente por temas. Estos ficheros de agendas se

Este programa se denomina Antonio.Salmeron pues es el constructor del sitio web AntonioSalmeron.com. La construcción del sitio web se realiza a partir de contenidos en formato de posts albergados en unos ficheros que se denominan agendas. Cada agenda contiene un conjunto de post, agrupados generalmente por temas. Estos ficheros de agendas se almacenan en un directorio que puede considerarse un banco de contenidos. Los post pueden pertenecer a múltiples clases, unas clases definidas en los posts y otras calculadas, como por ejemplo, las clase de los periodos de publicación de cada post. Este programa crea páginas Html de posts y de conjuntos de post por cada clase, a estas clases también se las denomina categorías.

Este programa sólo escribe los ficheros de páginas Html que son diferentes a los ya creados en ejecuciones anteriores de forma que no haya que enviar todo el conjunto de páginas sino las de modificadas de fecha más reciente que el último log de envío. Este control lo realiza la opcion fup, de ftp update, frente a la opción ftp que generar ficheros de mandatos de envío con todo el contenido del web. Nótese que las opciones fup y ftp solo generan ficheros de mandatos ftp de envío y luego se pueden ejecutar con la opcion snd.

2015.12.04 programa Sfk.Wrap

Sfk.Wrap es un programa formateador de textos Ascii a lineas de 78 caracteres que lee del clipboard dejando su resultado tambien en el clipboard, tambien puede funcionar con otros textos procedentes de procesadores y editores que se convierten a Ascii al salir del clipboard hacia un fichero de texto. Los textos a los que da formato pueden estar en

Sfk.Wrap es un programa formateador de textos Ascii a lineas de 78 caracteres que lee del clipboard dejando su resultado tambien en el clipboard, tambien puede funcionar con otros textos procedentes de procesadores y editores que se convierten a Ascii al salir del clipboard hacia un fichero de texto. Los textos a los que da formato pueden estar en una o en varias lineas. El numero de caracteres blancos que hay al inicio de la primer linea de entrada se conserva en la primera linea de salida y es heredado por las siguientes lineas siendo este la forma de fijar el sangrado con Sfk.Wrap. El programa funciona considerando: a) que varias lineas, aun con sus saltos de linea al final, constituyen un solo parrafo y b) que los parrafos terminan en el primer punto tras el cual haya un salto de linea, esto es, como si se tratara de un punto y a parte. Sfk.Wrap es util, por ejemplo, para dar formato a los textos de contenido que aparecen dentro de las agendas de post, de las paginas Html, etc. También es util para pasar a ficheros de codigo fuente textos que por proceder de Word u otros procesadores ocupan una sola linea, muy larga, por cada parrafo.

Para simplificar la programacion este conversor emplea un unico fichero temporal y un solo clipboard por lo que este programa no soporta ejecuciones paralelas. Para el manejo del clipboard se utiliza una herramienta de sfk169.exe de las Swiss File Knife, Sfk, que pueden encontrarse en la direccion http://stahlworks.com/dev/swiss-file-knife.html. El programa sfk169.exe no se invoca directamente, se hace a traves de 2 programas de mandatos que permiten fijar un conjunto de caracteres que no de problemas con las eñes y enmascarar el uso de los ficheros temporales.

2015.12.04 programa SHi.SyntaxHighlight

SHi.SyntaxHighlight es una libreria con funciones que permiten construir generadores de sintaxis realzada (syntax highlight). Por ejemplo, el programa Dct.Write, que genera contenidos para el sitio web lazytol.com, esta basado, entre otras, en esta libreria. Esta libreria de funciones esta fundamentalmente orientada para el realce de sintaxis del

SHi.SyntaxHighlight es una libreria con funciones que permiten construir generadores de sintaxis realzada (syntax highlight). Por ejemplo, el programa Dct.Write, que genera contenidos para el sitio web lazytol.com, esta basado, entre otras, en esta libreria. Esta libreria de funciones esta fundamentalmente orientada para el realce de sintaxis del lenguaje de programacion Tol (Time Oriented Language), pero tambien sirve para otros lenguajes como por ejemplo: a) Sql (Structured Query Language), b) el lenguaje de los ficheros de especificacion de Gnuplot, c) el de los ficheros de mandatos de Windows de Microsoft, d) Css (Cascading Style Sheets), e) Html (HyperText Markup Language), f) Xml (eXtensible Markup Language) y g) Javascript. Para el realce de la sintaxis emplea los colores de los textos: a) negro para el codigo fuente, b) verde para los comentarios y c) azul para los textos.

SHi.SyntaxHighlight tambien es capaz de realzar sintaxis de algunos lenguajes embebidos en otros, en este caso lo que emplea es el color de fondo del texto, backgraound, en especial el rosa. Ejemplos de lenguajes embebidos en otros cuya sintaxis se puede realzar son: a) el lenguaje Javascript embebido dentro de codigo fuente Html o b) el propio lenguaje Tol embevido dentro de Html. En otros casos la forma de embeber un codigo de un lenguaje en otro lenguaje es mediante textos, por ejemplo, como cuando se introducen sentencias Sql dentro del lenguaje Tol que se ponen como textos. En estos casos el codigo embebido aparece den color azul de los textos.

2015.12.04 programa Rae.Lemario

Programa selector de palabras, de entre las contenidas en un lemario, por determinadas condiciones, por ejemplo, por ser palindromos, por contener todas las vocales o ser todas sus letras diferentes. Ejemplos de lemarios que este programa puede manejar son los de la Real Academia Española, que de sus siglas Rae este programa toma su nombre. Este

Programa selector de palabras, de entre las contenidas en un lemario, por determinadas condiciones, por ejemplo, por ser palindromos, por contener todas las vocales o ser todas sus letras diferentes. Ejemplos de lemarios que este programa puede manejar son los de la Real Academia Española, que de sus siglas Rae este programa toma su nombre.

En este programa se puede observar como se puede en lenguaje Tol: a) Leer y escribir ficheros planos de texto con ReadFile(), WriteFile y AppendFile y a convertir esos textos en conjuntos con Tokenizer(). b) Realizar bifurcaciones con las funciones If() y Case(). c) Recorrer y evaluar funciones sobre conjuntos con EvalSet() y For(). d) Seleccionar determinados elementos de un conjunto con Select() o a hacer que todos sean diferentes con Unique(). e) Ordenar y clasificar conjuntos con Sort() y Classify(). f) Transponer conjuntos tabulares con Traspose(). g) Declarar funciones dentro de funciones, por ejemplo, la declaracion de la funcion local filPth() dentro de la funcion global LemEndAt() o la declaracion de la funcion local graCnt() que cuenta grafemas dentro de la funcion global LemGrapheme(). h) Pasar codigo Tol como parametro de entrada de otras funciones, ver por ejemplo la declaracion de la fumncion LemSelect() y su llamada desde la funcion LemCicle() y otras.

2015.12.04 programa Ediciones.aContracorriente

Este programa se denomina Ediciones.aContracorriente porque es el constructor del sitio web edicionesacontracorriente.com. // Tanto Ediciones aContracorriente como su sitio web están dedicados a la edición, promoción y venta de libros en formato digital y en formato físico. La construcción del sitio web se realiza a partir de contenidos en formato

Este programa se denomina Ediciones.aContracorriente porque es el constructor del sitio web edicionesacontracorriente.com. // Tanto Ediciones aContracorriente como su sitio web están dedicados a la edición, promoción y venta de libros en formato digital y en formato físico. La construcción del sitio web se realiza a partir de contenidos en formato de posts albergados en unos ficheros que se denominan agendas. Cada agenda contiene un conjunto de post, agrupados generalmente por temas, por ejemplo, catalogo, tienda, los autores y sus libros, trámites, etc. Estos ficheros de agendas se almacenan en un directorio que puede considerarse un banco de contenidos.

Los post pueden pertenecer a múltiples clases y este programa crea páginas Html de posts y de conjuntos de post por cada clase, a estas clases también se las denomina categorías. El programa esta basado en un macro-expansor a doble nivel de Tol en Html, donde las semillas de Html contienen Tol embebido y los post para publicar también pueden contener Tol embebido, por lo que: a) dentro de la primera expansion, la de las semillas, b) se pueden realizar otras expansiones, que son las del lenguaje Tol contenido en los post. Ediciones.aContracorriente genera todas las páginas a partir de una misma semilla.

2015.12.03 programa iForense

Programa constructor del sitio web del dominio forense.info dedicado a contenidos de formación en informática forense en donde se presentan 3 cursos de experto, especialista y máster en informática forense y pericial. Los contenidos que emplea son posts con 3 niveles de importancia (status), que se organizan en un directorio, que se denomina

Programa constructor del sitio web del dominio forense.info dedicado a contenidos de formación en informática forense en donde se presentan 3 cursos de experto, especialista y máster en informática forense y pericial. Los contenidos que emplea son posts con 3 niveles de importancia (status), que se organizan en un directorio, que se denomina agenda, este directorio tiene contiene varios ficheros, cada fichero contiene varios posts y cada post pertenece a una o varias clases (categorías) de posts. Dentro de este directorio de agenda, sin pertenecer a ella, hay un glosario de términos de informática forense que permiten ilustrar los contenidos del sitio de forma no determinista.

Los posts de la agenda de contenidos pueden ser de los 3 siguientes niveles: a) anulados que no salen (se le denomina nivel A), b) bajos que se publican sólo dentro de sus clases, pero no con árticulo propio (nivel B) y c) comunes que se publican dentro de su clase y con en su propio artículo (nivel C), la mayoría de estos post tienen este nivel, por lo que es el nivel por defecto.

2015.12.03 programa con-Q.tv

Constructor de la Newsletter AVPPM con-Q.tv que genera tanto las páginas de la newsletter online, con el histórico de noticias, como el contenido de cada newsletter periódica, con las últimas noticias, que se envía a los socios por correo electrónico. Las noticias son posts con 4 niveles de importancia (status), que se organizan en un directorio

Constructor de la Newsletter AVPPM con-Q.tv que genera tanto las páginas de la newsletter online, con el histórico de noticias, como el contenido de cada newsletter periódica, con las últimas noticias, que se envía a los socios por correo electrónico. Las noticias son posts con 4 niveles de importancia (status), que se organizan en un directorio con ficheros y estos con posts, que pueden pertenecer a múltiples clases o categorías. El programa esta basado en un macro-expansor a doble nivel de Tol en Html, que permite, por ejemplo, crear índices automáticos por artículos, por clases, por años que se tratan como clases, por niveles e índices de ilustraciones y por categorías de ilustraciones.

Los posts pueden pertenecer a múltiples clases y se crean páginas Html de posts y de conjuntos de post por cada clase, a estas clases tambián se las denomina categorías. Con este programa las páginas de artículos se generan con la opción art, las páginas con los artículos agrupados por categorías con la opción cat que tambien crea los índices de clasificación de los artículos, las páginas Html por defecto del sitio (index.html) y de cada directorio, la absoluta y la de control de errores con la opción rot, el mapa del sitio en Xml con la opción xsm, de Xml site map y las opciones ftp, fup y snd permiten poner el contenido en online.

2015.12.03 programa Ink.Watercolor

Programa constructor del sitio web del dominio inkwatercolor.com dedicado a contenidos de arte creados con tintas y acuarelas y con otras diferentes técnicas. Los contenidos que emplea para crearlo son: a) registros de obras de arte, en 2 idiomas, castellano e inglés, que se organizan en en un directorio, que se denomina agenda y b) ficheros en

Programa constructor del sitio web del dominio inkwatercolor.com dedicado a contenidos de arte creados con tintas y acuarelas y con otras diferentes técnicas. Los contenidos que emplea para crearlo son: a) registros de obras de arte, en 2 idiomas, castellano e inglés, que se organizan en en un directorio, que se denomina agenda y b) ficheros en formato JPG con imágenes de las obras de arte en diversos tanaños (pequeños, más grandes, DIN A4 y DIN A3). // El directorio de agenda puede contener varios ficheros, en especial, contiene un fichero por cada galería de arte, de esta forma, hay un fichero para: a) la galería llamada chppho, que es la principal, y que está dedicada a obras de pintura automática realizadas en tintas y acuarelas, b) la galería llamada fleurs, que está dedicada a las Flores del Mal de Charles Baudelaire, hay una pintura para cada uno de sus poemas y c) la galería llamada inarmy, que está dedicada a esquemas y apuntes rápidos de la vida castrense.

Este programa para Ink Watercolor: a) Se clasifica de metaprogramación porque se ha escrito código en lenguaje de programación TOL que escribe, a su vez, código en lenguaje de Html para las páginas del sitio web, código TOL que representa los resultados de los análisis estadísticos y código en lenguaje Javascript para la gestión de contenidos artísticos. b) Se clasifica de Hipertexto porque el resultado final más importante es la generación de más de un millar de páginas de hipertexto. c) Se clasifica de arte porque el objetivo es la difusión de contenidos artísticos por internet.

2015.11.22 programa 3d.SquaresPuzzle

Solucionador del juego llamado 3D Squares Puzzle. Resuelve de forma recursiva un puzle de 9 piezas que, a pesar de su aparente sencillez, no es trivial. Encuentra 4 soluciones que, en el fondo, son la misma solucion pero con 1, 2 o 3 rotaciones de 90 grados. Las piezas de este puzle se simulan mediante tiras de 3x3 caracteres cada una y, en vez de

Solucionador del juego llamado 3D Squares Puzzle. Resuelve de forma recursiva un puzle de 9 piezas que, a pesar de su aparente sencillez, no es trivial. Encuentra 4 soluciones que, en el fondo, son la misma solucion pero con 1, 2 o 3 rotaciones de 90 grados. Las piezas de este puzle se simulan mediante tiras de 3x3 caracteres cada una y, en vez de codificar el tipo de insecto, se utilizan letras para el color fundamental del insecto, asi por ejemplo, V, verde mayuscula, para la cabeza del saltamontes verde y v, verde minuscula, para el cuerpo del saltamontes verde o A, amarillo mayuscula, para la cabeza del abejorro amarillo y a, amarillo minuscula, para el cuerpo del abejorro amarillo. Todo el codigo fuente de este solucionador esta desarrollado en un unico fichero que consta de varios grupos de funciones: a) funciones basicas, b) fuenciones de piezas, c) funciones de variaciones de piezas (giros) y d) funciones de busqueda de soluciones.

Para entender el proceso de solucion del 3D Squares Puzzle que se emplea hay que tener en cuenta los siguientes conceptos: a) La resolucion del problema avanza de arriba hacia abajo y de izquierda a derecha. b) Para cada posicion se abren tantas ramas de exploracion como piezas, que todavia no se hayan puesto y que con una adecuada rotacion, cumplan las restricciones de coincidencia que le puedan imponer su posible pieza superior y la posible pieza a su izquierda. c) Si en una determinada rama de exploracion las restricciones impiden ya poner ninguna de las piezas que quedan, entonces la rama se poda. d) El problema queda resuelto cuando todas las piezas se han puesto, adecuadamente rotadas y cumpliendo sus restricciones de coincidencia.

2014.06.15 programa Xlsx.Reader

Librería que permite construir lectores de ficheros Excel Xlx, de extensión xlsx, de Office de Microsoft. El objetivo de este fichero make.tol es sólo probar las diferentes funcionalidades de esta librería que se implementan en el fichero xlx.tol y que puede ser incluida desde otros programas Tol. Los actuales ficheros Xlsx de Microsoft Excel son

Librería que permite construir lectores de ficheros Excel Xlx, de extensión xlsx, de Office de Microsoft. El objetivo de este fichero make.tol es sólo probar las diferentes funcionalidades de esta librería que se implementan en el fichero xlx.tol y que puede ser incluida desde otros programas Tol. Los actuales ficheros Xlsx de Microsoft Excel son ficheros comprimidos y se pueden abrir con WinZip o 7Zip. En especial, este código, usa 7Zip, desde la línea de mandatos, para extraer la hoja de datos requerida. Las hojas dentro de este fichero comprimido se numeran como 1, 2, 3,... independiéntemente de cual sea el nombre de la hoja.

Xls.Reader utiliza un mandato 7Xip para extraer el contenido, por ejemplo, para extraer la hoja 1 el mandato es: 7z.exe e excel.xlsx xl\worksheets\sheet1.xml -so > _temporal_.xml. Este mandato extrae la primera hoja (sheet1.xml) del fichero llamado excel.xlsx y la guarda por volcado de la salida estándar con el nombre de fichero _temporal_.xml. La hoja que se extrae de esta forma es un fichero Xml con los tags <sheetData>, <row> y <v> (value) que determinan: a) el primero <sheetData> todos los datos del fichero Excel, b) el segundo <row> cada una de las filas, que son un conjunto horizontal de celdas, y c) el tercero <v> cada uno de los valores de cada celda. Por lo que este fichero Xml puede convertirse en un conjunto de conjunto de textos, esto es, en una tabla Tol.

2014.06.15 programa Xls.Reader

Las funciones de esta librería Xls.Reader permiten construir lectores de ficheros Excel Xls, la versión clásica de Microsoft, a través de una conexión Odbc de Windows de Microsoft. La funcionalidad de este fichero principal make.tol es sólo probar las diferentes funcionalidades de esta librería que se implementan dentro del fichero xls.tol. Esta

Las funciones de esta librería Xls.Reader permiten construir lectores de ficheros Excel Xls, la versión clásica de Microsoft, a través de una conexión Odbc de Windows de Microsoft. La funcionalidad de este fichero principal make.tol es sólo probar las diferentes funcionalidades de esta librería que se implementan dentro del fichero xls.tol. Esta librería asume que existe una conexión Odbc de nombre conocido y que se guarda en una de las variables de control llamada XlsOdb y que esta conexión Odbc apunta a un fichero Excel del tipo Xls.

Las conexiones Odbc apuntan a un fichero o base de datos concreto, por lo que para no tener que crear una conexión Odbc para cada fichero Excel que se quiera leer, la conexión Odbc ha de apuntar siempre a un fichero Excel especial que hace de buffer temporal de lectura y cuya ruta se puede cambiar a través de la variable de control, XlsBuf. En cualquier caso, para las principales funcionalidades de lectura de esta librería Xls.Reader, existen 2 versiones: a) la que lee usuando la conexión Odbc y el fichero buffer Excel que indiquen las variables de control XlsOdb y XlsBuf, respectivamente y b) otras funciones diferentes en las que el nombre de la conexión Odbc y la ruta del fichero Excel buffer se pasan como parámetros de entrada.

2014.06.15 programa TowerHanoi.Recursive

TowerHanoi.Recursive es un programa que resuelve de forma recursiva el problema conocido como de las Torres de Hanoi. Este problema se utiliza a menudo en programación para poner en práctica la programación recursiva como sucede en el presente caso. Este programa se estructura en base a un fichero principal make.tol que contiene tanto la definicion

TowerHanoi.Recursive es un programa que resuelve de forma recursiva el problema conocido como de las Torres de Hanoi. Este problema se utiliza a menudo en programación para poner en práctica la programación recursiva como sucede en el presente caso. Este programa se estructura en base a un fichero principal make.tol que contiene tanto la definicion de las variables como las funciones de resolución y funciones auxiliares, siendo la función principal de resolución HnoSolve(). El funcionamiento de este programa se ha probado para las versiones de Tol 1.1.1, 1.1.5, 1.1.6 y 2.0.1.

Las Torres de Hanói, como usualmente se le denomina en español, o Tower of Hanoi, como habitualmente se le denomina en inglés, es un juego matemático creado por el matemático francés Édouard Lucas en el año 1883. De hecho, Lucas lo comercializó como un juego, pero bajo el pseudónimo del Profesor N. Claus de Siam, mandarín del Colegio de Li-Sou-Stian que son 2 anagramas de Lucas d'Amiens (lugar de nacimiento de Lucas) y de Saint Louis. François Édouard Anatole Lucas, nacido en Amiens el 4 de abril de 1842 y fallecido en París, el 3 de octubre de 1891, además del juego de las Torres de Hanoi, trabajó en París en el observatorio astronómico y como profesor de matemáticas y destacó por sus investigaciones sobre la serie de Fibonacci y por el test de números primos que lleva su nombre, test de Lucas.

2014.06.14 programa Electricity.DemandPrice

Electricity.DemandPrice es un programa que muestra como analizar y visualizar con Tol (Time Oriented Languaje) series temporales públicas de demanda eléctrica y de precios de la electricidad en fechados, TimeSet, de frecuencia horaria, Horario, y diaria, Diario. Este programa lee los datos desde ficheros Tol de formato Bdt que están guardados en un

Electricity.DemandPrice es un programa que muestra como analizar y visualizar con Tol (Time Oriented Languaje) series temporales públicas de demanda eléctrica y de precios de la electricidad en fechados, TimeSet, de frecuencia horaria, Horario, y diaria, Diario. Este programa lee los datos desde ficheros Tol de formato Bdt que están guardados en un directorio llamado data: a) un fichero para la demanda horaria (fichero demandahorario.bdt), b) otro fichero para los precios hora a hora (fichero preciohorario.bdt) y c) finalmente, otro fichero que contiene la demanda agregada por días y los precios medios diarios (fichero datadiario.bdt).

Este programa realiza las siguientes clases de acciones: a) Asume definidos los 2 conjuntos temporales (TimeSet, fechados) Horario y Diario y con ellos lee, mediante la función IncludeBdt(), datos de demanda y precios en el sector eléctrico del directorio llamado data. b) A partir de dichos datos realiza un conjunto de operaciones con series temporales y polinomios de tiempo mientras que visualiza los resultados paso a paso. c) Finalmente compara los datos por días de la semana (lunes, martes, miércoles, jueves, viernes, sábado y domingo) y analiza el comportamiento de las series temporales durante la Semana Santa.

2014.06.09 programa Gnuplot.Test

Programa que muestra como crear un grafico en formato Gif con Gnuplot de una serie temporal que se guarda en un fichero Bdt de Tol (shows how to write a gif chart using Gnuplot from a single time serie stored in a Tol Bdt file). Es un programa que se ejecuta de forma lineal en el que no se declaran funciones Tol. Este programa realiza las

Programa que muestra como crear un grafico en formato Gif con Gnuplot de una serie temporal que se guarda en un fichero Bdt de Tol (shows how to write a gif chart using Gnuplot from a single time serie stored in a Tol Bdt file). Es un programa que se ejecuta de forma lineal en el que no se declaran funciones Tol.

Este programa realiza las siguientes acciones: a) Define un conjunto temporal (TimeSet) semanal, de lunes a domingo, determinado por los lunes, esto es, por el WD(1). b) Define todos los ficheros necesarios, de datos para Gnuplot, de instrucciones para Gnuplot, del grafico que generara Gnuplot, de la semilla, template, de la pagina Html, de la pagina Html que visualiza el grafico generado con Gnuplot y del documento Pdf que se genera a partir de la anterior pagina Html. c) Define una semilla, template, de mandatos de Gnuplot. e) Lee los datos de la serie temporal con la funcion Tol IncludeBDT(). f) Establede los formatos de datos y fechas adecuados para Gnuplot. g) Crea el fichero de mandatos Gnuplot a partir de la semilla anterior. h) Ejecuta Gnuplot con los datos y los mandatos i) Crea la pagina Html incluyendo el grafico Gnuplot a partir de la anterior semilla Html. k) Crea un documento Pdf a partir de la pagina Html.

2014.06.09 programa Dct.Writer

Documentador de codigos que genera agendas de posts de otros programas desarrollados en lenguaje Tol y algunos otros lenguajes como Javascript, Html, Sql y Xml. El programa explota la riqueza de otros programas en comentarios, estructura y codigo para generar unos contenidos que son el paso previo para ser llevados a paginas web y generar con ellos

Documentador de codigos que genera agendas de posts de otros programas desarrollados en lenguaje Tol y algunos otros lenguajes como Javascript, Html, Sql y Xml. El programa explota la riqueza de otros programas en comentarios, estructura y codigo para generar unos contenidos que son el paso previo para ser llevados a paginas web y generar con ellos documentacion en Pdf. Este codigo se le puede clasificar como metaprogramación. La metraprogramación consiste en escribir programas que escriben o manipulan otros programas o a si mismo. Usualmente no se ejecuta el fichero make.tol del documentador directamente, sino que es desde otros programas donde se invoca a su funcion principal DctMake(). Para invocar a DctMake() se le debe haber declarado previamente a) Text DctPre que es la ruta del directorio contenedor del directorio del programa a documentar y b) Set DctTre que es el arbol de ficheros a documentar.

Este documentador distingue 4 tipos de ficheros: a) los ficheros en lenguaje Tol en codigo realzado, b) los ficheros en otros lenguajes de programacion en codigo realzado, c) los ficheros en texto plano, que no van en codigo realzado y d) los ficheros pdf que se dejan como estan en nombre y contenido. La documentación de un fichero Tol tienen las siguientes secciones: a) la Cabecera, cuyo contenido sale de la cabecera inicial del fichero Tol, b) la Presentacion, opcional, cuyo contenido proviene de un fichero Html generado de forma manual, que puede incluir imagenes, c) el Indice de declaraciones, donde cada declaracion enlaza con las variables y funciones que se definen a continuacion, esta seccion se subdivide en Inclusiones, Variables de control, Constantes, Funciones, etc. igual que los ficheros Tol, d) la secuencia de secciones de Inclusiones, Estructuras de datos, Variables de control, Constantes, Funciones de nombre corto, Funciones, Proceso, Pruebas y Finalizacion, esta secuencia es la misma que la del indice anterior y para cada fichero solo se ponen las que existen, e) el Codigo fuente completo con el contenido en codigo realzado de todo el fichero y f) el Arbol de estructura de ficheros, que es una representacion en Html del arbol que se recibe como entrada al documentador, en cada arbol se destaca el propio fichero frente al resto, este arbol enlaza con links a todos los ficheros del arbol del programa, esta seccion se pone al final porque al ser similar para todos los ficheros si se pone al principio a modo de menu de navegacion todas las paginas parecen inicialmente similares.

2014.06.09 programa ChRules.Iterative

ChRules.Iterative es un programa iterativo de aplicacion de reglas de reescritura que: a) aplica a un area rectangular de caracteres, b) reglas de transformacion de areas rectangulares de caracteres y c) que juntas forman una base de reglas de transformacion del contenido de ese area para alcanzar un cierto objetivo, como por ejemplo, solucionar un

ChRules.Iterative es un programa iterativo de aplicacion de reglas de reescritura que: a) aplica a un area rectangular de caracteres, b) reglas de transformacion de areas rectangulares de caracteres y c) que juntas forman una base de reglas de transformacion del contenido de ese area para alcanzar un cierto objetivo, como por ejemplo, solucionar un problema Las reglas de ChRules.Iterative son del tipo [condicion, accion], esto es: a) si se cumple la condicion, el rectangulo condicion de la regla equipara con alguna subarea del area de trabajo b) entonces se aplica la accion de transformacion cambiando el contenido de la antigua subarea del area de trabajo por el nuevo rectangulo que proporciona la parte de la accion de la regla.

Esta version del programa ChRules.Iterative tiene 3 particularidades que la definen: a) El ciclo del motor de comprobacion y aplicacion de reglas es iterativo. b) La seleccion de la subarea donde aplicar la regla es determinista. c) Pero en la seleccion de las reglas que hay aplicar se pueden programar 3 metodos distintos. Estos 3 metodos de seleccion de reglas son: c1) Seleccion completamente al azar. c2) Seleccion determinista siguiendo el mismo orden en el que se han definido las reglas de reescritura (cada regla prevalece sobre sus reglas sucesoras). c3) Seleccion segun un parametro rndCtr entre 0 y 1 segun el cual en rndCtr casos la seleccion es al azar y en el otro 1-rndCtr de los casos la seleccion es determinista, segun el orden de declaracion de las reglas.

2014.06.08 programa WordSearch.LetterSoup

WordSearch.LetterSoup es un programa que busca las palabras de un conjunto dentro de una sopa de letras que se especifica como un rectangulo de caracteres. La busqueda la realiza en todas las direcciones horizontal, vertical y en las 2 diagonales y en todos los sentidos posibles, de izquierda a derecha, de derecha a izquierda, de arriba hacia abajo

WordSearch.LetterSoup es un programa que busca las palabras de un conjunto dentro de una sopa de letras que se especifica como un rectangulo de caracteres. La busqueda la realiza en todas las direcciones horizontal, vertical y en las 2 diagonales y en todos los sentidos posibles, de izquierda a derecha, de derecha a izquierda, de arriba hacia abajo y de abajo hacia arriba, en total son 8 las posibles formas en las que puede aparecer una palabra. Es un programa desarrollado en un solo fichero Tol y que funciona en todas las versiones del lenguaje de programacion Tol en las que se ha probado.

Las direcciones y sentidos de busqueda se codifican, en WordSearch.LetterSoup, mediante 2 numeros de desplazamiento que pueden tomar los valores -1, 0 y 1, de esta forma: a) la escritura normal seria (0, 1), sin cambiar de fila (0) avanzar a la derecha (1) de letra a letra, b) escribir hacia la izquierda como (0, -1), sin cambiar de fila (0) retroceder hacia la izquierda (-1) de letra en letra, c) escribir de arriba hacia abajo como (1, 0), sin cambiar de columna (0), bajar de fila en fila (1). d) en diagonal de arriba hacia abajo y de izquierda a derecha como (1,1), bajando de fila en fila (1), a la derecha de letra en letra (1), e) la escritura en diagonal de abajo hacia arriba y de derecha a izquierda se codifica como (-1,-1), f) etc.

2014.06.07 programa PDonnelly.CellsMatrix

PDonnelly.CellsMatrix es un programa que reproduce el autómata celular propuesto por Peter James Donnelly y que esta programado en Tol utilizando una estructura matricial, Matrix, de celulas de opinion. Es un programa desarrollado en un solo fichero Tol y que al emplear una version moderna de la funcion FormatMatrix() de 6 parametros, que en las

PDonnelly.CellsMatrix es un programa que reproduce el autómata celular propuesto por Peter James Donnelly y que esta programado en Tol utilizando una estructura matricial, Matrix, de celulas de opinion. Es un programa desarrollado en un solo fichero Tol y que al emplear una version moderna de la funcion FormatMatrix() de 6 parametros, que en las versiones anteriores solo tiene 3, funciona a partir de la version Tol 2.0.1, sin embargo, su adaptacion a versiones anteriores no es compleja.

PDonnelly.CellsMatrix puede simular un comportamiento biológico como si fuera un ejemplo de la coexistencia y competencia de 2 clases de bacterias en un mismo medio, matriz, donde no falta su alimento, pero hay sobrepoblacion. En cada celda de la matriz hay una bacteria de una de las 2 especies y en cada paso del proceso se escoge al azar una de las bacterias para que muera y el espacio que deja libre sea utilizado por una de sus vecinas, elegida al azar, para reproducirse y que lo ocupe un ejemplar semejante a ella. A partir de la distribucion aleatoria inicial, con ambas clases de bacterias mezcladas, los ciclos de ejecucion, hacen que las bacterias de cada especie se organicen en grande grupos, que se mueven, se amplian o decrecen mientras luchas por sobrevivir. Tras un tiempo de ejecucion es posible que uno de los tipos de bacteria se convierta en dominante y el otro pueda llegar a extinguirse.

2014.06.06 programa Constraint.Queen

Solucionador del juego de las 8 reinas en un tablero de ajedrez como un sistema de restricciones con 3 componentes: a) restriccion que hay que cumplir, que es condicion logica, b) accion, que es una funcion correctora, c) reaccion, que es una funcion de backtrack frente a ciclos. Es un solucionador, programado de forma iterativa, desarrollado en un

Solucionador del juego de las 8 reinas en un tablero de ajedrez como un sistema de restricciones con 3 componentes: a) restriccion que hay que cumplir, que es condicion logica, b) accion, que es una funcion correctora, c) reaccion, que es una funcion de backtrack frente a ciclos. Es un solucionador, programado de forma iterativa, desarrollado en un solo fichero Tol en el que se declaran: a) todas las funciones para las reinas, b) para sus restricciones de no estar ni en la misma fila ni en diagonal y c) que asume como punto de partida que cada reina esta en una columna diferente a las otras. Este metodo iterativo que: a) para guardar memoria del estado en curso utiliza la reasignacion := de Tol y b) ademas tiene una variable de memoria de texto, ver seccion blackboard, que conserva todos los estados del proceso de solucion. La memoria (QueMemory) permite detectar ciclos y ademas generar una traza para que un simulador Javascript reproduzca visualmente el proceso de resolucion en Tol. El contenido de la memoria a partir de un estado inicial INI podria ser el siguiente 11111111INIT| 12111111A2:2| 13111111A2:3| 13211111A3:2|... 13524111R6:1|... como resultado de aplicar acciones (A) y reacciones (R) que mueven una reina a una fila, por ejemplo, A2:3, es la accion de mover la reina 2 a la fila 3. Esta comprobado el funcionamiento de Constraint.Queen para las versiones de Tol 1.1.5, 1.1.6 y 2.0.1, pero funciona con la version 1.1.1. Una posible razon son los 5 usos de la reasignacion := que se realizadan en este programa Tol cuando lo usual, y recomendable, es ninguno.

El programa Constraint.Queen realiza 3 funciones principales: a) Resuelve el problema clasico con las 8 reinas en la primera fila como posicion de partida. b) Tambien se autoplantea problemas, generando distribuciones al azar de las 8 reinas en diferentes filas, aunque cada una en su columna, y busca una solucion a partir de esa distribucion al azar de las 8 reinas sobre el tablero de ajedrez. Con ello es capaz de encontrar las 92 posibles soluciones al problema, si bien en la literatura se consideran que son 12 las unicas, pues las 92 se pueden generar mediante rotaciones y simetrias de las 12 unicas. Ha de hacerse notar que desde posiciones al azar no todas las 92 soluciones parecen ocurrir de forma equiprobable, si bien, esto es solo una intuicion producto de la ejecucion reiterada de este solucionador. c) Finalmente, Constraint.Queen, es capaz de generar una traza en lenguaje Javascript, en base a un array de pasos para cada caso resuelto y un array con todos los casos (hasta 92), para que un simulador programado en Javascript pueda reproducir el proceso de resolucion de cada caso desde una posicion al azar. Por lo que el numero de pasos de cada caso depende de la distancia de la posicion inicial al azar a la solucion alcanzable.

2014.06.06 programa ChRules.RandRecursive

ChRules.RandRecursive es un programa de aplicacion de reglas de reescritura que: a) aplica a un area rectangular de caracteres, b) reglas de transformacion de areas rectangulares de caracteres y c) que juntas forman una base de reglas de transformacion del contenido de ese area con un cierto objetivo. Las reglas de ChRules.RandRecursive son del

ChRules.RandRecursive es un programa de aplicacion de reglas de reescritura que: a) aplica a un area rectangular de caracteres, b) reglas de transformacion de areas rectangulares de caracteres y c) que juntas forman una base de reglas de transformacion del contenido de ese area con un cierto objetivo. Las reglas de ChRules.RandRecursive son del tipo [condicion, accion], esto es: a) si se cumple la condicion b) entonces se aplica la accion de transformacion. Tanto la parte de la condicion como la de la accion son 2 rectangulos de caracteres, en principio de identicas dimensiones, por ejemplo de 2x3 caracteres, de 1x2 caracteres, 3x5 caracteres, etc. La parte inicial del nombre del programa, ChRules, proviene de estas caracteristicas, Ch de Ch(aracters) y Rules de reglas, esto es, que se podrian llamar reglas de caracteres. La idea basica del funcionamiento es la siguiente: a) si en el estado actual del area de caracteres existe algun subarea rectangular con el mismo contenido que la parte de condicion de una regla, b) entonces dicha regla es aplicable y de aplicarse el subarea rectangular del area de caracteres que coincide con la condicion es sobreescrita, conservando la forma, con el area rectangular de caracteres de la accion de la regla. Por tanto, estas reglas de rectangulos de caracteres que utiliza el programa ChRules.RandRecursive pueden considerarse como reglas de reescritura, pero, a diferencia de otras reglas de reescritura, en vez de trabajar con secuencias de caracteres trabajan con areas rectangulares de caracteres.

ChRules.RandRecursive visualiza sus resultados de 2 formas diferentes: a) Mediante una traza de evolucion del mapa por pantalla. b) Mediante una traza en un fichero en disco, escrita en Javascript, que permite la posterior simulacion de los resultados. Esta traza en Javascript necesita ser retocada, por ejemplo, en la finalizacion de los arrays, para poder ser empleada por un simulador Javascript. El programa se estructura en base a un probrama principal make.tol que se incluye tantos ficheros de aplicaciones como casos se han programado. Cada uno de los casos consta de: a) Un area de caracteres inicial que puede ser cosiderado como el mapa de operaciones o la base de hechos. b) Una base de reglas con las reglas de caracteres que operan sobre dicho mapa. Las funciones principales de ChRules.RandRecursive son: a) Set EngineCicle() que es el motor recursivo de aplicacion de reglas. b) Set EngineGetRule() que elige al azar una regla aplicable y para ello se apoya en EngineMatch() que encuentra los posibles match entre subareas del area y la parte de condicion de las reglas. c) Set EngineApplyRule() que aplica una regla y transforma un subarea al azar, de entre las transformables, del area y para ello se apoya en la funcion EngineApplyAction() que aplica una accion a un area. d) Real PackPrint() que se encarga de visualizar las reglas, las areas en su estado inicial y en su evolucion e, incluso, de la creacion de las trazas, como arrays en Javascript, que permitiran la simulacion. Aunque escribe Javascript, este programa no es categorizado como de metaprogramacion pues el codigo Javascript que genera no es 100% funcional.

2014.05.29 programa Sfk.Diary

El programa Sfk.Diary es un conversor de textos en Word, que corresponden a anotaciones de actividades para partes de trabajo, con una anotacion por linea, a un formato que se puede pegar en Excel, de forma que cada concepto (empresa, proyecto, dedicacion, fechas, observaciones, etc.) se encaje en su celda correspondiente. El texto se copia de Word

El programa Sfk.Diary es un conversor de textos en Word, que corresponden a anotaciones de actividades para partes de trabajo, con una anotacion por linea, a un formato que se puede pegar en Excel, de forma que cada concepto (empresa, proyecto, dedicacion, fechas, observaciones, etc.) se encaje en su celda correspondiente. El texto se copia de Word al clipboard, a este texto que esta escrito en un lenguaje natural, aunque con ciertas reglas de escritura, este conversor, le da un formato Ascii separador mediantes tabuladores y le añade fórmulas y ambas cosas permite pegarlo en una plantilla Excel de control de trabajos.

Para simplificar la programacion de este conversor se emplea un unico fichero temporal y un solo clipboard por lo que este programa no soporta ejecuciones paralelas. Para el manejo del clipboard se utiliza una herramienta de sfk169.exe de las Swiss File Knife, Sfk, que pueden encontrarse en la direccion http://stahlworks.com/dev/swiss-file-knife.html. El programa sfk169.exe no se invoca directamente, se hace a traves de 2 programas de mandatos que permiten fijar un conjunto de caracteres que no de problemas con las eñes y enmascarar el uso de los ficheros temporales.

2014.05.28 programa Benford.Test

Este programa realiza diversos experimentos sobre el cumplimiento de la Ley de Benford en direrentes areas. Benford.Test consiste en una serie de pruebas que se realizan una tras otra, dependiento de su primera funcion If() de control y contiene algoritmos recursivos para la creacion de secuencias de operaciones basicas y aleatorias. La ley de

Este programa realiza diversos experimentos sobre el cumplimiento de la Ley de Benford en direrentes areas. Benford.Test consiste en una serie de pruebas que se realizan una tras otra, dependiento de su primera funcion If() de control y contiene algoritmos recursivos para la creacion de secuencias de operaciones basicas y aleatorias. La ley de Benford, tambien conocida como ley del primer digito, enuncia que, en los numeros de la vida real, el primer digito mas frecuente es el 1, luego el 2, luego el 3, ..., luego el 8 y finalmente el menos frecuente es el 9. Esta Ley de Benford parece comprobarse tanto en hechos relacionados con el mundo natural o con el social, por ejemplo, la longitud de rios, los totales de facturas, los precios de acciones, el numero de habitantes de las poblaciones, las distancias estelares, en las cifras resultantes de la realizacion de calculos con otras cifras, etc.

Ademas de otros experimentos, se dispone de un banco de 2000 datos que corresponden al acumulado del trafico de subida mas el trafico de bajada en bytes para un periodo de dias para un conjunto de 2000 direcciones MAC, Media Access Control address. La hipotesis es que este banco de 2000 datos esta manipulado y no corresponde a la realidad del trafico. Puede plantearse el siguiente experimento, seleccionar varios bancos de 2000 datos reales de trafico por MAC y para un periodo, registrados en una condiciones muy similares a las del banco de datos del que se sospecha y aplicar a estos bancos de prueba y al banco sospechoso la Ley de Benford. Se pueden establecer los 3 posibles resultados siguientes: a) Si ninguno de los bancos sigue la Ley de Benford, entonces podria concluirse que el trafico por MAC no sigue esta ley y no podria concluirse nada sobre el banco sospechoso con este experimento. b) Si todos los bancos siguen la Ley de Benford, entonces podria concluirse que el trafico por MAC si sigue esta ley y tampoco podria concluirse nada sobre el banco sospechoso con este experimento, pudiera ser autentico o falseado de tal forma que cumpliera la Ley de Benford. c) Si todos los bancos de prueba siguen la Ley de Benford pero el sospecho no la sigue entonces se podria concluir que el banco de datos de trafico por MAC efectivamente ha sido manipulado o generado de alguna forma para ser aportado como una prueba digital falsa y que no corresponde a la realidad. Cientificamente el experimento hay que hacerlo con varios bancos de trafico real. En este caso, por simplicidad, se ha seleccionado solo 1 banco de 2000 datos de trafico por MAC captados de la realidad, trafico de subida mas trafico de bajada. La conclusion puede deducirse claramente al final de este programa y existiran otras formas de analisis, pero el objetivo de este programa es realizarlo con la Ley de Benford.

2014.05.27 programa Constraint.Action

Programa de ejemplo de solucion de sistemas de restricciones del tipo (restriccion, accion correctora) programados de 3 formas diferentes a) por evaluacion iterativa, b) por recursion pura y c) por 2 funciones recursivas donde la primera se apoya en la segunda. De los 3 metodos es el iterativo el que puede resolver problemas con un mayor numero de

Programa de ejemplo de solucion de sistemas de restricciones del tipo (restriccion, accion correctora) programados de 3 formas diferentes a) por evaluacion iterativa, b) por recursion pura y c) por 2 funciones recursivas donde la primera se apoya en la segunda. De los 3 metodos es el iterativo el que puede resolver problemas con un mayor numero de pasos, el segundo con mas capacidad es el de 2 funciones recursivas (birecursivo) y el recursivo puro puede producir un desbordamiento de la pila cuando el numero de pasos (acciones y pruebas de restricciones) aumenta. Es un programa desarrollado en un solo fichero Tol en el que se declaran todas las funciones para hechos, restricciones, base de hechos y sus 3 formas de resolucion. En el metodo iterativo, la memoria entre las iteraciones, se implementa con un fichero interno de datos en formato Bst. Es una version basica de programacion con restricciones para uso formativo formativo donde: a) cada restriccion indica su solucion correctora, b) los hechos tienen como valor un solo numero y c) no existe un dominio para los valores de los hechos. Por ello puede resolver algunos problemas basicos de restricciones, en principio, sin circularidad en las restricciones, pero tiene problemas al resolver sistemas de restricciones mas complejos, si bien puede ser generalizable.

El metodo recursivo basado en 2 funciones de Constraint.Action se basa en un contador de la restriccion actual y los siguientes pasos: a) Busca a partir de la actual la primera restriccion que no se cumpla. b) Si el contador de restricciones encontrado supera al numero de restrucciones entonces es que se cumplen todas y se ha resuelto. c) Si hay una restriccion que no se cumple, entonces aplicar su accion y entrar en recursion desde la primera restriccion, el contador a 1. Con lo que en (a) la recursion no puede ser mayor que el numero de restricciones y se termina con cada busqueda y (c) producen una recursion que aunque profunda solo lo es de cambios, no de pruebas, por lo que es menor que la recursion del metodo recursivo directo.

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

Tol