#------------------------TD9------------------------#


#####################[Code 1]##########################

input_list = [3,1,4,1,5,9,2,6,5,3,5,9]
output_set = set([])
for i in input_list:
    output_set.add(i)



#####################[Code 2]##########################

A = [1,1,2,3,4,2]

B = list(set(A))

print(B)



#####################[Code 3]##########################

def myenumerate(A):
    B = []
    for i in range(0, len(A)):
        B.append((i,A[i]))
    return B
        
print(myenumerate([1,1,2,8]))



#####################[Code 4]##########################

def myenumerate(A):
    return [ (i, A[i]) for i in range(0, len(A)) ]
        
print(myenumerate([1,1,2,8]))



#####################[Code 5]##########################

def mytriplets(n):
    A = []
    for i in range(1, n+1):
        for j in range(i, n+1):
            if i+j <= n:
                A.append((i,j,i+j))
                
    return A

print(mytriplets(8))



#####################[Code 6]##########################

def mytriplets(n):
  return [(i,j,i+j) for i in range(1, n+1) for j in range(i,n+1) if i+j <= n]

print(mytriplets(8))



#####################[Code 7]##########################

A = [3,5,1, "hello"]
B = [2,9]

C = zip(A,B)

print(type(C))

D = set(C)
print(D)



#####################[Code 8]##########################

<class 'zip'>
{(3, 2), (5, 9)}



#####################[Code 9]##########################

A = [3.234, 13, 1.1, 56.1]
B = [67, 12.12, 123, 62]

C = list(zip(A,B))
print(C)



#####################[Code 10]##########################

data[0]:   [6, 1, 3, 4, 7, 8, 5, 2, 9]
data[1]:   [7, 4, 8, 5, 2, 9, 1, 6, 0]
data[2]:   [2, 5, 9, 1, 6, 3, 4, 7, 8]
data[3]:   [0, 2, 4, 6, 9, 5, 7, 3, 1]
data[4]:   [3, 7, 1, 2, 8, 4, 6, 9, 0]
data[5]:   [9, 6, 5, 7, 3, 1, 2, 8, 4]
data[6]:   [5, 3, 6, 8, 1, 0, 9, 4, 0]
data[7]:   [1, 8, 7, 9, 4, 2, 3, 5, 6]
data[8]:   [4, 9, 2, 3, 5, 6, 8, 1, 7]



#####################[Code 11]##########################

zeros = [j for j in range(0, 9) if data[i][j] == 0]

if len(zeros) == 1:
    somme_ligne = sum(data[i])
    valeur_manquante = 45 - somme_ligne
    data[i][zeros[0]] = valeur_manquante



#####################[Code 12]##########################

data[0]:   [6, 1, 3, 4, 7, 8, 5, 2, 9]
data[1]:   [7, 4, 8, 5, 2, 9, 1, 6, 0]
data[2]:   [2, 5, 9, 1, 6, 3, 4, 7, 8]
data[3]:   [0, 2, 4, 6, 9, 5, 7, 3, 1]
data[4]:   [3, 7, 1, 2, 8, 4, 6, 9, 0]
data[5]:   [9, 6, 5, 7, 3, 1, 2, 8, 4]
data[6]:   [5, 3, 6, 8, 1, 0, 9, 4, 0]
data[7]:   [1, 8, 7, 9, 4, 2, 3, 5, 6]
data[8]:   [4, 9, 2, 3, 5, 6, 8, 1, 7]



#####################[Code 13]##########################

colonne = [data[i][j] for i in range(0, 9)]
        
zeros = [i for i in range(0, 9) if data[i][j] == 0]
        
if len(zeros) == 1:
    somme_colonne = sum(colonne)
    valeur_manquante = 45 - somme_colonne
    data[zeros[0]][j] = valeur_manquante



#####################[Code 14]##########################

