Bonjour,
pour faire un automate selon ta feuille d'exercice, tu peux commencer ton programme comme il suit afin de récupérer les informations entrées par l'utilisateur
1 2 3 4 5 6 7 8 9 10 11 12
| import sys
try:
initState = [int(x) for x in sys.argv[1]]
processLen = int(sys.argv[2])
idRule = int(sys.argv[3])
except:
print 'parameters error'
#affiche les parametres obtenus sur l entree du programme
print "%s\t%s\t%s" % (initState,processLen,idRule) |
ces quelques lignes lancées avec
python script.py 001001001 10 15
permet d'avoir les variables que tu souhaite dans le bon format.
ensuite, comme le suggère ton TP, il serait judicieux de faire autant de fonction qu'il y a de règles, et une fonction qui détermine quelle règle appliquer. par exemple:
tu fais une règle bidon:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| def rule1(etat):
#etat est la liste des etats de ton automate
#on va generer l etat t+1 a partir de l etat donne
nouvelEtat = []
for i in xrange(len(etat)):
if i == 0: #cas ou on ne peut pas lire i-1
nouvelEtat.append(1) #appliquer la regle pour i
elif i == len(etat)-1:
nouvelEtat.append(1) #cas ou il n'y a pas de valeurs a i+1
else:#exemple de regle bidon
if etat[i-1] == 0 and etat[i+1] == 1:
nouvelEtat.append(1)
else:
nouvelEtat.append(0)
return nouvelEtat |
Avec au dessus, une fonction qui ordonne les règles
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| def applyRule(initState,processLen,idRule):
state = initState #on dit u'on utilise la reference state
for time in xrange(processLen):
if idRule == 1:
state = rule1(state)
if idRule == 2:
pass
"""
on transforme l etat a l instant t en l etat a l instant t+1
en construisant un nouveau resultat plutot que modifier l etat
afin de considerer que l automate evolue en parallele.
"""
#a chaque etape, on affiche le nouvel etat
print state |
et enfin, une fonction qui lance le tout:
1 2
| if __name__ == "__main__":
applyRule(initState,processLen,idRule) |
Avec ca, tu as le squelette d un automate cellulaire en python, il faut surtout que tu comprennes comment ça marche, et aussi que tu ajoutes les différentes règles qui te sont demandées.
Si ce domaine te passionne, tu pourrais regarder le Master 2 MOCAD à l'université de Lille 1 ... qui sait.
Partager