Buscaminas en 247 bytes: la hazaña de code golf en JavaScript
Un desarrollador ha conseguido reducir el clásico Buscaminas a solo 247 caracteres de JavaScript, con tablero aleatorio, apertura y banderas.

El pasado 26 de agosto, el desarrollador yui publicó en su blog una versión de Buscaminas comprimida a 247 bytes de JavaScript. El juego genera un tablero de 8x8, permite abrir celdas y colocar banderas, abre automáticamente las zonas sin minas y detecta la victoria. Todo eso en menos de un cuarto de kilobyte. Puedes probar la versión funcional en JSFiddle.
El logro no es casualidad. yui comenzó hace un par de años con una versión de 658 bytes, y tras semanas de pulido la redujo a 399. Recientemente, al reencontrarse con el código, encontró nuevas optimizaciones y acabó involucrando a DNEK en el proceso. Juntos, tras meses de prueba y error, llegaron a los 247 bytes actuales.
Trucos de compresión
La solución se basa en dos funciones: b, que gestiona la lógica del juego, y m, que genera el HTML del tablero. Lo primero que llama la atención es que m está definida dentro de una llamada a b, ahorrando un byte frente a usar un separador. El código aprovecha que los elementos <a> y <p> no pueden contener tags del mismo tipo, por lo que el navegador cierra automáticamente las etiquetas anteriores al encontrar una nueva, permitiendo omitir por completo las de cierre.
Para la entrada de usuario se usa un único manejador onmouseup que distingue entre clic izquierdo y derecho mediante event.which. No se previene el menú contextual, así que hay que hacer clic derecho dos veces para alternar una bandera, un coste aceptable para el ahorro de bytes.
El estado del juego se guarda directamente en los atributos del DOM, sin arrays. Se utilizan operadores como la asignación de coalescencia nula (??=) y coerción de tipos para reducir código. Por ejemplo, x = b[t] ??= (C -= m[t] = Math.random() < .1, 1) inicializa la celda como mina o número en una sola línea.
Por qué importa
No es una técnica que vayas a usar en producción, pero demuestra un conocimiento profundo de JavaScript y del comportamiento del navegador. Si alguna vez te has preguntado hasta dónde se puede comprimir un juego completo, esta implementación es un buen ejemplo. Incluso para quienes no practican code golf, el post original explica con detalle cada decisión de diseño, y merece la pena leerlo para aprender trucos de optimización que pueden ser útiles en otros contextos.

