"""
exercice 2.18
Exploration numérique : abc a pour successeur bce (où e est le chiffre des unités de a+c)
"""
def successeur1(n):                          # recherche du successeur d'un nombre abc (question 1)
    if int(n)!=n or n>999 or n<0 : return -1 # le successeur n'est défini que pour les entiers positifs de 3 chiffres
    c,b,a=n%10,(n//10)%10,n//100             # obtention des chiffres a, b et c
    e=(a+c)%10                               # calcul du chiffre e
    return b*100+c*10+e                      # calcul et retour de la valeur de bce
    
def successeur2(n):                                  # recherche du successeur d'un nombre abc (question 1)
    n=str(n)                                         # conversion de n en chaine de caractères
    if len(n)>3 or n[0]=="-" or "." in n : return -1 # le successeur n'est défini que pour les entiers positifs de 3 chiffres
    while len(n)<3 : n='0'+n                         # ajout de "0" devant si n<100
    return int(n[1:]+str(int(n[-1])+int(n[0]))[-1])  # calcul et retour de la valeur de bce (n[1:] donne bc, le reste calcule e)

def successeurs(n):
    """ afficher la liste des successeurs du nombre de départ
        la longueur de la suite, les valeurs minimum et maximum (question 2)"""
    long,maxi,mini=0,0,999
    initial=n
    texte="successeurs de "+str(n)+" : "
    if n==-1 : print("le nombre entré n'est pas un nombre entier positif de 3 chiffres au plus")
    while True:
        n=successeur1(n)
        texte+=str(n)+" - "
        long+=1
        if n>maxi : maxi=n
        if n<mini : mini=n
        if n==initial: break
    print(texte[:-3])
    print("longueur de la suite=",long)
    print("minimum de la suite=",mini)
    print("maximum de la suite=",maxi,'\n')

def sousensemble(n):
    """ afficher la liste des successeurs du nombre de départ
        ordonnée afin d'identifier des sous-ensembles distincts (question 3)"""
    long=0
    initial=n
    successeurs=[]
    while True:
        n=successeur1(n)
        successeurs.append(n)
        long+=1
        if n==initial: break
    print(sorted(successeurs))
    print("longueur de la suite=",long)
"""    
#tests
print(successeur1(157))
print(successeur1(15))
print(successeur1(757))
print(successeur1(1270))

print(successeur2(157))
print(successeur2(15))
print(successeur2(757))
print(successeur2(1270))

successeurs(157)
successeurs(15)
successeurs(757)
successeurs(1270)
"""
sousensemble(1)
sousensemble(2)
sousensemble(3)
sousensemble(4)
sousensemble(5)
sousensemble(6)
sousensemble(7)
sousensemble(8)
sousensemble(9)
sousensemble(0)

