Sumas y restas verticales de dos y tres dígitos
Lectura y vocabulario en inglés
Lectura y vocabulario
Alfabeto
Trazos y poliedros
Trazado y laberintos hexagonales
Trazado y laberintos de líneas rectas
Trazado y laberintos de bloques rectangulares
Lenguaje simbólico azul

En los setenta e inicios de los ochenta escribía en dos lenguajes, que aunque yo los consideraba hermanos, uno más de uso habitual y otro de uso más culto, tenían características y orígenes súmamente diferentes. Con el paso del tiempo y la dificultad de evolucionar, el lenguaje más culto e icónico fue desapareciendo de mi mente y el más habitual estilizándose en mi mano.
Hacia finales de los noventa e inicios del dos mil, el lenguaje icónico había desaparecido, ya no lo sabía escribir y prácticamente no lo podía leer, mientras que el otro se descompuso a su vez en dos, el que seguía escribiendo a mano ya con cierta dificultad y su evolución simbólica, curvilínea y automatizada, esto es, que yo no lo se escribir, aunque si leer, pero que se escribir programas que lo escriben.
Aunque cuando empecé a mecanizar este lenguaje simbólico ya existían tipos de letras escalables de Adobe y Apple y aunque estos símbolos están originalmente definidos como un conjunto de curvas, estas curvas se pasan a un formato gráficos que se escala ya como un mapa de bits, perdiéndose toda posibilidad vectorial. Para automatizar el manejo de estos gráficos he confiado tradicionalmente en Alchemy (alchlong.exe) de Handmade Software, invocándolo desde el lenguaje TOL que es en el lenguaje en el que se programan los algoritmos de escritura. A continuación muestro esta invocación, para dos usos diferentes de alchlong.exe desde TOL:
///////////////////////////////////////////////////////////////////
Set AlcSize(Text filPth) // File path
///////////////////////////////////////////////////////////////////
{
If(Not(FileExist(filPth)), [[0,0]], // File doesn't exist
{
Text tmpDos = "tmp\\alchemy.tmp"; // Store alchemy information
Text inpDos = "tmp\\smb.imb"; // Alchemy don't handle complex
Real FilCopy(filPth, inpDos); // file names
Real sysExe = System("bin\\alchlong.exe "+ // Executable
"-x "+ // Options
inpDos+" > "+ // Input file path
tmpDos); // Output file path
Text tmpTxt = ReadFile(tmpDos);
Text sizTxt = TxtBetween2Tag(tmpTxt,
"Width x Height: ","\n",TRUE);
If(sizTxt=="", [[0,0]], // Size doesn't exist
{
Set sizSet = Tokenizer(sizTxt,"x"); // width x height
Real width = Eval(sizSet[1]+"; ");
Real height = Eval(sizSet[2]+"; ");
[[width, height]]
})
})
};
///////////////////////////////////////////////////////////////////
PutDescription(
"Returns a set (width, height) in pixels of a image.",
AlcSize);
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
Real Bmp2Pic(Text bmpDir,
Text picDir)
///////////////////////////////////////////////////////////////////
{
Set filSet = GetDir(bmpDir)[1];
Set filCic = EvalSet(filSet, Real(Text filNam)
{
Text inpFil = bmpDir+"/"+filNam;
Text outFil = picDir+"/"+Replace(filNam,".bmp",".gif");
FilMake(inpFil, outFil, Real(Text inpFil, Text outFil)
{
Text inpDos = "tmp\\smb.bmp";
Text outDos = "tmp\\smb.gif";
Real FilCopy(inpFil,inpDos); // Alchemy don't handle complex
// file names
Real sysExe = System("bin\\alchlong.exe "+ // Executable
"-g -Xb56 -+ ---t -o "+ // Options (84)
inpDos+" "+ // Input file path
outDos); // Output file path
Real FilCopy(outDos,outFil);
sysExe
})
});
Card(filCic)
};
En la plana de lenguaje simbólico que puede verse al final de este post, los símbolos están ajustados a un cuadrado sobre una imagen de fondo que corresponde a mi acuarela llamada «requiescant in pace». Es a la vista de la plana cuando se entiende que clasifique este post más como pintura y poesía que como pura tecnología.
Portadas de Marca y estadística predictiva

En Bayes, trabajábamos para Marca, el diario deportivo más vendido en España, incluso por encima de la prensa generalista. Nuestra tarea consistía en realizar previsiones de ventas de Marca quiosco a quiosco para optimizar su distribución.
Estas previsiones dependían de múltiples factores, y entre ellos el más importante era la modelización del fútbol. Desarrollamos un modelo que representaba la evolución de los equipos: los que ascendían, los que descendían, la fuerza deportiva que tenían y cómo estas dinámicas influían en la venta de periódicos. El lector no solo compraba el diario para conocer los resultados de su equipo, sino también por las expectativas sobre su evolución y sus futuros logros.
Como efecto lateral, estos modelos de fútbol generaban predicciones de resultados estadísticamente fiables. Tanto fue así que, entre 2002 y 2004, Marca publicó nuestras previsiones de resultados en sus portadas y con todo detalle en sus páginas interiores. Nuestros computadores simulaban hasta 240.000 partidos, utilizando para cada equipo la serie temporal de su fuerza deportiva, y estas predicciones acertaban más del 90% de los resultados finales.
Ver esas previsiones impresas en la portada del diario deportivo más importante de España fue un hito que demostró cómo la estadística y la tecnología podían aplicarse al mundo del deporte.
- Collaboration as Bayes Manager with the sports newspaper Marca for football statistical modeling and result forecasting published on the cover pages and inside, Madrid, 2002-2004.
- Colaboración como Director de Bayes con el diario deportivo Marca para la modelización estadística del fútbol y previsión de resultados publicados en portada y en el interior, Madrid, 2002-2004.