Monday, June 30, 2014

México eliminado del Mundial 2014


Pasó en el cuarto partido: México perdió contra Holanda en los últimos seis minutos del encuentro 2 a 1. Se acabó. Así es el futbol, así son los mundiales, así son las cosas. Para muchos el golpe fue muy duro. Se nos alimentó la esperanza cuando el seleccionado vencía a Camerún (que a la postre no traía nada), pero empatando contra el local Brasil y finalmente, ganándole a Croacia 3 a 1, en uno de los partidos más vistosos del tricolor.

Y ya se hablaba del quinto partido. Televisa salía con sus promocionales de "No hay quinto malo", etcétera.  Y como todo es negocio, nadie tiene la sensatez para decir en los medios que México no es ni ha sido una selección poderosa, un país potencia en futbol. De alguna manera arrastramos esta herencia y además, tenemos en contra un factor importante: somos del tercer mundo y aunque algunos lo duden, eso sí hace diferencias.

Villoro publicó un artículo interesante al respecto, en donde de alguna manera desgrana lo que pasó en este triste partido contra Holanda. Nos dejaron en el sueño de siempre, en ese mítico quinto encuentro que nunca llega. Para ser campeón del mundo hay que jugar siete partidos (y ganar el último, desde luego). Pero una vez más, fue derrotada la selección del "Piojo" Herrera y listo. A hacer maletas y a casa. ¿A esperar otro mundial?

Yo no veo con frecuencia el futbol y hace mucho que dejé de interesarme por el mismo. Sin embargo, no puedo sustraerme a todo este circo mediático que nos bombardeará hasta el 13 de julio de este año. Pero sé que a muchos mexicanos este partido fue como la noche triste. Algunos habrán llorado, como lo hicieron -creo- Giovanni Do Santos y el mismo Miguel Layún. Es duro y eso que los hombres no lloran es un mito. La frustración, el coraje de quedarse de nuevo en el "ya merito" es espantoso, es para soltar las de cocodrilo.

Pero quizás es más espantoso porque nos hicieron creer que el Piojo éste nos iba a traer la Copa Mundial al país. Si algo tiene de mérito este director técnico es que le dio una esperanza a una selección que pronosticaba ser un fracaso rotundo más mucho antes de llegar a octavos de final.

Yo creo que hay que aprender. Holanda -dice Villoro- fue subcampeón del mundo tres veces y no hace drama. La vida sigue. Pase lo que pase no se pierde la calidad de mexicano. No podemos ni debemos poner nuestro orgullo patrio por un partido de futbol, aunque sea en el mundial. Deberíamos aprender que así es la competencia y si de verdad la selección mexica busca un futuro éxito, tendrá que lamer sus heridas, ve qué han hecho mal una y otra vez, y buscar darle a la afición, siempre fiel, una verdadera alegría. Ya López Portillo una vez dijo que México era mágico, pues cada seis años se renovaba la esperanza. Esto mismo pasará con el futbol en cuatro años.

Y sí, el dolor, la decepción es grande. Pero parece ser que era inevitable.

Saturday, June 28, 2014

Reto de la programación lúdica: silabeo de un texto


Cuando fuimos a la primaria, quiero suponer que fue ahí, se nos enseñó a silabear un texto, es decir, separar en sílabas las palabras. Esto se hacía con mucha frecuencia en las publicaciones pero cuando la computadora llegó finalmente a la cotidianidad, nos encontramos con que los procesadores de palabras, la mayoría de origen estadounidense, no silabeaban, vamos, no separaban una palabra en sílabas por si no cabía en una línea, sino que en ese caso, toda la palabra se bajaba a la siguiente línea.  Programas como InDesign -de Adobe- tiene la opción de silabeo para no ajustar las líneas con espacios de más o separando las letras unos puntitos aquí y otros allá para poder justificar una línea completa.

El silabeo es pues quizás una especie de arte perdido. ¿Cómo se silabea una palabra? He aquí las reglas elementales:

1. Cuando una consonante está entre vocales se une a la vocal que la sigue.
* Ejemplo: a-ni-llo, mo-ne-da
2. Cuando hay dos consonantes entre vocales, la primera se une a la vocal precedente y la segunda, a la siguiente.
* Ejemplos: al-to, ar-tis-ta
3. De tres consonantes entre vocales, las dos primeras se unen a la vocal que las antecede y l aotra, a la que sigue.
* Ejemplos: ins-tar, abs-ten-ción, pers-pi-caz
* Excepciones: cuando hay grupos inseparables de consonantes: in-glés, am-pliar
4. Cuando hay cuatro consonantes entre vocales, entonces, las dos primeras se unen a la vocal anterior y las otras dos a la que sigue.
* Ejemplos: ins-truir, trans-gre-sión
5. Las consonantes forman grupos inseparables cuando se encuentran las letras “l” o “r” junto con alguna de las letras “b”, “c”, “d”, “f”, “g”, “p” o “t”.
* Ejemplos: a-brir, a-gra-da-ble, de-plo-ra-ble
6. Cuando dos vocales forman un diptongo, éstas no se separan al silabear.
* Ejemplos: ai (baile); au (pausa); ei (peine, ley); eu (feudo); ia (viaje); ie (pieza); io (odio); iu (ciudad); oi (oigo, hoy); ou (bou), ua(agua); ue (vuelta); ui (juicio); uo (arduo).
* La h colocada entre dos vocales que pueden formar diptongo no impide su formación: ahi-ja-do, ahu-yen-tar, prohi-bi-do, rehu-sar
7. Cuando dos vocales forman un adiptongo (hiato), éstas se separan al silabear.
* Ejemplos: po-e-ta, ma-re-o, a-ho-go, o-ír, ra-íz, ju-dí-o

