te dan una matriz de objetos con "1" y mas elementos, si el elemento es "." es que esta vacia. Cada vez que se inicia la funcion los "1" se mueven hacia la direccion que trengan dispnible iniciando desde arriba, el primero el moverse tiene que ser el "1" con self.edad mayor, para eso metemos todos los "1" en una lista.
def mover(self): posiciones = [] for i in range(len(self.lista_habitables)): if self.lista_habitables[i] == "1": posiciones.append(i) posiciones = sorted(posiciones, key=lambda i: self.edad[i]) for i in reversed(posiciones): if self.lista_habitables[i-1] == ".": self.lista_habitables[i-1] = "1" self.lista_habitables[i] = "." self.edad[i-1] = self.edad[i] + 1 self.edad[i] = 0 elif self.lista_habitables[i+1] == ".": self.lista_habitables[i+1] = "1" self.lista_habitables[i] = "." self.edad[i+1]