El problema
Aunque es un problema viejo, la implementación no es una trivial.
Solución
Escribir en un papel qué es lo que se va a hacer antes. Y estar muy muy seguro de qué es lo que quieres implementar. Está bien ver el código de otras personas, pero copiárselo sin entender es mal karma. Robarse las ideas pero tener claro que es lo que hacen te va a llevar más lejos. Me tomó un par de semanas de una hora diaria llegarle a la solución.
Al final mi implementación quedó así (no sé cómo pegar un snipet de código)
La idea la saqué de este artículo en Medium, pero el código sí es un poco diferente… creo.
Y mi implementación en codepen es esta. Al momento de escribir, todavía no está terminado 100% el proyecto, aunque en la consola se pueden ver las evaluaciones que hace el algoritmo a las jugadas:
En mi caso, creo que el primer factor a considerar es qué jugada tiene la menor profundidad (a cuantas jugadas desde la primera puedo ganar) y luego considerar el score (es proporcional a en cuantas de las ramas del minmax puedo ganar)
Keep coding.