lunes, 4 de enero de 2010

Calendario perpetuo circular (II). Preparación de los Cálculos

El calendario vigente en todos (o la mayoría) de los países del mundo, está vigente desde el 15 de Octubre de 1582. Los países católicos fueron los primeros en adoptarlo (recuérdese que se llama gregoriano porque el papa Gregorio XIII fue quien encargó la reforma del anterior, el juliano).

El calendario gregoriano funciona así:

1º) Cada año tiene 12 meses y cada mes, salvo Febrero, tiene una cantidad fija de días que varía entre 30 (Abril, Junio, Septiembre y Noviembre) y 31 (Marzo, Mayo, Julio, Agosto, Octubre, Diciembre y Enero).

2º) El mes de Febrero es especial, pues tiene 28 días los años normales y 29 los años bisiestos.

3º) Un año normal tiene, pues, 365 días y un año bisiesto tiene 366 días. Para saber si un año dado es bisiesto se procede como sigue:
  • Si es año secular (si acaba en 00) será bisiesto sólo si el número formado por sus dos primeras cifras es divisible entre 4. Así los años 1600 y 2000 fueron bisiestos (16 y 20 son divisibles entre 4) pero los años 1800 y 1900 no lo fueron (ni 18 ni 19 son múltiplos de 4).
  • Si no es año secular (si no acaba en 00), entonces será bisiesto sólo si el número formado por sus dos últimas cifras es divisible entre 4. Así, los años 2004 y 1972 fueron bisiestos, pero los años 2005 y 1969 no lo fueron.
4º) Los días de la semana son 7: Domingo, Lunes, Martes, Miércoles, Jueves y Viernes.

Si no tienes ganas de aprender a hacer las cuentas necesarias (cosa fea), puedes saltarte lo que queda de post e ir a los siguientes, donde pondré los resultados.


¿Sigues leyendo? Estupendo. Ahora vamos a ver qué necesitamos para calcular el día de la semana de una fecha dada. Lo esencial de lo que sigue está publicado en un libro llamado Recreaciones Matemáticas 4, de Édouard Lucas, publicado en la Editorial Nivola y traducido al castellano por Javier Serrano, un gran amigo.

En primer lugar hay que elegir un día origen o día uno (podríamos llamarlo día cero, pero como se verá luego, es mejor día uno). Puede ser cualquiera, sólo es necesario saber qué día de la semana fue. Para que el resultado final quede más o menos normal, sería bueno elegir un domingo. Vamos a elegir como origen el

Domingo, 1 de Octubre de 1600.

Una observación: en todo lo que sigue consideraremos que el año empieza el 1 de Marzo y termina el 28 ó 29 de Febrero. Así podemos considerar todos los meses de Febrero de 28 días y el día extra lo añadiremos al año bisiesto, no al mes de Febrero. Así pues, a efectos de cálculo, el día 23 de Febrero de 1981, por ejemplo, será considerado como un día del año 1980, puesto que 1981 empieza el 1 de Marzo. Es decir, los meses del año empiezan en Marzo y terminan en Febrero. Aunque ahora no veas muy el porqué de esta elección, te aseguro que así los cálculos serán más sencillos. Así que los años bisiestos ya no son el 4, el 8, el 12... ahora son el 3, el 7, el 11..., es decir, todos los que al dividirlos entre 4 se obtiene un resto de 3.

Otra observación: el año 1634, por ejemplo, pertenece al siglo XVII, pero, a efectos de cálculo, diremos que pertenece al siglo 16 (sus dos primeras cifras). En este sentido, para nosotros, un siglo comenzará en el año 00 y terminará en el 99, no como en el calendario oficial en el que un siglo empieza el año 01 y termina el 00 (por ejemplo, el siglo XX empezó con el año 1901 y terminó con el año 2000). Pero se ve claramente que es más sencillo considerar como un siglo desde el año 1900 hasta 1999 y llamarlo, además, siglo 19. Estos cambios de número en los siglos no habría que hacerlos si hubiera existido un año 0 y un siglo 0, pero en fin.

Nos preguntamos ahora: Albert Einstein nació el 14 de Marzo de 1879; ¿qué día de la semana fue?

