Algoritmia - Code breaker

 
Vista:
sin imagen de perfil

Code breaker

Publicado por Aureo (2 intervenciones) el 25/12/2022 10:03:06
Hola, me surgió una duda en una tarea de programación, a ver si alguien puede darme una solución o pistas.
Consiste en lo siguiente:
Se trata de programar un juego similar al mastermind, pero invertido, es decir, es el ordenador el que tiene que adivinar un número de 4 cifras que estoy pensando. El ordenador lanza su intento y yo tengo que responderle cuántos números ha acertado (las cifras que coinciden en posición y son iguales que algunas de las cifras que yo pensé) y cuántas coincidencias tiene (es decir, las cifras de su intento que están en mi número pensado, pero que no coinciden con la posición correcta). La estrategia es más o menos la siguiente: la forma de que el ordenador genere la combinación siguiente de números una vez le he dicho cuántos aciertos y coincidencias tiene es calcular el primer código o combinación que cumple que los aciertos y coincidencias de ese código es mayor que los aciertos y coincidencias de las combinaciones anteriores. (Debe estar programado en pyhton)
Graciasss.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Code breaker

Publicado por Rolando José (11 intervenciones) el 26/12/2022 03:22:46
de niños jugábamos uno parecido picas y fijas, el jugador A escribía un número y el B ponía un número aleatorio de igual número de cifras.
el jugador A debía decir si en el número que daba B existen los números que hay en el número de A, si están en la misma posición decía fija y si existía pero en diferentes posición decía pica.

el número A es 3467
el primer número de B es 1234
el jugador A responde 2picas 0 fijas

las picas eran 3 y 4 porque estaban en A y en B pero no en la misma posición.

el jugador B tiene por ejemplo 10 oportunidades de descubrir el número A con la información que se le entrega hasta que el resultado sea 4 fijas.

se como podría pensar en hacer el juego para que jueguen dos humanos pero creo que para que el computador juegue y gané será con inteligencia artificial profunda, aunque quizás con matrices no se necesitan inteligencia artificial, sino un muy difícil algoritmo heuristico, que calcule por fuerza bruta los 10 números con mayor probabilidad de entre los 5040 números que cumplen con tener las cuatro fijas, calculados asi: 10x9x8x7 =5040
si el número es de 4 cifra, hay 10 posible para la primera cifra,9 para la segunda, 8 para la tercera, si alguna cifra se repite no se necesitan 4 fijas, sino menos fijas y 1 o 2 picas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Code breaker

Publicado por Aureo (2 intervenciones) el 26/12/2022 13:38:28
Sí, esa es básicamente la idea. Creo que sí tendría que poder hacerse porque me lo han puesto de tarea, en un trabajo. Ya he programado la parte en la que juega el humano , pero en esta parte en la que juega el ordenador (y tiene que ganar en 10 intentos) tengo las condiciones pero me queda ver cómo hago que el ordenador piense como pienso yo cuando juego, jaja.
He leído que Donald Knuth logró demostrar una forma de ganar siempre en 5 intentos, pero para llevar su demostración a una programación básica es más complicado.
La estrategia a seguir (no es la de Knuth) es : para que el ordenador genere la siguiente combinación una vez yo le he dicho cuántos aciertos y coincidencias tiene es calcular la primera combinación que haga aumentar o los aciertos o las coincidencias, pero nunca disminuirlas ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Code breaker

Publicado por Rolando José (11 intervenciones) el 26/12/2022 17:01:29
Bueno no se que algoritmo haya usado ese señor knuth, nosotros lo que intentabamos era 1. METODO FUERZA BRUTA:
decir numeros que tuvieran todos los digitos del 1 al 9 y el cero , en diferentes posiciones, pero nunca logramos algo como 5 intentos, hacer que sea el computador el que juega y gane eso si va a ser dificil como, porque ya es de por si dificil que un computador elija y tome decidiones sin usar random. La unica seria eso: 1 METODO RANDOMICO, crear numeros randomicos cuyas posiciones no hayan sido usadas antes, pero lo inteligente es como usar las respuestas de picas y fijas. creo que la unica forma seria 2. METODO ARITMETICO: quizas se pueda hacer algun metodo de matrices como una matriz expandida que le sea facil a una IA llegar a la solución, o un metodo que vaya probando posiciones y probabilidades. SEria bueno leer esa documentacion del señor knuth, quizas no sea tan dificil de codificar.
1234
5678
3456
7812
0961
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar