# -*- coding: utf-8 -*-
"""
Created on Thu Dec  7 10:21:00 2023

@author: vleprince
"""


M = [[0,1,1,0,0,0,0,0,0,0 ],
             [1,0,1, 1,1,0,0,0,0,0],
             [1,1,0,1,0,1,0,0,0,0],
             [0,1,1,0,1,1,1,0,0,0],
            [0,1,0,1,0,1,1,1,0,0],
            [0,0,1,1,1,0,1,0,0,1],
             [0,0,0,1,1,1,0,0,1,0],
             [0, 0,0,0,1,0,0,0,1,0 ],
             [0, 0,0,0,0,0,1,1,0,0 ],
             [0, 0,0,0,0,1,0,0,0,0 ]]



def matriceVersListe(M):
    n = len(M)
    L = []
    for i in range(n):
        li = []
        for j in range(n):
            if M[i][j] == 1 :
                li.append(j)
        L.append(li)
    return L 

#print(matriceVersListe(M))
L_M = matriceVersListe(M)


def listeVersMatrice(L):
    n = len(L)
    M = []
    for i in range(n):
        Mi = n*[0]
        for j in L[i]:
            Mi[j] = 1
        M.append(Mi)
    return M

print( listeVersMatrice(L_M) == M)

def listeVersMatrice2(L):
    n = len(L)
    M = [ [0 for j in range(n)] for i in range(n)]
    for i in range(n):
        for j in L[i]:
            M[i][j] = 1
        
    return M
            
print( listeVersMatrice2(L_M) == M)    

ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
# on auriat pu utiliser les fonctions 
#   ord (donne le code ASCCI d'un caractère)
# et chr (réciproque de la précédente)

def matriceVersDico(M):
    n = len(M)
    dico = { }
    for i in range(n):
        sommet = ALPHABET[i]
        li = []
        for j in range(n):
            if M[i][j] == 1 :
                li.append(ALPHABET[j])
        dico[sommet] = li
    return dico 
    
print(matriceVersDico(M))   


def degre(M,i):
    deg = sum(M[i])
    return deg 

print(degre(M,1))

#A partir d'une liste d'ajacence :
def degreDepuisListeAdjacence(L,i):
    return len(L[i])

print(degreDepuisListeAdjacence(L_M,1))