# IMPORT ==========================================================================================
import random

# FONCTIONS =======================================================================================
def create_matrix(m, n):
	mat = []
	for i in range(m): # pour chaque ligne de la matrice mat
		line = [] # on crée une nouvelle liste représentant une ligne de la matrice mat
		for j in range(n):
			line.append(random.randint(-10, 10)) # que l'on remplit de n nombres aléatoires
		mat.append(line) # et on ajoute cette ligne en tant qu'élément à la liste mat
	return mat # on obtient ainsi une liste mat contenant m sous-listes de taille n

def display_screen(mat, m, n): # simule un affichage de la matrice mat sur un écran de taille m*n
	print("")
	print((n + 2) * "#") # bord supérieur de l'écran -> on répète (n + 2) fois le caractères *
	for i in range(m):
		print("|", end = '') # bord gacuhe de l'écran -> end = '' évite le saut de ligne
		for j in range(n): # pour chaque coefficient de mat on affiche un symbole différent en fonction de son signe
			if mat[i][j] < 0:
				print("-", end = '')
			elif mat[i][j] > 0:
				print("+", end = '')
			else:
				print("o", end = '')
		print("|") # bord gauche de l'écran et saut de ligne
	print((n + 2) * "#") # bord inférieur de l'écran -> on répète (n + 2) fois le caractères *
	print("")

# Fonctions de tri
def sort_lines(mat):
	for i in range(len(mat)):
		trierListe(mat[i])

def permuter(liste, i, j):
	tmp = liste[i] 
	liste[i] = liste[j] 
	liste[j] = tmp

def trierListe(liste):
	for i in range(0, len(liste) - 1):
		for j in range(i + 1, len(liste)):
			if liste[i] > liste[j]:
				permuter(liste, i, j)

# PROGRAMME PRINCIPAL =============================================================================
print("***** DEBUT PROGRAMME *****")
lines, columns = 20, 80

print("Création du flux de données... ", end = '')
data = create_matrix(lines, columns)
print("Flux créé avec succès.")

print("Affichage du flux :")
display_screen(data, lines, columns)

print("Affichage du flux trié :")
sort_lines(data)
display_screen(data, lines, columns)
print("****** FIN PROGRAMME ******")