data[0]:   [6, 1, 3, 4, 7, 8, 5, 2, 9]
data[1]:   [7, 4, 8, 5, 2, 9, 1, 6, 0]
data[2]:   [2, 5, 9, 1, 6, 3, 4, 7, 8]
data[3]:   [0, 2, 4, 6, 9, 5, 7, 3, 1]
data[4]:   [3, 7, 1, 2, 8, 4, 6, 9, 0]
data[5]:   [9, 6, 5, 7, 3, 1, 2, 8, 4]
data[6]:   [5, 3, 6, 8, 1, 0, 9, 4, 0]
data[7]:   [1, 8, 7, 9, 4, 2, 3, 5, 6]
data[8]:   [4, 9, 2, 3, 5, 6, 8, 1, 7]



#####################[Code 15]##########################

data[0]:   [|{\color{red}6, 1, 3}|, |{\color{orange}4, 7, 8}|, |{\color{gray}5, 2, 9}|]
data[1]:   [|{\color{red}7, 4, 8}|, |{\color{orange}5, 2, 9}|, |{\color{gray}1, 6, 0}|]
data[2]:   [|{\color{red}2, 5, 9}|, |{\color{orange}1, 6, 3}|, |{\color{gray}4, 7, 8}|]
           -------+-------+-------
data[3]:   [|{\color{green}0, 2, 4}|, |{\color{cyan}6, 9, 5}|, |{\color{blue}7, 3, 1}|]
data[4]:   [|{\color{green}3, 7, 1}|, |{\color{cyan}2, 8, 4}|, |{\color{blue}6, 9, 0}|]
data[5]:   [|{\color{green}9, 6, 5}|, |{\color{cyan}7, 3, 1}|, |{\color{blue}2, 8, 4}|]
           -------+-------+-------
data[6]:   [|{\color{magenta}5, 3, 6}|, |{\color{purple}8, 1, 0}|, |{\color{brown}9, 4, 0}|]
data[7]:   [|{\color{magenta}1, 8, 7}|, |{\color{purple}9, 4, 2}|, |{\color{brown}3, 5, 6}|]
data[8]:   [|{\color{magenta}4, 9, 2}|, |{\color{purple}3, 5, 6}|, |{\color{brown}8, 1, 7}|]



#####################[Code 16]##########################

block_row = (i // 3) * 3
block_col = (j // 3) * 3
    
block_sum = 0
zero_count = 0
zero_position = None
    
for r in range(block_row, block_row + 3):
    for c in range(block_col, block_col + 3):
        if data[r][c] == 0:
            zero_count += 1
            zero_position = (r, c)
        else:
            block_sum += data[r][c]
    
if zero_count == 1 and zero_position == (i, j):
     data[i][j] = 45 - block_sum



#####################[Code 17]##########################

data[0]:   [6, 1, 3, 4, 7, 8, 5, 2, 9]
data[1]:   [7, 4, 8, 5, 2, 9, 1, 6, 0]
data[2]:   [2, 5, 9, 1, 6, 3, 4, 7, 8]
data[3]:   [0, 2, 4, 6, 9, 5, 7, 3, 1]
data[4]:   [3, 7, 1, 2, 8, 4, 6, 9, 0]
data[5]:   [9, 6, 5, 7, 3, 1, 2, 8, 4]
data[6]:   [5, 3, 6, 8, 1, 0, 9, 4, 0]
data[7]:   [1, 8, 7, 9, 4, 2, 3, 5, 6]
data[8]:   [4, 9, 2, 3, 5, 6, 8, 1, 7]



#####################[Code 18]##########################

possibles = {1, 2, 3, 4, 5, 6, 7, 8, 9}
    
for col in range(0, 9):
    possibles.discard(data[i][col])
    
for ligne in range(0, 9):
    possibles.discard(data[ligne][j])
    
bloc_i, bloc_j = (i // 3) * 3, (j // 3) * 3
for di in range(0, 3):
    for dj in range(0, 3):
    possibles.discard(data[bloc_i + di][bloc_j + dj])
    
if len(possibles) == 1:
    data[i][j] = possibles.pop()



