from random import choice
univers="0123456789"
def mmm(ta=[],un=univers):
    """ un est l'univers des possibles
     ta est un tableau contenant les jeux déjà fait
    de la forme : "AAAA",[2,0] - bien placé, mal placé 
    mmm renvoie les jeux possibles
    """
    possibles=["".join([a,b,c,d]) for a in un for b in un for c in un for d in un]
    
    for t in ta:
        remove=[]
        ch=t[0]
        n,p=t[1]
        #print("Debug : ",ch,n,p)
        for po in possibles:
            if nbbp(ch,po)!=n or nbmp(ch,po)!=p:
                #print("Debug REmove: ",po)
                remove.append(po)
            else:
                pass
                #print("Debug ACCEPT!: ",po)
        for po in remove:
            possibles.remove(po)
    return possibles

def nbbp(ch,modele):
    n=0
    for i in range(len(modele)):
       
        if ch[i]==modele[i]:
            n+=1
       
    return n
  
def nbmp(ch,modele):
   #On enleve les bien placés
   ch2=""
   modele2=""
   for i in range(len(modele)):
       if ch[i]!=modele[i]:
           ch2+=ch[i]
           modele2+=modele[i]
   n=0
   deja=[] 
   #print("debug ",ch2,modele2)      
   for i in range(len(modele2)):
       j=0
       while j < len(ch2):
           #print("Debug2 ",i,j,ch2[j],modele2[i])
           if ch2[j]==modele2[i] and j not in deja:
               deja.append(j)
               n+=1
               #print("Debug3---FIND! ",ch2[j],i,j,n,deja)
               j=len(ch2)
           else:
               j+=1
   return n
   
def jeu():
    a=input("En utilsant les caractères {}, pensez à une combinaison et appuyer sur ENTREE".format(univers))
    jeux=[]
    fini=False
    while not fini:
        #print("debug",jeux)
        reponse=mmm(jeux)
        if len(reponse)==0:
            print("ERREUR dans vos réponses !")
            fini=True
        elif len(reponse)==1:
            a=input("La solution est {}".format(reponse[0]))
            fini=True
        else:
            j=choice(reponse)
            print("Je propose {}".format(j))
            n=int(input("Nombre de caractères bien placés :"))
            p=int(input("Nombre de caractères mal placés :"))
            jeux.append([j,[n,p]])
            
            
def creer_enigme():
    
    combi=choice(univers)+choice(univers)+choice(univers)+choice(univers)
    
    while 1:
        jeux=[]
        fini=False
        while not fini:
            reponse=mmm(jeux)
            #print("debug",jeux)
            if len(reponse)==1 and jeux[-1][0]!=reponse[0]:
                return jeux,reponse[0]
            
            elif len(reponse)==1 and jeux[-1][0]==reponse[0]:
                jeux=[]
            else:
                j=choice(reponse) 
                n=nbbp(j,combi) 
                p=nbmp(j,combi)
                jeux.append([j,[n,p]])
                                 
        
        
        
  