Pues bien, el reto de esta semana de la programación lúdica  es silabear el siguiente texto (Prólogo “El Principito” de Saint Exupery), haciendo que el texto entre en una caja que contiene N líneas, con líneas de 40, 60 ó 75 caracteres por línea.

Prólogo “El Principito” de Saint Exupery

Pido perdón a los niños por haber dedicado este libro a una persona mayor.
Tengo una seria excusa: esta persona mayor es el mejor amigo que tengo en el mundo. Pero tengo otra excusa: esta persona mayor es capaz de comprenderlo todo, incluso los libros para niños.

Tengo una tercera excusa todavía: esta persona mayor vive en Francia, donde pasa hambre y frío. Tiene, por consiguiente, una gran necesidad de ser consolada. Si no fueran suficientes todas esas razones, quiero entonces dedicar este libro al niño que fue hace tiempo esta persona mayor. Todas las personas mayores antes han sido niños. (Pero pocas de ellas lo recuerdan).

Corrijo, por consiguiente, mi dedicatoria:

A LEÓN WERTH, cuando era un niño.

Por ejemplo, si tuviese una caja de 20 caracteres pondría:

Pido perdón a los ni-
ños por haber dedica-
do este libro a una 
persona mayor.
Tengo una seria excu-
sa: esta persona ma-
yor es el mejor ami-
go que tengo en el 
mundo. 
 
etcétera...

Así, el programa debe poderse generalizar a cualquier cantidad de columnas que se me ocurra (digamos de 10 a 80).

Este programa, probablemente puedan encontrarlo en la red. No se trata pues de copiarlo de algún sitio. Si descubro una copia o si tengo dudas, me tomo la libertad de preguntarle al autor directamente cómo hizo, para garantizar así que la solución fue escrita y no copiada por el autor del programa. Juguemos pues limpiamente y aprendamos todos de estos retos.

¿El premio? Una taza con el logotipo de la Morsa a la mejor solución. Esto solamente aplica a los programadores que vivan en el DF (mandar a provincia o a otros países una taza es estúpidamente costoso). En caso de que los concursantes sean de otros países o de la provincia mexicana, el premio será una memoria USB de 8 GBytes y se les enviará por correo certificado. Y sí, sé que no son los grandes premios pero mientras no tengamos patrocinadores, esto es lo que hay.

Evidentemente quien gane será anunciado aquí y hasta tendrá sus quince minutos de fama. Sus programas me los pueden mandar a morsa@la-morsa.com y pueden escribirse en cualquier lenguaje. Es importante señalar que hay que mandar el código fuente, el ejecutable (si procede) y el archivo de resultados pedido. Igualmente, se pide una explicación breve de la estrategia usada. Código documentado tiene más posibilidades de ser considerado el ganador.

Cabe señalar que este concurso busca simplemente alentar el trabajo de la programación y mostrar que puede ser lúdica. Es un concurso de buena fe. Si hay, por ejemplo, dos o más respuestas satisfactorias, ganará quien la haya mandado primero. El ganador cede su código fuente a la comunidad. Es decir, se promueve el código abierto.

Referencias:

Buenas Tareas
Reglas silabeo

Friday, June 27, 2014

Reto del juego NIM: Tenemos al ganador


Tonatihu Sánchez, quien estudió Ciencia de la Computación en la Facultad de Ciencias de la UNAM, ganó el reto que propusimos sobre encontrar todas las configuraciones para ganar en el juego de NIM. Su programa está escrito en Python, cosa que lleva ya siendo una extraña moda en la facultad enseñar este lenguaje, pero desde luego, tendrán sus razones y Tonatihu tuvo, para entender lo que tenía que hacer, buscar en Internet cómo se jugaba y se resolvía este problema (ver los dos enlaces en su código fuente).

Dice el autor: "La estrategia consistió en entender bien el juego, jugarlo incluso antes de codificar. En el código fuente vienen las dos referencias principales que consulté. Ahí fue donde aprendí sobre la nim-suma y su equivalencia con la operación "xor", así como las estrategías que se siguen para ganar el juego. Ya a la hora de codificar puse atención en no repetir posiciones equivalentes y aunque la primera vez traté de hacerlo lo más general posible (aunque no te gustó mi solución), el que el problema estuviera acotado de esa manera facilitó mucho resolverlo."

