#! /usr/bin/python
# -*- coding: utf-8 -*-

#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
#
"""Commandes pour les listes et dictionnaires.
Auteur: Mettre votre nom
Date: 22-01-2026
"""

######################################
# Import des fonctions de maths      #
######################################

from math import *

######################################
# Algorithme 0:                      #
# Exemple de commandes utiles        #
######################################


a = 34 # a vaut 24
b = 5 # b vaut 5
c = a // b # c vaut le quotient de la division euclidienne de a par b, c'est à dire 6
d = a % b  # d vaut le reste de la division euclidienne de a par b, c'est à dire 4
a = 6.35 # a vaut maintenant 6,35

# commandes pour les listes

l1 = ["toto",4,[2,3],3.14]      # declaration de liste
len(l1)                         # longueur de liste
l1[0]                           # element de l1 d'indice 0
l1[1]                           # element de l1 d'indice 1
l1[2]                           # element de l1 d'indice 2: c'est une liste
l1[len(l1)-1]                   # dernier element de l1
l1+[-1 ,0]                      # concatenation de l1 et de la liste [-1,0]
3*[2 ,3 ,4]                     # repetition de liste
l1.append(42)                   # ajout d'un element a la fin de l1
l1.extend([ -1 ,0])             # ajout de plusieurs elements a la fin de l1
del(l1[6])                      # suppression de l'element d'indice 6 dans l1
l1.remove('toto')               # suppression des elements "toto" dans l1
l1.insert(4,"titi")             # insertion de "titi" en indice 4 dans l1
list(range(5))                  # liste contenant les entiers de [[0;4]]]
list(range(3 ,7))               # liste contenant les entiers de [[3;6]]]
list(range(3,11,2))             # liste contenant les entiers de [[3;10]]] avec un pas de 2
l1[0:5]                         # liste contenant les elements de l1 d'indices dans l'intervalle [[0;5]]
l1[0:5:2]                       # liste contenant les elements de l1 d'indices dans l'intervalle [[0;5]] avec un pas de 2
l1[:5]                          # liste contenant tous les elements de l1 jusqu'a l'element d'indice 5
l1[4:]                          # liste contenant tous les elements de l1 a partir de l'element d'indice 4
l1[:]                           # liste contenant tous les elements de l1
l1[::2]                         # liste contenant tous les elements de l1 d'indice pair
l1[3]="tutu"                    # remplacement de l'element d'indice 3 de l1 par "tutu"
"toto" in l1                    # "toto" est-il dans l1?
3.14 in l1                      # 3.14 est-il dans l1?
l1.index(3.14)                  # recherche du premier indice de l'element 3.14
max([1,3,-1])                   # renvoie le maximum de la liste [1,3,-1]
sum([1,3,-1])                   # renvoie la somme des éléments de la liste [1,3,-1]


# commandes pour les dictionnaires
# creation d'un dictionnaire qui contient les membres de ma famille
# les clefs sont les noms des membres
# les valeurs sont formees d'une liste qui contient l'age du membre, son numero de telephone, son adresse postale, son pays de residence

famille = {"Tonton": [34, "0619564691", "12 rue des Embrouilles - 93 820 Les Grands Champs", "France"], "Tata": [35, "0624124839", "12 rue des Embrouilles - 93 820 Les Grands Champs", "France"],
           "Cousine Fatou": [12, "4413280254", "15 Chemin des Pêcheurs - 4 482 Douala", "Cameroun"], "Petit Frere": [8, "", "12 rue du Progrès - 92 700 Colombes", "France"], "Moi": [19, "071522354681", "12 rue du Progrès - 92 700 Colombes", "France"]}

print(famille["Moi"]) # acceder aux valeurs d'une entree du dictionnaire
print(famille.keys()) # afficher les clefs du dictionnaire

famille["Maman"]=[41, "0624120403", "12 rue du Progrès - 92 700 Colombes", "France"] # ajout d'un element

# voici une maniere de parcourir les clefs et les valeurs
for k,v in famille.items(): # k represente la clef et v les valeurs
    print(k + " - " + v[2]) # cela va afficher la clef et l'adresse (3eme element de la liste des valeurs)


######################################
# Algorithme 1:                      #
# Faire une copie de liste           #
######################################

l2=l1[:]
l2=l1

######################################
# Algorithme 2:                      #
# Creation de liste par fonction     #
######################################

l3=[i**2 for i in range(5)]
l4=[i**2 for i in range(1,6,2)]
l5=[(x,y) for x in range(1,7) for y in range(1,7) if x!=y]

######################################
# Algorithme 3:                      #
# Nouvelle entree du dictionnaire    #
######################################



######################################
# Algorithme 4:                      #
# Filtrer le dictionnaire            #
######################################



######################################
# Algorithme 5:                      #
# Fonction Pol2Cart                  #
######################################



######################################
# Algorithme 6:                      #
# Fonction Cart2Pol                  #
######################################



######################################
# Algorithme 7:                      #
# Fonction EqDroiteOrth              #
######################################



######################################
# Algorithme 8:                      #
# Fonction EqDroiteCol               #
######################################



######################################
# Algorithme 9:                      #
# Fonction Barycentre                #
######################################

S1 = [[[0,0],1],[[4,4],1]]
S2 = [[[0,0],1],[[4,4],1],[[-2,2],2]]

######################################
# Algorithme 10:                     #
# A faire en une ligne!              #
######################################
