-
Notifications
You must be signed in to change notification settings - Fork 0
/
Prototipo_Akinator.py
65 lines (54 loc) · 2.53 KB
/
Prototipo_Akinator.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# -*- coding: utf-8 -*-
import numpy as np
import calcular_estado
import elegir_caracteristica
p_Pelo = "¿Su color de Pelo es "
p_Deporte = "¿Su Deporte favorito es "
p_Sexo = "¿Su sexo es "
p_Interior = "¿Vive en el Interior? "
opciones = np.array([["Rubio", "Marron", "Morocho"],["Futbol", "Rugby", "Tennis"],["Masculino", "Femenino", "Invalid"],["Si", "No", "Invalid"]])
preguntas = np.array([p_Pelo, p_Deporte, p_Sexo, p_Interior])
tabla = np.array([['Nombre', 'Pelo', 'Deporte', 'Sexo', 'Interior'],['Juan', opciones[0,0], opciones[1,0], opciones[2,0], opciones[3,1]],['Pablo', opciones[0,1], opciones[1,1], opciones[2,0], opciones[3,0]],['Maria', opciones[0,2], opciones[1,2], opciones[2,1], opciones[3,1]],['Guillermina', opciones[0,0], opciones[1,2], opciones[2,1], opciones[3,0]],['Ricardo', opciones[0,1], opciones[1,0], opciones[2,0], opciones[3,0]]])
repeticiones = np.zeros((np.size(opciones,0),np.size(opciones,1)), dtype=int)
for i in range (0,np.size(opciones,0)):
for j in range (0,np.size(opciones,1)):
a = (opciones[i,j]==tabla)
repeticiones[i,j] = sum(sum(a))
estado = repeticiones
candidatos = tabla[1:np.size(tabla,0),0:np.size(tabla,1)]
while np.size(candidatos,0) > 1:
n = np.size(candidatos,0)
print(candidatos)
pos_caract = elegir_caracteristica.elegir_caracteristica(estado,n-1)
caracterisitica = opciones[pos_caract[0],pos_caract[1]]
if pos_caract[1] == 4:
mensaje = p_Interior + ' (Si/No): '
print(mensaje)
resp = input("")
else:
mensaje = preguntas[pos_caract[0]] +' '+ caracterisitica + "? (Si/No): "
print(mensaje)
resp = input("")
if resp == 'Si':
indexes = np.argwhere(candidatos==caracterisitica)
filas = np.zeros(len(indexes), dtype=int)
contador = 0
for j in indexes:
filas[contador] = j[0]
contador = contador + 1
contador = 0
##ESTAMOS BIEN HASTA ACA
eliminar = np.setdiff1d(np.arange(0,np.size(candidatos,0),1),filas)
# eliminar = np.subtract(np.arange(0,np.size(candidatos,0),1),filas)
if resp == 'No':
indexes = np.argwhere(candidatos==caracterisitica)
filas = np.zeros(len(indexes), dtype=int)
contador = 0
for j in indexes:
filas[contador] = j[0]
contador = contador + 1
contador = 0
eliminar = filas
[estado, candidatos] = calcular_estado.calcular_estado(candidatos, opciones, eliminar)
estado[pos_caract] = 0
print("Estas pensando en: " + candidatos[0,0])