# Claude Touzet – 2008


f=open("ubs.txt",'r') #Ouverture fichier txt en lecture
lignes=f.readlines()  # On récupère les différentes lignes du fichier dans "lignes"
f.close() # on n'a plus besoin du ficheier 'f', on le ferme
#print lignes  # on vérifie que l'on a bien récupèré le fichier en affichant "lignes"
tableau=[]    # on stockera dans ce tableau les valeurs des coûts
for line in lignes : # pour chaque ligne (appelée "line") du fichier
	#print line   # vérification qu'on a bien chaque "line" complète 
	for i in range(len(line)) : # pour chaque lettre de la ligne "line"
		if (line[i] == '\t') : # on repère le marqueur "tabulation" entre les noms et les chiffres
			nb = -1  # a priori pas de nombre
			#print line[i+1], line[i+2]  # on vériie que l'on a bien des nombres
			# si il y a une lettre qui si la tabulation et que la lettre est comprise entre 0 et 9 
			if  ( ( (i+1)<len(line) ) and (line[i+1]>='0') and (line[i+1]<='9') )  :
				nb = int(line[i+1])   # conversion de la lettre en nombre (unité)
			if  ( ( (i+2)<len(line) ) and (line[i+2]>='0') and (line[i+2]<='9') )  :
				nb = int(line[i+2]) + int(line[i+1])*10 # conversion (dizaine)
			if  ( ( (i+3)<len(line) ) and (line[i+3]>='0') and (line[i+3]<='9') )  :
				nb = int(line[i+3]) + int(line[i+2])*10 + int(line[i+1])*100 # conversion (centaine)
			if (nb>=0) : # si c'est -1, il n'y a pas eu de nombre trouvé dans la "line"
				#print nb  # on vérifie que l'on a bien créé un nombre correct pour chaque "line"
				tableau.append( nb)  # on ajoute ce nombre dans le tableau
#print tableau  # on vérifie que le tableau contient bien tous les nombres prévus
g=open("touzet_ubs.txt",'w') # ouverture du fichier de sortie "g" en écriture
# on va parcourir 2 fois le "tableau"  :
# une fois avec "b" pour trouver le minimum et l'écrire dans le ficher "g", et l'enlever du tableau
# on fera cela aussi souvent qu'il le faut pour trouver tous les minimums successifs du tableau ("a")
for a in range (len(tableau)) : # on parcours le tableau avec la variable a
	min =1000000  # un minimum un peu grand pour être sûr que la première valeur du tableau prendra sa place
	for b in range (len(tableau)) : # on parcours le tableau avec la variable b
		if  tableau[b]<min : # si la valeur du tableau est plus petite
			min = tableau[b] # alors c'est cette valeur dont il faut ce rappeler
			index_min = b # il faut aussi se rappeler de quel ligne il s'agit
	# lorsque l'on sort de cette boucle for, index_min contient le numéro de la ligne ayant la plus petit valeur 
	print lignes[index_min] # affichage pour vérification de la "line" se trouvant à la ligne 'index_min'
	g.write( lignes[index_min]) # on recopie la ligne en question dans le fichier de sortie 'g'
	tableau[index_min]=1000000 # on s'assure que cette valeur ne sera plus jamais un minimum et 
	                           # que donc on ne re-écrira pas 2 fois la même ligne.
g.close() # Ne PAS oublier de fermer le fichier de sortie
