import random


print("Pensez à un nombre entre 1 et 1000. L'ordinateur va essayer de le deviner !")

# Demander le nombre secret à l'utilisateur
nombre_secret = int(input("Entrez le nombre (l'ordinateur ne regardera pas !) : "))

# Vérification de la validité de l'entrée
if nombre_secret < 1 or nombre_secret > 1000:
    print("Le nombre doit être entre 1 et 1000 ! Relancez le programme.")
    quit()

# --- Méthode 1 : Algorithme Aléatoire Simple ---
print("\n--- Méthode 1 : Algorithme Aléatoire Simple ---")
essais_aleatoire = 0
essais_faits = set()  # Ensemble pour éviter les doublons
trouve = False

while not trouve:
    proposition = random.randint(1, 1000)
    while proposition in essais_faits:
        proposition = random.randint(1, 1000)

    essais_aleatoire += 1
    essais_faits.add(proposition)
    print(f"Tentative {essais_aleatoire} : L'ordinateur propose {proposition}" ,end=" ")

    if proposition == nombre_secret:
        print(f"Trouvé en {essais_aleatoire} essais avec l'algorithme aléatoire simple !\n")
        trouve = True
    elif proposition < nombre_secret:
        print("Résultat : Trop petit.")
    else:
        print("Résultat : Trop grand.")

# --- Méthode 2 : Algorithme Aléatoire Intelligent ---
print("\n--- Méthode 2 : Algorithme Aléatoire Intelligent ---")
essais_aleatoire_intelligent = 0
essais_faits = set()
bas, haut = 1, 1000
trouve = False

while not trouve:
    proposition = random.randint(bas, haut)
    while proposition in essais_faits:
        proposition = random.randint(bas, haut)

    essais_aleatoire_intelligent += 1
    essais_faits.add(proposition)
    print(f"Tentative {essais_aleatoire_intelligent} : L'ordinateur propose {proposition}",end=" ")

    if proposition == nombre_secret:
        print(f"Trouvé en {essais_aleatoire_intelligent} essais avec l'algorithme aléatoire intelligent !\n")
        trouve = True
    elif proposition < nombre_secret:
        print("Résultat : Trop petit.")
        bas = proposition + 1
    else:
        print("Résultat : Trop grand.")
        haut = proposition - 1

# --- Méthode 3 : Algorithme Dichotomique (Recherche binaire) ---
print("\n--- Méthode 3 : Algorithme Dichotomique (Recherche binaire) ---")
essais_dicho = 0
bas, haut = 1, 1000
trouve = False

while not trouve:
    proposition = (bas + haut) // 2
    essais_dicho += 1
    print(f"Tentative {essais_dicho} : L'ordinateur propose {proposition}",end=" ")

    if proposition == nombre_secret:
        print(f"Trouvé en {essais_dicho} essais avec l'algorithme dichotomique !\n")
        trouve = True
    elif proposition < nombre_secret:
        print("Résultat : Trop petit.")
        bas = proposition + 1
    else:
        print("Résultat : Trop grand.")
        haut = proposition - 1