Lo que haremos será calcular cuántos días han pasado desde la fecha origen hasta la fecha dada y dividiremos este número entre 7. Supongamos que el resultado de la división (sin cifras decimales) es x.
  • Si la división es exacta, es decir, si el resto es 0, eso querrá decir que entre ambas fechas habrán pasado x semanas exactas y, entonces, la fecha dada volverá a ser Domingo, como la fecha origen.
  • Si el resto de la división es 1, querrá decir que entre ambas fechas habrán pasado x semanas exactas más 1 día y, entonces, la fecha dada será Lunes.
  • Si el resto de la división es 2, querrá decir que entre ambas fechas habrán pasado x semanas exactas más 2 días y, entonces, la fecha dada será Martes.
  • Si el resto de la división es 3, querrá decir que entre ambas fechas habrán pasado x semanas exactas más 3 días y, entonces, la fecha dada será Miércoles.
  • Si el resto de la división es 4, querrá decir que entre ambas fechas habrán pasado x semanas exactas más 4 días y, entonces, la fecha dada será Jueves.
  • Si el resto de la división es 5, querrá decir que entre ambas fechas habrán pasado x semanas exactas más 5 días y, entonces, la fecha dada será Viernes.
  • Si el resto de la división es 6, querrá decir que entre ambas fechas habrán pasado x semanas exactas más 6 días y, entonces, la fecha dada será Sábado.
No nos importa cuánto vale x, es decir, el número de semanas exactas, así que vamos a hacer los cálculos sin necesidad de guardar este dato. Sólo nos interesará el resto de la división entre 7.

Sentadas estas bases, en el próximo post comenzaremos los cálculos.

Calendario perpetuo circular (I)

Un calendario perpetuo nos sirve para calcular qué día de la semana fue o será una fecha dada. Voy a mostrar aquí, en distintos post, cómo puede construirse uno usando madera y papel. Aunque este cálculo puede realizarse de manera rápida mediante un ordenador o, incluso, un teléfono móvil, la gente se asombra mucho al ver dos discos de madera que giran y te dicen si un día dado es lunes, martes o lo que sea. Yo lo he probado muchas veces y el efecto de sorpresa siempre se da porque no se vislumbra a simple vista todo el cálculo que llevan detrás los círculos y que hemos hecho nosotros previamente. En cambio, nadie se asombra de lo más sorprendente: que el ordenador sea capaz de hacerlo.

Aunque se puede hacer de muchas formas y medidas, yo daré a continuación los datos que yo utilicé. Necesitas los siguientes materiales:

1º) Dos discos de madera. Uno de 16 cm de diámetro y otro de 20 cm de diámetro. El grosor de ambos es de 1 cm.

2º) un cubo de madera de 9 cm de lado.

3º) Un espárrago roscado (vamos, un tornillo sin punta ni cabeza) de unos 5 cm de longitud.

4º) Tres tuercas de la medida del espárrago.

5º) Tres arandelas de la medida del espárrago (con orificio interno menor que las tuercas).

6º) Un tirador de puertas de armario o cajón que pueda enroscarse en el espárrago.

Lo mejor es empezar buscando el tirador y luego el espárrago, las tuercas y las arandelas.

Preparación del material (esto como lo del Ikea, pero más fácil)

1º) Perfora los dos discos por su centro de forma que el espárrago entre por el agujero un poco holgadamente, para permitir que los discos giren, pero no tan holgadamente que los discos se desplacen.

2º) En uno de los extremos del espárrago pon una doble tuerca, es decir, dos tuercas apretadas entre sí.

3º) Encima de las dos tuercas coloca una arandela y encima de ésta el disco grande.

4º) Encima del disco grande pon una arandela y encima de ésta una tuerca. Aprieta un poco la tuerca contra la arandela, pero no mucho.

5º) Encima de la tuerca pones otra arandela y encima el disco pequeño.

6º) Encima del disco pequeño enrosca el tirador. Éste debe quedar apretado contra el disco, así que, a lo mejor, debes bajar un poco la doble tuerca y todo lo demás.

7º) Aprieta la doble tuerca contra el disco grande, pero no demasiado.

