domingo, 03 marzo 2013
De picas y de famas (3)
Cuando mi amigo Rodrigo supo que yo estaba escribiendo un programa para jugar Picas y Famas se interesó mucho en el algoritmo y en las bases matemáticas que empleaba. En esa época, él trabajaba en un ministerio, quizás el de hacienda. Se le ocurrió que la fórmula podría servir para encontrar no sé qué similitud entre los números de las cédulas de ciudadanía. Programó una prueba para ver si le funcionaba pero se equivocó en los parámetros pues en lugar de imprimir unas pocas páginas, usó una caja entera o más de papel perforado con copia de carbón que era de los más caros. Me contó que le tocó inventar una excusa para evitar problemas.
No sé quién nos dio la idea de escribir un artículo para una revista especializada. Lo cierto es que nunca lo escribimos y lo único que quedó fue el programa de demostración para cuando los estudiantes de informática fueran a visitar el centro de cálculo. Ni siquiera guardé copia para mí. Cuando cambiaron el computador solo me quedó el recuerdo.
Pasaron más de diez años hasta que tuve otra oportunidad de revivir la fórmula de las picas y famas para una aplicación diferente. Se trataba de un corrector ortográfico que propusiera palabras correctas suficientemente cercanas a la equivocada. Era para una base de datos terminológica. Me acordé del juego y empecé a ver si podía escribir una fórmula que cumpliera con la definición matemática de distancia.
Una función de distancia o métrica debe cumplir tres condiciones:
- La distancia entre dos puntos debe ser cero o positiva.
- Debe ser simétrica, es decir la distancia de A a B debe ser igual a la distancia de B a A y
- Las distancias entre tres puntos A, B y C deben cumplir la desigualdad triangular, es decir la suma de las distancias de A a B y de B a C siempre debe ser mayor a la distancia de A a B cualesquiera que sean los puntos A, B y C.
La función que me inventé calculaba un valor entre 0 y 1 a partir del número de picas y famas que tenían dos palabras entre sí. Mientras más parecidas, el valor era más cercano a cero; mientras más diferentes, el valor era más cercano a uno.
Pasé días tratando de probar matemáticamente que mi fórmula era una distancia. Lo pude demostrar para palabras que tuvieran el mismo número de letras, pero todo se complicaba con longitudes desiguales pues no llegaba a demostrar la desigualdad triangular.
19:22 Anotado en Elucubraciones, Juegos, Recuerdos | Permalink | Comentarios (0) | Tags: programación, informática
domingo, 17 febrero 2013
De picas y de famas (2)
Me cuenta mi viejo amigo Emiliano que el juego de los barcos se llamaba Batalla Naval. A mí me parece que ese es el nombre del juego comercializado años después pero no recuerdo si era el mismo nombre que cuando lo jugábamos con papel y lápiz.
Algo que sucedía a veces en esos juegos manuales era que uno se equivocara al dar el puntaje de la jugada. En general era involuntario, pero a veces uno caía con un adversario que no quería perder y trampeaba. En la foto de mi anterior nota, hay un error en el número de picas y famas. Ayer estuve jugando al Mastermind con Coni en un juego viejo que tenemos en casa y de nuevo sin querer nos equivocamos al confundir colores.
Cuando se juega contra el computador, esos errores son imposibles pues él controla el respeto de las reglas.
Tendría yo como 23 años, terminando mi carrera de ingeniero informático, el título exacto era ingeniero de sistemas y computación, cuando se me ocurrió escribir un programa para jugar a Picas y Famas contra el computador. En esa época teníamos en la Universidad de los Andes un IBM 360 con apenas 128K de memoria principal (si no me equivoco). Los programas eran en tarjetas perforadas y solo uno se ejecutaba a la vez, pues se procesaban por tandas.
A los estudiantes de los últimos semestres nos permitían quedarnos por las noches para adelantar nuestras tesis. Fueron muchas noches en blanco tratando de hacer funcionar nuestros proyectos.
Creo que programé el juego de Picas y Famas cuando ya me había graduado y empecé a trabajar en el Centro de Cómputo de la universidad. La idea clave que me permitió programas el juego fue darme cuenta de que en realidad cuando uno juega lo que hace es eliminar los números que no concuerdan con los resultados de cada intento. Es decir de las diez mil posibilidades desde 0000 a 9999 en el primer intento, vamos reduciendo mentalmente el conjunto hasta llegar al único número que tiene cuatro famas. El programa que escribí hacía exactamente eso: de una lista de diez mil números se iba quedando con los que cumplieran con el número de picas y famas del resultado. La relación es simétrica: si A tiene X famas y Y picas con respecto a B, B también las tiene con respecto a A.
Era muy gracioso ver el duelo entre el hombre y la máquina en la consola del computador. Cada uno probaba con un número y daba el resultado al adversario. Al comienzo era el computador el más lento en calcular, pero a medida que el juego avanzaba, el hombre debía pensar mucho más y la máquina aceleraba pues su lista se reducía cada vez más. En esa época también escribí un programa interactivo para simular una calculadora desde la consola del IBM. Usábamos esos juegos cuando presentábamos el Centro de Cómputo a los estudiantes de primeros semestres.
16:10 Anotado en Elucubraciones, Juegos, Recuerdos | Permalink | Comentarios (0) | Tags: programación, informática
domingo, 10 febrero 2013
De picas y de famas (1)
Tendría como diez años cuando mi hermano Camilo me enseñó un juego sencillo y divertido que practiqué mucho durante esos años: picas y famas. Solo se necesita papel y lápiz. Dos jugadores se enfrentan. Cada uno escoge en secreto un número de cuatro cifras. El ganador es el que primero que adivine el número del adversario. En cada turno, uno propone un número y el otro responde con cantidad de famas y picas encontradas. Luego le toca al adversario tratar de adivinar.
Una fama es cuando una cifra está en la posición exacta. Una pica es encontrarla en una posición diferente. Sacar cuatro famas quiere decir que se ha ganado. Sacar cuatro picas quiere decir que ya se tienen las cuatro cifras pero falta ponerlas en orden. Tener cero famas y cero picas parece un muy mal intento, sin embargo es una información importante ya que permite descartar cuatro cifras de una sola y concentrarse en las seis restantes.
Entran en juego la lógica y la suerte. Para que no se hiciera muy largo a veces se ponía la regla de no repetir cifras en el número por adivinar. Claro que el número que uno daba en cada intento sí podía tener repetir cifras. Tiene cierto parecido al sudoku que tanto éxito ha tenido en estos años o a otro que también jugábamos mucho de guerra con aviones, barcos, soldados, tanques que uno dibujaba en hojas cuadriculadas y que debía encontrar dando las coordenadas donde uno supuestamente había enviado una bomba; en francés, llaman a este último Touché coulé . En todos estos juegos se lanzan hipótesis que se van confirmando o no hasta llegar a dar por deducciones con el objetivo buscado.
A mí no me iba tan mal en ese juego que seguramente tendrá nombres diferentes según el país o la región. Años después Picas y Famas fue comercializado con fichas de colores con el nombre de Mastermind.
21:39 Anotado en Elucubraciones, Juegos, Recuerdos | Permalink | Comentarios (2) | Tags: programación, informática