He aquí el archivo de soluciones del ganador:
Hay 18 posiciones ganadoras
1-3-5-7 es una posición ganadora
Las posiciones ganadoras son las siguientes:
7-5-3-1
7-5-2
7-4-3
7-4-2-1
6-5-3
6-5-2-1
6-4-3-1
6-4-2
5-5-1-1
5-5
5-4-1
4-4-1-1
4-4
3-3-1-1
3-3
3-2-1
2-2-1-1
2-2
1-1-1


Tonatihu nos aclara: "Adjunto código fuente y archivo de soluciones. La forma recomendada de ejecutar el programa es la siguiente:

$ python nim4.py [bolitas]

Donde [bolitas] es el número máximo de bolitas que se quiera que tenga el juego. De manera predeterminada se establece dicho valor en 7.

y añade:

  •     El programa fue probado con el interprete de Python versión 2.7.3
  •     El programa imprime el resultado en consola por lo que el archivo de resultados fue generado con una redirección de la salida estándar.

He aquí su programa:

#!/usr/bin/python

# -*- coding: utf-8 -*-

"""
nim4.py: Encuentra todas las configuraciones ganadoras(1) para NIM de 4 filas, 
con una configuración inicial de 7-5-3-1.
[1] Tocandole el turno al oponente y en modo 'miseria' [http://es.wikipedia.org/wiki/Nim_(juego)]

"""
__version__ =  "2.0"
__author__  = "Tonatihu Sánchez - tonatihus@gmail.com"
__license__ = "GPL 2.0"


ganadoras = 0 #Contará el número de configuraciones ganadoras
posiciones = '' #Guardará las posiciones ganadoras

for A in xrange(7,1,-1):
for B in xrange(5,0,-1):
for C in xrange(3,-1,-1):
for D in xrange(1,-1,-1):
if (D<=C and C<=B and B<=A): 
#Para evitar repeticiones innecesarias debido a que es equivalente 1-2-3 que 1-3-2, 3-1-2 etc.

if(A^B^C^D == 0): #Referencia: http://www.archimedes-lab.org/How_to_Solve/Win_at_Nim.html
ganadoras += 1

aux = str(A)+"-"+str(B)

if(C != 0):
aux += "-"+str(C)

if(D != 0):
aux += "-"+str(D)

posiciones += aux+"\n"
posiciones += "1-1-1\n" #Caso especial debido al "modo miseria"

print "Hay " + str(ganadoras) + " posiciones ganadoras"
print "1-3-5-7 es una posición ganadora"
print "Las posiciones ganadoras son las siguientes:"
print posiciones

Wednesday, June 25, 2014

16 años de rencor




En 1998 jugué una partida contra Rubén Canales, en el Torneo Carlos Torre, que solía llevarse a cabo en Mérida, Yucatán, a fin de cada año. No recuerdo en qué ronda se jugó esta partida pero debe haber sido por la mitad de la misma.


Manuel López  - Rubén Canales

Torneo Carlos Torre 1998

1. e4 e6 2. d4 d5 3. e5 c5 4. c3 Nc6 5. Nf3 Qb6 6. Bd3 Bd7 7. dxc5 Bxc5 8. b4 Be7 9. O-O f6 10. Re1 a6 11. Na3 fxe5 12. Nxe5 Nxe5 13. Rxe5 Bf6 14. Rh5 g6 15. Rxh7!



Juegan las negras

15. ... Rxh7 16. Bxg6+ Ke7 17. Bxh7 Bxc3 18. Rb1 Nf6 19. Bg5 Rh8 20. Bd3 Qd6 21. h4 e5 22. Qf3 Bd4 23. Bf5 (23. Nc2! Bc3 24. Bf5 y de acuerdo con Komodo 6, las negras están perdidas.) 23... e4 24. Qh3 Ba4 25. b5 a5 26. b6 Bxb6 27. Bxe4 (27. Nb5 da ventaja abrumadora al blanco, de acuerdo al engine.) 27... dxe4 28. Nc4 Bxf2+ 29. Kxf2 Qc5+ 30. Ne3 Bc6 31. Qg3 Rf8 32. Qc7+ (32. Rc1 define para el blanco.)

Juegan las blancas

Y aquí tengo muchas jugadas ganadoras, pero hago una que pierde. 42. Rc5?? un blunder y de tener una posición ganadora, quedo perdido. (42. Rf1! gana sin duda. Komodo da +4.17) 42... Qxc5 43. Bxc5 e3+ 44. Qf3 e2 45. Qxc6+ bxc6 46. Bf2 y las blancas abandonaron 0-1

