vie.py
def charger_fichier_run_length_encoded(chemin_fichier):
    """ Retourne la structure contenue dans un fichier au format Run Length Encoded (.rle) """
    structure = []
    ligne = []
    nb_cellules = 0
    nb_lignes = 0
    nombre = 0
    fin = False
    no_ligne = 0
    fichier = open(chemin_fichier, "r")
    for ligne_fichier in fichier:
        no_ligne += 1
        ligne_fichier = ligne_fichier.strip()
        if ligne_fichier == "" or ligne_fichier.startswith("#"):
            continue
        elif ligne_fichier.startswith("x"):
            expression = re.match(r'^\s*x\s*=\s*(?P<x>\d*)\s*,\s*y\s*=\s*(?P<y>\d*)(\s*,\s*rule\s*=\s*(?P<rule>[bB]\d*/[sS]\d*))?', ligne_fichier)
            if expression is not None:
                en_tete = expression.groupdict()
                largeur_structure = int(en_tete["x"])
                hauteur_structure = int(en_tete["y"])
            else:
                print(texte1[parametres["LANGUE"]]["ERREUR"] + ": " + texte1[parametres["LANGUE"]]["FICHIER"] + "=" + chemin_fichier + " " + texte1[parametres["LANGUE"]]["no_ligne"] + "=" + str(no_ligne) + " " + texte1[parametres["LANGUE"]]["LIGNE"] + "=" + ligne_fichier)
        else:
            for caractere in ligne_fichier:
                if caractere in (' ', '\\t'):
                    continue
                elif caractere >= "0" and caractere <= "9":
                    nombre = (nombre * 10) + int(caractere)
                elif caractere in ('b', 'B'):
                    if nombre == 0:
                        nombre = 1
                    for i in range(nombre):
                        ligne.append(CELLULE_MORTE)
                        nb_cellules += 1
                    nombre = 0
                elif caractere in ('o', 'O'):
                    if nombre == 0:
                        nombre = 1
                    for i in range(nombre):
                        ligne.append(CELLULE_NAISSANTE)
                        nb_cellules += 1
                    nombre = 0
                elif caractere == '$':
                    if nombre == 0:
                        nombre = 1
                    for j in range(nombre):
                        for i in range(nb_cellules, largeur_structure):
                            ligne.append(CELLULE_MORTE)
                        nb_cellules = 0
                        structure.append(ligne.copy())
                        ligne = []
                        nb_lignes = nb_lignes + 1
                    nombre = 0
                elif caractere == '!':
                    for i in range(nb_cellules, largeur_structure):
                        ligne.append(CELLULE_MORTE)
                    nb_cellules = 0
                    structure.append(ligne.copy())
                    ligne = []
                    nb_lignes = nb_lignes + 1
                    for j in range(nb_lignes, hauteur_structure):
                        for i in range(largeur_structure):
                            ligne.append(CELLULE_MORTE)
                        structure.append(ligne.copy())
                        ligne = []
                    fin = True
                    break
                else:
                    print(texte1[parametres["LANGUE"]]["AVERTISSEMENT"] + ": " + texte1[parametres["LANGUE"]]["FICHIER"] + "=" + chemin_fichier + " " + texte1[parametres["LANGUE"]]["no_ligne"] + "=" + str(no_ligne) + " " + texte1[parametres["LANGUE"]]["LIGNE"] + "=" + ligne_fichier)
                    break
        if fin:
            break
    fichier.close()
    return structure
 Retourne la structure contenue dans un fichier au format Run Length Encoded (.rle) 
Retourne la structure contenue dans un fichier au format Run Length Encoded (.rle)
Retourne la structure contenue dans un fichier au format Run Length Encoded ( . rle )
def charger_fichier_run_length_encoded(chemin_fichier):
    structure = []
    ligne = []
    nb_cellules = 0
    nb_lignes = 0
    nombre = 0
    fin = False
    no_ligne = 0
    fichier = open(chemin_fichier, "r")
    for ligne_fichier in fichier:
        no_ligne += 1
        ligne_fichier = ligne_fichier.strip()
        if ligne_fichier == "" or ligne_fichier.startswith("#"):
            continue
        elif ligne_fichier.startswith("x"):
            expression = re.match(r'^\s*x\s*=\s*(?P<x>\d*)\s*,\s*y\s*=\s*(?P<y>\d*)(\s*,\s*rule\s*=\s*(?P<rule>[bB]\d*/[sS]\d*))?', ligne_fichier)
            if expression is not None:
                en_tete = expression.groupdict()
                largeur_structure = int(en_tete["x"])
                hauteur_structure = int(en_tete["y"])
            else:
                print(texte1[parametres["LANGUE"]]["ERREUR"] + ": " + texte1[parametres["LANGUE"]]["FICHIER"] + "=" + chemin_fichier + " " + texte1[parametres["LANGUE"]]["no_ligne"] + "=" + str(no_ligne) + " " + texte1[parametres["LANGUE"]]["LIGNE"] + "=" + ligne_fichier)
        else:
            for caractere in ligne_fichier:
                if caractere in (' ', '\\t'):
                    continue
                elif caractere >= "0" and caractere <= "9":
                    nombre = (nombre * 10) + int(caractere)
                elif caractere in ('b', 'B'):
                    if nombre == 0:
                        nombre = 1
                    for i in range(nombre):
                        ligne.append(CELLULE_MORTE)
                        nb_cellules += 1
                    nombre = 0
                elif caractere in ('o', 'O'):
                    if nombre == 0:
                        nombre = 1
                    for i in range(nombre):
                        ligne.append(CELLULE_NAISSANTE)
                        nb_cellules += 1
                    nombre = 0
                elif caractere == '$':
                    if nombre == 0:
                        nombre = 1
                    for j in range(nombre):
                        for i in range(nb_cellules, largeur_structure):
                            ligne.append(CELLULE_MORTE)
                        nb_cellules = 0
                        structure.append(ligne.copy())
                        ligne = []
                        nb_lignes = nb_lignes + 1
                    nombre = 0
                elif caractere == '!':
                    for i in range(nb_cellules, largeur_structure):
                        ligne.append(CELLULE_MORTE)
                    nb_cellules = 0
                    structure.append(ligne.copy())
                    ligne = []
                    nb_lignes = nb_lignes + 1
                    for j in range(nb_lignes, hauteur_structure):
                        for i in range(largeur_structure):
                            ligne.append(CELLULE_MORTE)
                        structure.append(ligne.copy())
                        ligne = []
                    fin = True
                    break
                else:
                    print(texte1[parametres["LANGUE"]]["AVERTISSEMENT"] + ": " + texte1[parametres["LANGUE"]]["FICHIER"] + "=" + chemin_fichier + " " + texte1[parametres["LANGUE"]]["no_ligne"] + "=" + str(no_ligne) + " " + texte1[parametres["LANGUE"]]["LIGNE"] + "=" + ligne_fichier)
                    break
        if fin:
            break
    fichier.close()
    return structure
