Para ganar en juegos de tablero o en juegos donde las posibles jugadas abran ramas de múltiples decisiones se usan sistemas de redes neuronales.
Lo que había visto de eso eran unos árboles en los que cada punto o neurona multiplicaba el valor por un número que se iba ajustando, y me pareció algo confuso y menos eficiente u ordenado que una fuerza bruta. Además, como está tan de moda, qué sé yo, prefiero ir por otro lado.
Yo que tú primero aprendería a programar algo menos ambicioso
Es que no pensé que lo fuera tanto. De momento lo que me jode como comenté en el 2ndo post es que no sé cómo nombrar las variables como para poder llamarlas o modificarlas sin problema.
Algo que quizá me serviría es poder convertir conteos de 10 números (0, 1, 2, 3, 4... 10, 11...) a 4 (1, 2, 3, 4, 12) pero salteando repeticiones (olvidé eso) uf...
No hice aún lo que dije que haría, veré.
un algoritmo que use ese sistema (árboles n-arios) para ganar un cuatro en línea contra un humano.
Con mi antiguo sistema no sé cómo hacerlo debido a que hay un rival. Capaz que no es tan difícil pero nunca probé y como digo estoy muy olvidado de aquello y desganado de volver a usarlo por ahora.
Para lo que me pides y cómo lo pides, se me ocurren 2 posibles formas:
Los casilleros del tablero son numerados de esta forma:
1, 2, 3, 4
5, 6, 7, 8
etc
Y:
0 significa que hay un 0
1 significa que está vacío
2 significa que hay cruz
Método A:
2111111111111111
2011111111111111
2101111111111111
etc
1211111111111111
etc
Eso habría que generarlo con código. Son todos los posibles tableros en el orden conque pueden ocurrir, si empieza la X.
Desventaja: Es posible producir situaciones repetidas, en que sólo cambia el cómo se llega a ella. Supongo que no es mucho problema si hay forma de dejar marcado que sí se llegó a ella y ya fue revisada.
Se parece mucho a mi antiguo método.
Método B:
/-2-Win
/-1
/-0
/-2
2--1
\-0
1
0
Obviamente tampoco está completo. Eso muestra, en cada "columna", los posibles estados de un casillero. En la izquierda, el casillero 1, más a la derecha el 2, etc.
Ventajas: Más fácil de hacer.
Desventajas: Se generan situaciones imposibles.
Si puedes evitar la desventaja, bárbaro, pero veo otra...: No sé cómo esto puede servir para que el programa aprenda, es decir, le estás dando las soluciones, eso no es que aprenda experimentando, es que copie...
El video no me pareció muy instructivo que digamos... Habla de muchas cosas complejas que no explica y que no sé si en última instancia sirven (quizá son sólo optimizadores, pero no son algo necesario; yo por ahora sólo necesito lo necesario).
¿Qué opinas de lo que había dicho? ¿no es la fuerza bruta un método que puede resolver cualquier problema? ¿por qué entonces parece que no puedo aplicarlo aquí? ¿es que no logro ingeniarme o que el método no sirve aquí? ¿qué propiedades así de determinantes hay en los problemas? En el sentido de qué cosas en ellos hacen que la fuerza bruta u otros métodos conocidos se vuelvan inaplicables. El video habla por ejemplo de variables desconocidas, pero me gustaría ver una clasificación más clara, o algo más explicado.
¿Y cómo hago referencia a variables cuando...? Lo planteado en el 2ndo post.
Mira, puede que no sepa hacer siquiera un 2 en línea (tablero de 2x2 imagino), pero más cierto me parece que no tengo ganas de intentarlo, pues siento que me desviaría mucho. Lo que haré es intentar el juego que propose pero con 2 números y sólo 2 posibles números, y luego 3. Luego, recién los 4, y luego sí 3 números y 6 posibles. A ver qué sale.