Y si describo esta partida es porque el otro día me encontré a Rubén Canales, que es el presidente de la Asociación de Ajedrez de Morelos, si es que no me equivoco, y que es uno de los artífices del primer torneo/festival en memoria del desaparecido GM Marcel Sisniega. Tuvimos una breve plática que fue más o menos así:

  • ML: Tú me ganaste en un Carlos Torre, ¿no?
  • RC: Sí, fue en 1998, creo...
  • ML: Pues te debo decir que sigues en la lista negra

Ahí estaban también Toño Galán, Hugo Vargas y Guil Russek, entre otros. No sé si fui yo o alguno de los que estaban ahí quien dijo: "¡un rencor de 16 años!" Todos reímos. Recuerdo cuando me ganó, lo que duele perder y tan es así que aún incluso recordaba vagamente la combinación con la que perdí. La partida no la tenía a la mano pero la busqué en Internet y ¡sorpresa! la encontré . Algunos datos de la página están mal. Yo tengo un homónimo que juega al ajedrez y es de Suiza, pero esto es lo de menos. Lo que me parece interesante es que quede en la memoria grabado esa partida, el sentir sobre la misma, después de tantos años.

Monday, June 23, 2014

Programación lúdica: el juego de NIM


Dice la Wikipedia: "En este juego, dos jugadores a los que llamaremos David y Vicente, colocan un número arbitrario de fichas (cerillas, palillos, guijarros) sobre una superficie, separadas en filas o grupos. Tanto el número de filas como el número de fichas en cada fila son también arbitrarios. El primer jugador, supongamos que es David, toma cualquier número de fichas de una fila, entre uno y el total de la fila, pero sólo de una fila. El jugador Vicente hace su jugada de manera similar, retirando algunos de las fichas que quedan, y los jugadores van alternándose en sus jugadas. Se puede jugar de modo que gane el que retire la última ficha".

Para limitar el problema, pensemos en la siguiente configuración inicial:


Un jugador puede eliminar de una de las cuatro filas, las bolitas que quiera. No importa el orden, es decir, si elimina las tres primeras bolitas de la última fila (la que contiene siete bolitas) o si lo hace salteado, una sí y uno no, alternadamente, da lo mismo. Si quita tres de la última fila, el rival podria, por ejemplo, quitar las cuatro restantes, aunque quedasen en grupos separados dentro de la misma línea.. El objetivo del juego, repito, es que quien tenga que eliminar la última bolita, pierde. Nótese que en cada turno solamente se pueden eliminar bolitas de una sola fila.

Este juego ha sido muy estudiado y se conoce un algoritmo para la solución. Aquí sin embargo, el reto se trata de lo siguiente. Por ejemplo, la configuración 1-2-3 es ganadora (esto quiere decir que en una línea quede una bolita, en la siguiente dos y en la tercera línea tres bolitas) Si hay esta configuración, quien juega pierde. De hecho, 1-2-3 es equivalente a 3-2-1 o 2-1-3, etcétera. Configuraciones que tienen que ver con la mencionada son 2-2 y 1-1-1. Por ejemplo, si llego a tener la configuración 2-2, si el rival quita una bolita de cualquiera de las dos líneas, yo quito dos y mi rival tiene que quitar la última. Si mi rival quita dos bolitas de la línea, yo quito de la línea restante una bolita y de nuevo gano, pues el contrario tiene que eliminar la última.

El reto pues consiste en hallar todas estas configuraciones ganadoras. Ya di algunas:

1-1-1
1-2-3
3-3
2-2
4-4

¿Cuántas configuraciones ganadoras hay? ¿Es 1-3-5-7 una configuración ganadora o perdedora? El resultado del programa que escriban debe dar todas las configuraciones ganadoras en el formato A-B-C-D, por ejemplo:

1-1-1
2-2
3-3
4-4

una configuración en cada línea (pueden omitirse las líneas que no contengan bolitas, que den cero, pues).

¿El premio? Una taza con el logotipo de la Morsa a la mejor solución. Esto solamente aplica a los programadores que vivan en el DF (mandar a provincia o a otros países una taza es estúpidamente costoso). En caso de que los concursantes sean de otros países o de la provincia mexicana, el premio será una memoria USB de al menos 16 GBytes y se les enviará por correo certificado. Y sí, sé que no son los grandes premios pero mientras no tengamos patrocinadores, esto es lo que hay.

Evidentemente quien gane será anunciado en unocero y hasta tendrá sus quince minutos de fama. Sus programas me los pueden mandar a morsa@la-morsa.com y pueden escribirse en cualquier lenguaje. Es importante señalar que hay que mandar el código fuente, el ejecutable (si procede) y el archivo de resultados pedido.

Cabe señalar que este concurso busca simplemente alentar el trabajo de la programación y mostrar que puede ser lúdica. Es un concurso de buena fe. Si hay, por ejemplo, dos o más respuestas satisfactorias, ganará quien la haya mandado primero. El ganador cede su código fuente a la comunidad. Es decir, se promueve el código abierto. Así que “en sus marcas, listos, ¡arrraaaaancan!”

Sunday, June 22, 2014