def charger_fichier_run_length_encoded ( chemin_fichier ) : structure = [ ] ligne = [ ] nb_cellules = 0 nb_lignes = 0 nombre = 0 fin = False no_ligne = 0 fichier = open ( chemin_fichier , "r" ) for ligne_fichier in fichier : no_ligne += 1 ligne_fichier = ligne_fichier . strip ( ) if ligne_fichier == "" or ligne_fichier . startswith ( "#" ) : continue elif ligne_fichier . startswith ( "x" ) : expression = re . match ( r'^\s*x\s*=\s*(?P<x>\d*)\s*,\s*y\s*=\s*(?P<y>\d*)(\s*,\s*rule\s*=\s*(?P<rule>[bB]\d*/[sS]\d*))?' , ligne_fichier ) if expression is not None : en_tete = expression . groupdict ( ) largeur_structure = int ( en_tete [ "x" ] ) hauteur_structure = int ( en_tete [ "y" ] ) else : print ( texte1 [ parametres [ "LANGUE" ] ] [ "ERREUR" ] + ": " + texte1 [ parametres [ "LANGUE" ] ] [ "FICHIER" ] + "=" + chemin_fichier + " " + texte1 [ parametres [ "LANGUE" ] ] [ "no_ligne" ] + "=" + str ( no_ligne ) + " " + texte1 [ parametres [ "LANGUE" ] ] [ "LIGNE" ] + "=" + ligne_fichier ) else : for caractere in ligne_fichier : if caractere in ( ' ' , '\\t' ) : continue elif caractere >= "0" and caractere <= "9" : nombre = ( nombre * 10 ) + int ( caractere ) elif caractere in ( 'b' , 'B' ) : if nombre == 0 : nombre = 1 for i in range ( nombre ) : ligne . append ( CELLULE_MORTE ) nb_cellules += 1 nombre = 0 elif caractere in ( 'o' , 'O' ) : if nombre == 0 : nombre = 1 for i in range ( nombre ) : ligne . append ( CELLULE_NAISSANTE ) nb_cellules += 1 nombre = 0 elif caractere == '$' : if nombre == 0 : nombre = 1 for j in range ( nombre ) : for i in range ( nb_cellules , largeur_structure ) : ligne . append ( CELLULE_MORTE ) nb_cellules = 0 structure . append ( ligne . copy ( ) ) ligne = [ ] nb_lignes = nb_lignes + 1 nombre = 0 elif caractere == '!' : for i in range ( nb_cellules , largeur_structure ) : ligne . append ( CELLULE_MORTE ) nb_cellules = 0 structure . append ( ligne . copy ( ) ) ligne = [ ] nb_lignes = nb_lignes + 1 for j in range ( nb_lignes , hauteur_structure ) : for i in range ( largeur_structure ) : ligne . append ( CELLULE_MORTE ) structure . append ( ligne . copy ( ) ) ligne = [ ] fin = True break else : print ( texte1 [ parametres [ "LANGUE" ] ] [ "AVERTISSEMENT" ] + ": " + texte1 [ parametres [ "LANGUE" ] ] [ "FICHIER" ] + "=" + chemin_fichier + " " + texte1 [ parametres [ "LANGUE" ] ] [ "no_ligne" ] + "=" + str ( no_ligne ) + " " + texte1 [ parametres [ "LANGUE" ] ] [ "LIGNE" ] + "=" + ligne_fichier ) break if fin : break fichier . close ( ) return structure
Retourne la structure contenue dans un fichier au format Run Length Encoded (.rle)
Retourne la structure contenue dans un fichier au format Run Length Encoded ( . rle )
""" Retourne la structure contenue dans un fichier au format Run Length Encoded (.rle) """
chemin_fichier