8º) En el centro de una cara del cubo haz un taladro (no pasante) para que quepa en él el espárrago con la doble tuerca. El disco grande debe apoyar contra la cara del cubo.

9º) Apretando o aflojando la tuerca que pusiste entre los dos discos debes conseguir que, al girar el tirador, giren los dos discos solidariamente con él y que, si fijas con la mano el disco grande, sólo gire el pequeño cuando giras el tirador. Éste es el punto exacto del artefacto.

Realizadas todas las operaciones anteriores, desmóntalo todo, lija bien todas las piezas y guárdalas, porque ahora es el momento de hacer las cuentas.


Robot con caja de cerillas (y VI)

Supongo que ya te has construido todas las cajas con sus botones correspondientes en su interior y su papel pegado en la cara de la caja. Si no es así lee los posts anteriores para construirlo. Veremos aquí el funcionamiento del robot.

Dispón en una mesa las cajas de cerillas ordenadas según el número que lucen: las que tienen un 2 en una primera fila (la más cercana a ti), las que tienen un 4 en la siguiente fila y las que tienen un 6 en la última. Pon en el centro de la mesa el tablero y los peones en la posición inicial (los peones negros han de ser los más cercanos a ti) y reta a algún pardillo que pase por ahí a ver si es capaz de ganarle a un simple robot de cajas de cerillas.

Tras explicarle al pardillo las reglas del juego, invítalo a que haga su primer movimiento. Busca entre las cajas que tienen el número 2 y escoge aquélla que tiene dibujado el mismo tablero que el actual del juego. Si hay varias flechas dibujadas habrá varios botones en su interior. Explícale al pardillo que, de momento, el robot no sabe jugar bien, sólo conoce las reglas del juego y por eso va a jugar al azar y quizás haga jugadas que no haría un humano.

Tras escoger la caja adecuada, extrae uno de los botones al azar. Supongamos que sale el rojo. Mira la flecha roja del dibujo y realiza el movimiento que indica esta flecha. Guarda el botón y devuelve la caja a su lugar. Ésta es la manera que tiene el robot de jugar: tú eres su brazo mecánico, pero él decide (al azar de momento) qué movimiento hay que hacer.

Cuando el pardillo haga su segunda jugada (la tercera del juego) busca entre las cajas que tienen un 4 el dibujo con el tablero actual y repite lo anterior: sacar un botón, buscar la flecha con ese mismo color, etc., pero esta vez no guardes el botón, déjalo sobre la caja.

Si en la siguiente jugada el pardillo no gana, repite la acción anterior con las cajas que tienen un 6 (puedes guardar el botón de la caja número 4). Si ganas la partida es que el pardillo es verdaderamente un pardillo. Si pierdes la partida es lo mejor (de momento), porque la derrota permitirá que el robot aprenda. Esta es la forma de aprendizaje del robot:

Cuando pierdas la partida retira del juego el último botón que ha jugado el robot, guárdalo en un bolsillo.

¿Y así aprende el robot? Pues sí, porque de repetirse la misma partida, el robot ya no hará esa jugada mala (porque el botón ya no está en la caja). Así que ha aprendido a no repetir jugadas malas, es decir, jugadas que llevan a la derrota. Invita a tu pardillo a repetir la partida varias veces. Verás que el robot, con cinco o seis derrotas, ya no pierde nunca y, como poco, fuerza las tablas. Ahora sí que tu pardillo pondrá cara de pardillo.

Este juego está explicado en un libro de Martin Gardner, pero no recuerdo el nombre. Sería posible aplicarlo a cualquier otro juego que tenga estrategia ganadora o bien estrategia no perdedora, aunque es posible que si el juego es muy complicado el número de cajas sea tan grande que no merezca la pena hacerlo.

Si construyes este robot u otro similar, por favor, házmelo saber.

Robot con caja de cerillas (V). Cajas 6ª jugada











Robot con caja de cerillas (IV). Cajas 4ª jugada












Robot con caja de cerillas (III). Cajas 2ª jugada