Ganadores del reto del gato


Sorprendido alegremente por la respuesta de los programadores que visitan unocero, a escasas horas de empezar el reto, a eso de las 10 de la noche del sábado -cuando se publicó el artículo- recibí a la 1:30 am del domingo la primera respuesta. Dos más llegaron a eso de las 2:15 am y 4:40 am. En el transcurso de hoy llegaron un par más.

 El ganador fue Adán Enrique Aguilar, que escribió un programa en Java, el cual pongo a consideración de todos: Enrique es de Xalapa, Veracruz y en un par de días le mando su memoria USB de 16 GBytes, ¡Felicidades!

Debido al interés que presentaron los siguientes dos programas, se dan dos premios más, uno fue para Manuel Alcántara Juárez. Él me mandó, además, los siguientes datos: El programa genera 255168 posiciones donde 131,184 juegos los gana X, 77,904 los gana O y 46080 terminan en empate. El programa inicia con las "o" pero como dice mi tocayo, es isomorfo.

Finalmente, Charles López resolvió el problema. Su código llegó a eso de las 4 40 am. El ganador se lleva la memoria USB y los otros dos se llevan una taza con el logotipo de La_Morsa.

De izquierda a derecha: Adán Enrique, Manuel Alcántara y Charles López   


Es importante decir que aún no me queda claro cuántas son las posibles posiciones legales. Muchos sitios web dan cifras pero en todos los casos no coinciden. Cuando tenga un rato verificaré esto.

Agradezco realmente el esfuerzo realizado. No pensé que iba a tener estas respuestas y tan rápido. Quien quiera los archivos zipeados de los ganadores, con el respectivo código fuente, escríbame a morsa@la-morsa.com y se los mando de inmediato. (No los puse aquí porque tuve problemas en el formateo).

Saturday, June 21, 2014

Programación lúdica: La escondida riqueza del juego del gato


Todos jugamos alguna vez al gato. Hallamos pronto que no era un juego difícil de dominar. Vamos, incluso probablemente dedujimos que después de la primera jugada en el centro, si el rival no tira en las esquinas pierde irremediablemente. Uno olvida rápidamente este tipo de juegos, pues no representa ningún reto. Pero en realidad, sí puede serlo. Por ejemplo, a los alumnos en los primeros años de las carreras que tienen que ver con programación, bien puede ser una tarea a programar. Ahí coinciden algunas ideas interesantes, por ejemplo, la valoración de las posiciones a partir del algoritmo minimax, el cual se usa incluso en la valoración de las posiciones de ajedrez.

Hace unos días estaba yo en el trafico capitalino, atorado a la altura de Polanco, y pensaba en la inmortalidad del cangrejo y en cuántas posibles posiciones se pueden tener en el juego del gato, es decir, ¿cuántas posiciones del gato se pueden dar desde la primera jugada hasta que el juego termina? Pensaba que en realidad requiero conocer la cuarta parte de todas las configuraciones (o posiciones posibles), pues finalmente el gato tiene una simetría de la cual se puede sacar ventaja.

Asi pues, lanzo el siguiente reto a los lectores/programadores: Hágase un programa que genere todas las posibles configuraciones del gato, desde el inicio hasta el final. Guárdese cada posición en un archivo de texto. Por ejemplo, quien escriba un programa de esta naturaleza debería entregarme un texto aproximadamente como éste:

bbb
bxb
bbb

obb
bxb
bbb

obb
bxb
xbb
 
en donde "b" es una casilla vacía. Desde luego, las otras dos letras son "o" y "x".

Se piden solamente las configuraciones o posiciones legales. No se valen cosas como ésta:

xxx
bbb
bbb
por ejemplo.

¿El premio? Una taza con el logotipo de la Morsa a la mejor solución. Esto solamente aplica a los programadores que vivan en el DF (mandar a provincia o a otros países una taza es estúpidamente costoso). En caso de que los concursantes sean de otros países o de la provincia mexicana, el premio será una memoria USB de al menos 16 GBytes. Y sí, sé que no son los grandes premios pero mientras no tengamos patrocinadores, esto es lo que hay.

Evidentemente quien gane será anunciado en unocero y hasta tendrá sus quince minutos de fama.

Cabe señalar que este concurso busca simplemente alentar el trabajo de la programación y mostrar que puede ser lúdica. Es un concurso de buena fe. Si hay, por ejemplo, dos o más respuestas satisfactorias, ganará quien la haya mandado primero. Así que "en sus marcas, listos, ¡fuego!"

Wednesday, June 18, 2014

Lo que no se dice sobre el "Hoy No Circula"


Desde hace no sé cuantos años, a algún brillante político mexicano, se le ocurrió implementar el programa "Hoy No Circula", para disminuir el parque vehicular que diariamente recorre la ciudad de México, calculada en unos 4 millones de unidades automotoras. Pues bien, primero se impuso para todos los autos, un día de no circular a la semana. Supuestamente así se abatirían las cifras de la contaminación ambiental. Pero la realidad fue otra: mucha gente compró un segundo automóvil (de segunda mano, usado), para lidiar con esta restricción del gobierno. Es decir, en lugar de disminuir el parque vehicular, creció. Genial.

