Cifras y Letras es un veterano concurso de televisión de origen francés (Des chiffres et des lettres), que, con mínimas diferencias, se ha emitido a lo largo de los años en muchísimos países del mundo (el autor ha visto el concurso en bastantes lugares del mundo, zapeando en la tele de esos hoteles del mundo mundial al que una vez le llevaron sus andanzas de “Viejo Informático”). En España se empezó a emitir en 1991, y, con algunas lagunas y cambios de emisora, se viene emitiendo desde entonces con asiduidad.
Imagen (Screenshot) de la versión inglesa del programa (Wikipedia)
Hace años estuve yo una buena temporada no diré que obsesionado, pero sí interesado en el programa, que como se emitía a las tres y pico de la tarde, o sea, cuando yo estaba trabajando en la oficina o donde fuera, lo grababa cada día y lo veía luego grabado por la noche siempre que podía, intentando ponerme en la piel de los concursantes. Pensar en acertijos de cifras y letras me relajaba mucho después de mi ardua tarea…
En este artículo voy a contaros cómo es posible resolver de forma óptima, o al menos lo suficientemente óptima, mediante programas informáticos, los acertijos de ambas partes del programa, la de “Letras” y la de “Cifras”, que es la que es realmente interesante… siempre desde la consabida óptica de antes simplista que incomprensible inherente a la casa en que estamos alojados.
El objetivo de este artículo no es tanto investigar la forma matemáticamente óptima de atacar un problema concreto como puede ser éste, sino más bien mostrar un ejemplo de cómo desmenuzar paso a paso el ataque a un problema dado, para resolverlo de la forma más eficiente que nos sea posible, en este caso mediante un programa informático, pero en otros quizá mediante técnicas de ingeniería, matemáticas o del tipo que sean. Y he dicho eficiente, es decir, que obtiene los resultados deseados con el mínimo uso de recursos posible.
En nuestros atareados tiempos de Teras de disco, Gigas de RAM, GHz de velocidad de procesador y procesadores de no-sé-cuántos núcleos, y todo ello barato, barato, nos hemos acostumbrado (mal-acostumbrado) a resolver todos nuestros problemas informáticos a base de aumentar los recursos todo lo aumentable. ¿Que va lento…? ¡Métele más Gigas, leñe! ¡Y más rápidas! Y hay veces que, por más recursos que le eches, sigue sin ir bien…[]
Yo empecé a trabajar, a mediados de los setenta, con un ordenador con memoria de ferritas de unos 400KHz (sí, K, no M, ni mucho menos G), con 32 KB de RAM (efectivamente, K, no M, ni mucho menos G) y discos duros removibles de 4 MB (M, ni G ni T ni ná de ná). En estas condiciones había que ser un auténtico artista para conseguir escribir una liquidación de cuentas o de préstamos que funcionara como es debido en ese ordenador del Jurásico. Y lo lográbamos. No penséis, sin embargo, que ese problema de la asfixiante escasez de recursos de máquina ha desaparecido hace años… Hoy en día sigue habiendo problemas donde la optimización es absolutamente necesaria, bien porque requieren tratar con muchísimos millones de datos, o porque necesitan gestionar miles de transacciones por segundo, o simplemente porque deben funcionar en dispositivos móviles, empotrados o de escasa capacidad. De eso va en realidad esta historia, tomando como excusa al inocente “Cifras y Letras”…
Además, para que el artículo no quede en pura investigación para optimización, aprovecharemos para contar un par de las herramientas que los informáticos, ingenieros y otra ralea similar utilizamos para resolver algunos problemas: los diccionarios (en este caso, diccionario inverso) y la notación polaca inversa (o notación postfija). Vamos allá.
Sigue leyendo ›