En el anterior post ya se explicó cómo pueden construirse todas las cajas del robot. Para aquéllos que no tuvieron gana de analizar por sí mismos el juego, les pongo a continuación todos los dibujos de las cajas. Cada uno de ellos debe ser pegado sobre una de las cajas. Se observará que, a pesar del comentario sobre la simetría de algunas posiciones del post anterior, aparecen dibujos simétricos respecto de la vertical que pasa por el centro. Aunque esto signifique aumentar el número de cajas preferimos hacerlo así porque se gana en facilidad de manejo del robot. El juego podría quedar en 19 cajas si no se usan dibujos simétricos.

Cajas para la segunda jugada:






Robot con caja de cerillas (II). Construyendo el robot.



Vamos a construir el robot. Primero haremos el hardware y luego el software, es decir, primero haremos la máquina y luego la dotaremos de "cerebro". Prepara los siguientes materiales:

1º) Cajas de cerillas normales, pero sin cerillas, sólo necesitamos las cajas. Prepara 24.
2º) Rectángulos de papel del mismo tamaño que la cara grande de las cajas de cerillas. Cada rectángulo de papel (mirándolo en vertical) debe llevar dibujado un tablero del juego vacío en pequeñito, dejando espacio abajo para escribir un número. Más adelante diremos qué número y qué dibujaremos en el tablero. Prepara 24 rectángulos de papel, uno por caja.
3º) Cuatro bolígrafos: uno azul, otro negro, otro rojo y otro verde.
4º) Bolitas o botones azules. Te recomiendo los botones. Su tamaño debe permitir que en una caja de cerillas quepan con holgura cuatro o cinco botones. Los siguientes botones de esta lista han de tener el mismo tamaño. Prepara 24.
5º) Botones rojos: prepara 22.
6º) Botones verdes: prepara 7.
7º) Botones negros: prepara 2.

Cada caja de cerillas debe representar una de las posibles situaciones del juego. Por ejemplo, si el jugador humano inicia la partida moviendo el peón de su derecha, entonces el tablero presentará el siguiente aspecto:

Una de las cajas de cerillas debe presentar este tablero. Tomamos uno de los papeles rectangulares y dibujamos en su tablero las fichas en esta posición. Además, vamos a añadir las posibilidades de movimiento que tiene el robot mediante flechas de colores, cada posibilidad con un color diferente. Usaremos siempre el siguiente código de colores: la 1ª posibilidad en azul, la 2ª en rojo, la 3ª en verde y la 4ª en negro (nunca habrá más). Así que añadimos al papel las flechas correspondientes y obtendremos un dibujo así:


Además, debajo del tablero, hemos añadido el número 2. La razón es que este dibujo presenta las opciones del robot para realizar la 2ª jugada (la 1ª la realizó el humano).

Ahora pegamos este papel en una de las cajas de cerillas e introducimos en ella un botón por cada flecha dibujada, exactamente de los mismos colores. En este caso introduciremos un botón azul, otro rojo y otro verde. Ya tenemos esta caja preparada.

Quizás estés pensando: "¿Y si el jugador humano, en su primera jugada, avanza el peón de su izquierda en lugar del peón de su derecha?". No pasaría nada. La posición resultante sería simétrica de la anterior respecto de la recta vertical que pasa por el centro del tablero, nos daríamos cuenta inmediatamente y podríamos usar esta misma caja de la forma que se verá más adelante (también podríamos construir una caja con esa posición y evitarnos así buscar posiciones simétricas, pero esto aumentaría considerablemente el número de cajas necesarias).

También podrías pensar: "¿Y si el jugador humano, en la primera jugada, avanza el peón central?". Esta situación es diferente y tienes que construir una caja para esa posición siguiendo los mismos pasos que hemos dado antes. También debes ponerle a esta caja el número 2, pues nos indicará también posibilidades para la segunda jugada de la partida.

Una vez hecho lo anterior, tienes que analizar todos lo movimientos posibles del jugador humano en la 3ª jugada (que dependerán de la 2ª jugada y ésta de la 1ª). Para cada posición que pueda dejar el humano debes construir una caja con sus flechas y sus botones correspondientes. Este análisis te llevará un buen rato, así que te recomiendo que no te aburras.

Si no quieres hacer el análisis (error que cometes), espera al siguiente post, donde pondré el dibujo que debe llevar cada caja.