Con el tiempo, la medida se cambió y se definieron categorías. Un auto con menos de cierta cantidad de años podría circular todos los días. A otros, con ciertos años ya, tendrian que respetar la restricción. Poco tiempo después hubo una nueva restricción. Los autos que ya no circulaban una vez a la semana, tendrían que dejar de circular un sábado de cada mes, de acuerdo a la semana y al número final de la placa.

Pero hagamos cuentas: Los autos que no circulan una vez a la semana no circulan 52 días. Casi dos meses. El día extra (el sábado que no les toca circular) equivale a unos 12 días más sin circular, es decir, 52+12 = 64 días. Dos meses y cuatro días en que el gobierno de esta ciudad no te deja sacar el coche en todo el día.

Pues bien, ahora se les ha ocurrido endurecer el programa y autos (como el mío, el Bachoco), con 15 años o más, no circulan ahora todos los sábados, es decir: 12 * 4 = 48 días. Si a eso le sumamos los 64 días, tenemos: 64 + 48 = 112, es decir, tres meses y tres semanas. Casi cuatro meses. Dicho de otra manera: tengo un coche que lo puedo usar solamente 8 de los 12 meses. Como que se les pasó la mano, ¿no?

Y más de uno dirá que digo esto porque soy afectado. Y sí, lo soy (como mucha gente), pero el punto es que en términos reales, el Programa No Circula fue un fracaso, como en todos los países donde se implementó. Además de esto, no soluciona el problema ambiental, porque a la larga (o a la corta), empezará a crecer de nuevo el parque vehicular. Hay gente que no puede quedarse sin coche por multitud de razones, pero amén de sus razones particulares hay una muy evidente: el transporte público es poco menos que lamentable, amén de inseguro. Es decir, en lugar de resolver el problema del transporte en la ciudad, endurecen la medida del No Circula y desde luego, los más afectados son los autos más viejos, aunque esto ya no sea un problema de contaminación, sino de que haya menos autos en la ciudad circulando. A este país y a la ciudad de México la están haciendo invivible. Mancera ha resultado un fiasco como gobernante. Me quejaba de Ebrard, pero éste resultó un verdadero cretino.

Lo que eventualmente va a pasar conmigo es que terminaré por vender en algún momento el Bachoco y cuando tenga el dinero suficiente, me haré de otro auto más moderno. Y pasarán algunos años antes de que me lleguen de nuevo las restricciones.

Sin embargo, éste no es el punto, sino las medidas, tomadas sin ningún criterio, sin ninguna consulta, por sus pistolas porque eso sí, cabe aclarar que todos los que aceptaron estas nuevas reglas para el No Circula, no les afectan.

Thursday, June 12, 2014

Partidas de ajedrez a un minuto por jugador

En el Internet Chess Club juego partidas de a minuto por jugador. Sí, lo sé, esto no es lo mejor para entrenar pero sin duda es divertido. Hace un par de días jugué contra ChessWizard, él con blancas:

ChessWizard (1712) - Morsa (1680) (los ratings son de ICC para la modalidad de un minuto)

1. d4 Nf6 2. e3 c5 3. f4 d5 4. Nf3 Nc6 5. c3 Bg4 6. Bd3 Ne4 7. Nbd2 f5 8. O-O e6 9. Qa4 Qd7 10. Bb5 Bd6 11. Ne5 Bxe5 12. fxe5 O-O 13. Nxe4 fxe4




Juegan las blancas

