def genere_matrice(rle,x,y):
"""
Transforme le code rle en une matrice de dimension x*y
param : rle : str
param : x : int
param : y : int
return : list
>>> genere_matrice("b3o$3o!",4,2)
[[0, 1, 1, 1], [1, 1, 1, 0]]
>>> genere_matrice("bo$2bo$3o!",3,3)
[[0, 1, 0], [0, 0, 1], [1, 1, 1]]
>>> genere_matrice("2o$2o$2b2o$2b2o!",4,4)
[[1, 1, 0, 0], [1, 1, 0, 0], [0, 0, 1, 1], [0, 0, 1, 1]]
>>> genere_matrice("12ob$2b11o!",15,2)
[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0], [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0]]
"""
matrice=[]
caractere_speciaux=["b","o","$","!"]
ligne=[]
for i in range(len(rle)):
if rle[i]=="b" and (rle[i-1] not in caractere_speciaux) and (rle[i-2] not in caractere_speciaux):
ligne+=int(rle[i-2:i])*[0]
elif rle[i]=="b" and (rle[i-1] not in caractere_speciaux):
ligne+=int(rle[i-1])*[0]
elif rle[i]=="b" and (rle[i-1] in caractere_speciaux):
ligne+=[0]
elif rle[i]=="o" and (rle[i-1] not in caractere_speciaux) and (rle[i-2] not in caractere_speciaux):
ligne+=int(rle[i-2:i])*[1]
elif rle[i]=="o" and (rle[i-1] not in caractere_speciaux):
ligne+=int(rle[i-1])*[1]
elif rle[i]=="o" and (rle[i-1] in caractere_speciaux):
ligne+=[1]
elif rle[i]=="$":
ligne+=(x-len(ligne))*[0]
matrice.append(ligne)
ligne=[]
elif rle[i]=="!":
ligne+=(x-len(ligne))*[0]
matrice.append(ligne)
return matrice
if __name__ == '__main__':
import doctest
doctest.testmod(verbose=True)