# -*- coding: utf-8 -*- """ Name: decompression.py Modification: CFV Date: avril 2020 Description: programme de decompression d'une carte fournie sous la forme suivante: H 5 A 3 B 1 G 2 H 4 A 2 B 1 G 1 F 2 H 2 B 4 etc..... """ def decompresse_carte(carte_compressee): """ @param carte_compressee: carte_compressee: matrice sous la forme G 1 H 5 A 3 B 1 G 2 H 4 A 2 B 1 G 1 F 2 H 2 B 4 etc..... @return: matrice : tab =[['G', 'H', 'H', 'H', 'H', 'A', 'A', 'A', 'B','I'], ['G', 'G', 'H', 'H', 'H', 'H', 'A', 'A', 'B','I'], ['G', 'F', 'F', 'H', 'H', 'B', 'B', 'B', 'B','I'], ['G', 'F', 'F', 'C', 'H', 'H', 'H', 'B', 'D','D'], ['G', 'F', 'F', 'C', 'C', 'C', 'D', 'D', 'D','D'], ['G', 'G', 'F', 'F', 'F', 'F', 'E', 'E', 'E','J']] """ # creation de la matrice carte carte = [] for ligne in carte_compressee: # pour chaque ligne de la carte compressee # on crée une nouvelle ligne dans la matrice carte lignecarte = [] for i in range(0, len(ligne), 2): # pour chaque couple region, repetition de la ligne region = ligne[i] nbrepetition = ligne[i+1] # on ajoute à la ligne la region répétée lignecarte.extend([region] * nbrepetition) carte.append(lignecarte) return carte if __name__ == '__main__': # on teste les cas où les noms de région font plus qu'un caractère carte = [["Gondor", 1, "Harad", 4, "Armor", 3, "Barandur", 1, "Imladris", 1], ["Gondor", 2, "Harad", 4, "Armor", 2, "Barandur", 1, "Imladris", 1], ["Gondor", 1, "Terre_du_milieu", 2, "Harad", 2, "Barandur", 4, "Imladris", 1], ["Gondor", 1, "Terre_du_milieu", 2, "Moria", 1, "Harad", 3, "Barandur", 1, "Mordor", 2], ["Gondor", 1, "Terre_du_milieu", 2, "Moria", 3, "Mordor", 4], ["Gondor", 2, "Terre_du_milieu", 4, "Eriador", 3, "Lorien", 1]] # carte = [["C", 4, "F", 3], # ["C", 1, "B", 1, "D", 1, "B", 2, "E", 1, "F", 1], # ["A", 1, "B", 4, "E", 1, "A", 1], # ["A", 7]] # carte = [["A", 1, "B", 8, "C", 6, "D", 1], # ["A", 2, "B", 7, "C", 5, "D", 2,], # ["A", 2, "E", 5, "F", 2, "C", 4, "D", 3], # ["A", 1, "E", 7, "F", 2, "C", 3, "D", 3], # ["A", 1, "E", 6, "G", 1, "F", 3, "C", 2, "D", 3], # ["E", 7, "G", 1, "F", 3, "C", 2, "D", 2, "L", 1], # ["H", 4, "E", 2, "G", 2, "F", 2, "I", 1, "D", 5], # ["L", 1, "H", 4, "E", 1, "G", 2, "I", 3, "J", 5], # ["L", 1, "H", 3, "K", 2, "G", 2, "I", 3, "J", 5], # ["L", 1, "H", 2, "K", 3, "G", 1, "I", 4, "J", 5], # ["L", 2, "H", 1, "K", 3, "G", 1, "I", 4, "J", 5], # ["L", 2, "K", 5, "I", 4, "M", 3, "J", 2], # ["L", 3, "K", 4, "I", 3, "M", 5, "J", 1], # ["L", 3, "K", 4, "I", 3, "M", 5, "Z", 1]] carte_decompresse = decompresse_carte(carte) print(carte_decompresse)