Y en esta posición, las blancas cometen un error fatal: 14. Bxc6?? (¡Komodo 6 indica mate en 8 jugadas por parte de las negras! ¿Puede verlo?) 14. ...  Rxf1+ 15. Kxf1 Rf8+ 16. Kg1 Qf7! 17. h3 Bxh3 (esta jugada gana, pero la máquina encuentra maneras más simples de ganar, como este mate en cinco jugadas: 17... Qf1+ 18. Kh2 Rf2 19. Kg3 Qxg2+ 20. Kh4 Qxh3+ 21. Kg5 Qh5#. Recuérdese que estamos jugando a un minuto por cráneo). 18. Qc2 Qf1+ 19. Kh2 Rf2 20. Qxf2 Qxf2 21. Kxh3 g5 22. Kh2 g4 23. Bd2 g3+ 24. Kh1 Qxd2 25. Rf1 Qxb2 26. Rf6  y las blancas perdieron por tiempo 0-1

No es una gran partida, pero me gustó que en menos de un minuto encontré el plan ganador.

Wednesday, June 11, 2014

Cuando se suben a un tabique y se marean

Hace un tiempo publiqué un articulito sobre el canal de youtube que hacen Chumel Torres y su amigo Durden. El "Pulso de la República" sonaba como novedoso, fresco, con ingenio, buen humor, inteligencia, amén de ser una crítica feroz y constante a todas las tropelías de este y pasados gobiernos. No se salvaba nadie, ni los partidos políticos, ni la presidencia, menos televisa o cualquier otro medio electrónico tradicional.

Sin embargo, la semana pasada, Chumel Torres anunció que harían ocho programas basados en lo que fuese a acontecer en el Mundial de Futbol, que empieza mañana jueves. ¿Quién produce? Televisa. Sí, la misma que fue denostada antes por el locutor (Chumel), de ese canal de youtube.

El personaje en cuestión quiso explicar las razones por las cuales aceptaban la propuesta de la televisora. Comentó que el Pulso seguiría igual. Y le costaba trabajo elegir las palabras porque a priori sabía que esta decisión de venderse a televisa no le iba a ser favorable a quienes lo veíamos en Internet. Dijo que la televisora le daba toda la libertad para la parte de contenidos y queriendo ser gracioso, "puso cara de what" sobre la supuesta decisión de darles toda la libertad creativa, pero la gracia del Pulso se acabó.

Así, la dignidad, los principios, los cuales finalmente uno esperaría que no estuviesen a la venta, fueron comprados por Televisa y así, descafeinar (como alguna vez dijo Ciro Gómez Leyva, cuando Brozo se fue a esa televisora) al Pulso de la República. Porque independientemente de que Durden y Chumel quieran disociar su producto de Internet, su credibilidad ya se arruinó, se rompió y algunas cosas cuando se rompen, ya no se pueden pegar.

Por mí, que le hagan como quieran. Chumel y Durden solamente demostraron que su eventual fama con los internautas fue como subirse a un tabique y cuando lo hicieron, se marearon. Y entonces llegó Azcárraga y sacando su chequera los terminó de fulminar. Así es este país que sólo demuestra esa frase de Alvaro Obregón: "Nadie aguanta un cañonazo de 50 mil pesos". Ahí están Chumel y Durden. Son el ejemplo vivo de esta frase.

Tuesday, June 10, 2014

El ajedrez computarizado


El desarrollo del ajedrez por computadora tiene unos 50 años aproximadamente. Y en ese tiempo la cosas han cambiado notablemente con los años. Hasta mediados de los años ochenta del siglo pasado, las máquinas que jugaban al ajedrez francamente no podían competir contra jugadores de primera fuerza, ya no digamos grandes maestros. Pero como los propios programadores decían: "hoy se ríen de nosotros. Mañana van a aprender de nosotros, ya verán". Y sin duda, desde 1997, cuando Kasparov enfrentó a Deep Blue fue claro que las cosas habían cambiado. Si a esto le agregamos la disminución en el costo del hardware y el aumento en el poder de cómputo, la ecuación parece completarse. Hoy en día los programas son francamente notables y posiblemente puedan vencer al 99.99% de los jugadores en el planeta. De hecho, por eso ya no hay encuentros hombre vs máquinas. Ya no parece tener sentido.

Pero hace unos años, había muchos problemas que resolver. Por ejemplo, tómese la siguiente posición:



Juegan blancas y ganan

Aquí, cualquier jugador avezado hallaría 1. Dxf6 gxf6 2. a4 y el peón no puede ser alcanzado por el rival. Un jugador que conozca la teoría básica de los finales de peones sabría que no requiere calcular la secuencia hasta la coronación. Basta con saber que después de 2. a4, el negro no puede alcanzar al peón pues el rey negro está fuera del cuadrado del mismo, el cual se forma trazando una diagonal desde donde está el peón hasta la última fila y creando así un cuadrado.

Cuando las computadoras no tenían el poder actual, no se podía pensar en cómo resolver este problema que es bastante sencillo para un jugador de ajedrez. Había que calcular muchas jugadas y además, el gran maestro ni siquiera hacía ese cálculo. Bastaba con saber la regla del cuadrado del peón para entender que el rey negro no alcanza al peón que se convertirá en dama muy pronto.

¿Cómo solucionaron el problema? Muy fácil: en lugar de buscar un esquema en donde el programa analizara el final tratando de entender la esencia del final de peones, lo que hicieron fue simplemente hacer crecer el árbol de posibles jugadas, a una profundidad de 12 plies, (6 jugadas, aproximadamente). Siguiendo este enfoque, el problema se resuelve a fuerza bruta. El gran maestro podría resolverlo también a fuerza bruta pero con la regla del cuadrado del peón, toma un atajo y lo resuelve casi sin pensar.

Aparentemente la máquina no requiere de atajos. La demostración de fuerza bruta es lo que parece darle la ventaja en nivel de juego a la computadora, al menos con el esquema actual.

Thursday, June 05, 2014

Hoy, hace 8 años, murió mi papá


Me acuerdo como si fuese ayer. Es increíble como pasa el tiempo pero el dolor no sana del todo. Me queda claro -y el otro día comentaba con Pilar- que nunca he estado tan triste en mi vida como en esa ocasión.

Pero bueno, mi papá descansa y sé que tuvo una buena vida y muchos logros. Desde aquí me acuerdo de él. Y la verdad es que me acuerdo todos los días. Y bueno, la vida sigue...

____
(*) La imagen está hecha con letras en diferentes tonos de gris, hecha con mi software "Sopa de Letras".

Wednesday, June 04, 2014

Nace un comediante: Gon Curiel


Creo haber conocido a Gon Curiel en la Ibero. Quiero creer que le di clases. Quiero pensar que lo aprobé en mis cursos. Ya no me acuerdo, pues han pasado muchos alumnos y muchos años. Lo que sí sé es que Gonzalo ha decidido seguir su vocación y me da gusto. Dejó -como dice él- el mundo "Godínez"  y ese embarcó en esta aventura de dedicarse a la farándula. Por un tiempo hizo stand up comedy, al mejor estilo Seinfeld. Hoy está en un canal de TV (Cadena 3), en donde tiene un noticiero llamado "Ya ni llorar es bueno", en donde alterna las noticias que da con comentarios chuscos. La realidad es que me gusta su humor porque es diferente, fresco, irreverente pero no vulgar. Va más allá que esa idea de que el único humor que se puede hacer en México es el del albur.

Este es un video de su programa:



Pero Gon también ha incursionado en estos videos miniatura de Vine. Pueden ver sus videos en este enlace.

Felicito a Gon y espero que tenga mucho éxito en su carrera artística.

Monday, June 02, 2014

Llegó mi camiseta de Xamarin


Miguel de Icaza tiene una empresa de software, llamada Xamarin, la cual hace poco inició una promoción para que los programadores conociesen sus productos. En este caso, lo que pedían era bajar el Xamarin Studio, descargar el código fuente de una app particular, ejecutar la misma, seguir las instrucciones que ahí se daban y una vez que todo eso estuviese hecho, el desarrollador recibiría en las siguientes semanas una camiseta de C#, cortesía de la empresa.

Hablé con Miguel y le dije que me mandara la camiseta pero no quiso, me dijo que tenía que seguir el procedimiento. Apelé a que había sido su maestro, a mi autoridad moral, pero Miguel me dijo: "No, Manu, tienes que seguir el procedimiento".

Pues bien, bajé el software, lo instalé y procedí a descargar la app. Después de jugar un rato con el programa logré el cometido y mandé mi petición (con mi dirección física), para que se me mandara la camiseta, la cual llegó hace un par de días.

Al mismo tiempo, recibí un mensaje de alguien encargado de recopilar las opiniones de los que usamos por vez primera el producto. Le dije que tenía que verlo con cuidado, pero que me quedaba claro que el problema y cuello de botella parecían ser los emuladores de Android, que son bastante malos. El personaje éste me comentó que estaban conscientes de esta dificultad.

Si usted quiere programar en Android, iOS o Windows Phone y usa C#, Xamarin es la opción. Échele un vistazo.

Filtración de agua dentro del chevy (de nuevo)


 Aquí escribí sobre un problema que tuve con el Chevy hace tiempo. Se mojaba el piso del lado del copiloto. No hallaba agujeros o la razón por la cual llegara agua a esa parte del coche, pero evidentemente se estaba filtrando el agua de alguna manera. En el artículo que menciono, entendí que el agua se filtraba por la pared metálica en los pies del copiloto. Y aunque no había un gran agujero, no era necesario para que el agua se pudiese filtrar.

Pues bien, hace un par de dias noté que olía raro el auto y noté la razón: el lado del copiloto se había mojado de nuevo. Así que decidí de nuevo aplicar "cirugía menor" al Chevy y sellar de nuevo la parte donde está la batería de forma que no se filtrara el agua. Es claro que la solución original ya había dejado de funcionar pues el material (corcho fue lo que se usó), dio de sí. Mi hermano Juan me ayudó y he aquí la secuencia de fotos en donde se explica qué hicimos:

Primero, hubo que quitar la batería de su lugar. Para ello, antes hubo que desarmar una moldura que está por encima de la batería:


Quitamos la batería y procedemos a limpiar el hueco donde ésta se encontraba:


Tomamos un mantel plástico (cuyo costo fue de 20 pesos) y lo cortamos más o menos del tamaño del hueco donde va la batería:


Colocamos el pedazo de mantel y lo pegamos en todos sus bordes contra el chasis del automóvil:


Nótese cómo usamos la cinta de ductos y pegamos todo alrededor. Sin dejar agujeros...


Nótese en la parte inferior izquierda cómo se deja un agujero para que por ahí drene el agua que se vaya acumulando, por ejemplo, cuando llueve.


Una vez sellado todo (con el hueco para drenar), lo único que falta es recolocar la batería y reconectarla.


Batería reconectada. Se recoloca la moldura y listo. Asunto solucionado.