Espace TI: Forum
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -28%
Brandt LVE127J – Lave-vaisselle encastrable 12 ...
Voir le deal
279.99 €

automate cellulaire

4 participants

Aller en bas

automate cellulaire  Empty automate cellulaire

Message par nikitouzz Sam 26 Mai - 15:20

voila, j'ai fais un automate cellulaire simulant le sable, avec deux regle, soit un pixels est libre en dessous s'y deplacer ou si un pixels est disponible a gauche+1 et a gauche+1 un pixels en dessous ou a droite+1 et a droite+1 un pixeks en dessous s'y deplacer, maleuresement, je suis obligee d'y ajouter deux regle en gros voila mon code comment l'optimiser ?

L est le nombre de pixels dont on s'occupe avec les coordonne de chaque pixels enregistrer dans la liste 1 et la liste 2

Code:

:for(Z,0,L-1
:!if px1-test({L1+Z},{L2+Z})
:{L2+Z}+1->{L2+Z}
:Goto A
:end
:
:if px1-test({L1+Z}+1,{L2+Z})=0 and (px1-test({L1+Z}-1,{L2+Z})=0) and (px1-test({L1+Z}+1,{L2+Z}+1)=0) and (px1-test({L1+Z}-1,{L2+Z}+1)=0
:Rand^2->r1=0?{L1+Z}-1->{L1+Z}
:r1=0?{L1+Z}+1->{L1+Z}
:Goto A
:end
:
:if px1-test({L1+Z}+1,{L2+Z}=0 and px1-test({L1+Z}+1,{L2+Z}+1)=0
:{L1+Z)+1->{L1+Z}
:Goto A
:end
:
:if px1-test({L1+Z}-1,{L2+Z}+1)=0 and (px1-test({L1+Z}-1,{L2+Z})=0
:{L1+Z}-1->{L1+Z}
:end
:
:Lbl A
:end
:
:return

voila mon moteur de l'automate, si quelqu’un a une idée pour le raccourcir parce que il est trop trop lourd.
nikitouzz
nikitouzz
Platinum 1
Platinum 1

Sexe : Masculin
Age : 28
Messages : 1834
Date d'inscription : 16/01/2011
Points Forum : 7
Points Concours : 6
Langages :
  • - TI-Basic Z80
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
  • - TI-Basic 68K
  • - TI-Basic Nspire
Calculatrices :
  • - TI-73
  • - TI-76.fr
  • - TI-82 Stats.fr
  • - TI-83+
  • - TI-84+
  • - TI-92
  • - TI-Nspire
  • - TI-Nspire CX

TI-84+ SE


Revenir en haut Aller en bas

automate cellulaire  Empty Re: automate cellulaire

Message par kindermoumoute Sam 26 Mai - 16:31

Premières optimisations :
Code:

:for(Z,0,L-1
:!if pxl-test({L1+Z->I},{L2+Z->J})
:{J}++
:Goto A
:end
:
:!if pxl-test({I}+1,{J})+pxl-test({I}-1,{J})+pxl-test({I}+1,{J}+1)+px1-test({I}-1,{J}+1)
:Rand^2->r1??~1,1
:+{I}->{I}
:Goto A
:end
:
:!if px1-test({I}+1,{J})+px1-test({I}+1,{J}+1)
:{I)++
:Goto A
:end
:
:!if px1-test({I}-1,{J}+1)+px1-test({I}-1,{J}
:{I}--
:end
:
:Lbl A
:end
:
:return
kindermoumoute
kindermoumoute
Or 4
Or 4

Sexe : Masculin
Age : 30
Messages : 797
Date d'inscription : 07/10/2010
Points Forum : 21
Points Concours : 1
Langages :
  • - TI-Basic Z80
  • - Axe Parser
Calculatrices :
  • - TI-83+

TI-83+


Revenir en haut Aller en bas

automate cellulaire  Empty Re: automate cellulaire

Message par nikitouzz Sam 26 Mai - 16:34

c'est pas mal du tout Content je pense que on peut faire mieux Langue
nikitouzz
nikitouzz
Platinum 1
Platinum 1

Sexe : Masculin
Age : 28
Messages : 1834
Date d'inscription : 16/01/2011
Points Forum : 7
Points Concours : 6
Langages :
  • - TI-Basic Z80
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
  • - TI-Basic 68K
  • - TI-Basic Nspire
Calculatrices :
  • - TI-73
  • - TI-76.fr
  • - TI-82 Stats.fr
  • - TI-83+
  • - TI-84+
  • - TI-92
  • - TI-Nspire
  • - TI-Nspire CX

TI-84+ SE


Revenir en haut Aller en bas

automate cellulaire  Empty Re: automate cellulaire

Message par kindermoumoute Sam 26 Mai - 16:49

Deuxièmes optimisations :
Code:

:for(Z,0,L-1
:!if pxl-test({L1+Z->I},{L2+Z->J})
:{J}++
:Goto A
:End
:
:!if pxl-test({I}+1,{J})+pxl-test({I}-1,{J})
:Rand^2??~1,1
:+{I}->{I}
:End
:
:pxl-test({I},{J})??{J}++
:
:Lbl A
:end
:
:return


Dernière édition par kindermoumoute le Sam 26 Mai - 16:52, édité 1 fois
kindermoumoute
kindermoumoute
Or 4
Or 4

Sexe : Masculin
Age : 30
Messages : 797
Date d'inscription : 07/10/2010
Points Forum : 21
Points Concours : 1
Langages :
  • - TI-Basic Z80
  • - Axe Parser
Calculatrices :
  • - TI-83+

TI-83+


Revenir en haut Aller en bas

automate cellulaire  Empty Re: automate cellulaire

Message par nikitouzz Sam 26 Mai - 16:51

tu peut encore le faire Content
nikitouzz
nikitouzz
Platinum 1
Platinum 1

Sexe : Masculin
Age : 28
Messages : 1834
Date d'inscription : 16/01/2011
Points Forum : 7
Points Concours : 6
Langages :
  • - TI-Basic Z80
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
  • - TI-Basic 68K
  • - TI-Basic Nspire
Calculatrices :
  • - TI-73
  • - TI-76.fr
  • - TI-82 Stats.fr
  • - TI-83+
  • - TI-84+
  • - TI-92
  • - TI-Nspire
  • - TI-Nspire CX

TI-84+ SE


Revenir en haut Aller en bas

automate cellulaire  Empty Re: automate cellulaire

Message par kindermoumoute Sam 26 Mai - 17:02

Troisièmes optimisations :
Code:
~1
for(L-1)
!If pxl-test({+1->Z+L1->I},{Z+L2->J})
{J}++
Goto A
End

!If pxl-test({I}+1,{J})*2+pxl-test({I}-1,{J})
Rand^2??~1,1
Else!If -1
1
Else
~1
End
+{I}->{I}

pxl-test({I},{J})??{J}++

Lbl A

Z
End

Return
kindermoumoute
kindermoumoute
Or 4
Or 4

Sexe : Masculin
Age : 30
Messages : 797
Date d'inscription : 07/10/2010
Points Forum : 21
Points Concours : 1
Langages :
  • - TI-Basic Z80
  • - Axe Parser
Calculatrices :
  • - TI-83+

TI-83+


Revenir en haut Aller en bas

automate cellulaire  Empty Re: automate cellulaire

Message par nikitouzz Sam 26 Mai - 17:59

voici mon code entier ne faite pas attention c'est un code de test, donc mal programmer et mal optimiser fait attention juste au moteur de l'automate

Code:

:.sable
:[FF81818181818181]→Pic0
:[00000000818181FF]
:
:
:0→X→Y→L→K+1→F
:Full
:Repeat getKey(15)
:ClrDraw
:Line(10,10,20,30
:Line(30,10,22,30
:Line(0,63,95,63
:Line(5,62,5,38
:Line(0,62,0,38
:Pt-On(60,55,8+Pic0
:Pt-On(50,55,8+Pic0
:Pt-On(35,30,8+Pic0
:Line(95,10,45,40
:
:
:sub(MAB
:sub(MAA
:Pt-Change(X,Y,Pic0
:K++
:DispGraph
:Pt-Change(X,Y,Pic0
:If getKey(1)
:Y++
:End
:If getKey(2)
:X--
:End
:If getKey(3)
:X++
:End
:If getKey(4)
:Y--
:End
:If (getKey(54) and (K^2=0)
:X+4→{L<sub>1</sub>+L}
:Y+4→{L<sub>2</sub>+L}
:L++
:End
:If getKey(53)
:0→L
:End
:
:End
:
:Lbl MAB
:For(Z,0,L
:Pxl-On({L<sub>1</sub>+Z},{L<sub>2</sub>+Z}
:End
:Return
:
:Lbl MAA
:‾1
:For(L-1)
:!If Pxl-Test({+1→Z+L<sub>1</sub>→I},{Z+L<sub>2</sub>→J}
:{J}++
:Goto A
:End
:
:!If Pxl-Test({I}+1,{J})*2+Pxl-Test({I}-1,{J}
:rand^2??‾1,1
:Else!If -1
:1
:Else
:‾1
:End
:+{I}→{I}
:Pxl-Test({I},{J})??{J}++
:Lbl A
:Z
:End
:Return
:
:Normal
nikitouzz
nikitouzz
Platinum 1
Platinum 1

Sexe : Masculin
Age : 28
Messages : 1834
Date d'inscription : 16/01/2011
Points Forum : 7
Points Concours : 6
Langages :
  • - TI-Basic Z80
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
  • - TI-Basic 68K
  • - TI-Basic Nspire
Calculatrices :
  • - TI-73
  • - TI-76.fr
  • - TI-82 Stats.fr
  • - TI-83+
  • - TI-84+
  • - TI-92
  • - TI-Nspire
  • - TI-Nspire CX

TI-84+ SE


Revenir en haut Aller en bas

automate cellulaire  Empty Re: automate cellulaire

Message par kindermoumoute Sam 26 Mai - 18:08

Quatrième version :

Code:

:‾1
:For(L-1)
:!If Pxl-Test({+1→Z+L<sub>1</sub>→I},{Z+L<sub>2</sub>→J}
:{J}++
:Else
:!If Pxl-Test({I}+1,{J})*2+Pxl-Test({I}-1,{J}
:rand^2??‾1,1
:Else!If -1
:1
:Else
:‾1
:End
:+{I}→{I}
:Pxl-Test({I},{J})??{J}++
:End
:Z
:End
:Return
Plus de bug, et c'est je pense le maximum que je puisse faire. ^^
kindermoumoute
kindermoumoute
Or 4
Or 4

Sexe : Masculin
Age : 30
Messages : 797
Date d'inscription : 07/10/2010
Points Forum : 21
Points Concours : 1
Langages :
  • - TI-Basic Z80
  • - Axe Parser
Calculatrices :
  • - TI-83+

TI-83+


Revenir en haut Aller en bas

automate cellulaire  Empty Re: automate cellulaire

Message par sandro Sam 26 Mai - 19:51

Une question, c'est quoi la vague à la 1ère ligne de la 3ème optimisation de Kindermoumoute?

Merci d'avance
Sandro
sandro
sandro
Or 4
Or 4

Sexe : Masculin
Age : 28
Messages : 806
Date d'inscription : 01/07/2011
Etudes : T°S SVT spé maths
Points Forum : 29
Points Concours : 5
Langages :
  • - TI-Basic Z80
  • - ASM TI-82 Stats / TI-83
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
Calculatrices :
  • - TI-82 Stats.fr
  • - TI-84+ SE
  • - TI-89
  • - Casio Collège

TI-84+ SE


Revenir en haut Aller en bas

automate cellulaire  Empty Re: automate cellulaire

Message par linkakro Sam 26 Mai - 21:26

Dans certains languages c'est la "complémentation à 1" qui sert entre autre à rendre négatif des nombres binaires dans certains systèmes.
Mais je me demande bien ce que cela fait ici.
linkakro
linkakro
Or 4
Or 4

Sexe : Masculin
Age : 30
Messages : 768
Date d'inscription : 01/07/2010
Etudes : dut geii (elec/info)
Points Forum : 51
Points Concours : 8
Langages :
  • - TI-Basic Z80
  • - ASM TI-82 Stats / TI-83
  • - ASM TI-83+ / TI-84+
Calculatrices :
  • - TI-82 Stats.fr
  • - TI-84 Pocket.fr

TI-84+ SE


Revenir en haut Aller en bas

automate cellulaire  Empty Re: automate cellulaire

Message par nikitouzz Dim 27 Mai - 8:05

c'est le - mais celui des négatif pas celui du moins, cependant, ton optimisation ne marche pas kindermoumoute, elle provoque un ram-clared
nikitouzz
nikitouzz
Platinum 1
Platinum 1

Sexe : Masculin
Age : 28
Messages : 1834
Date d'inscription : 16/01/2011
Points Forum : 7
Points Concours : 6
Langages :
  • - TI-Basic Z80
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
  • - TI-Basic 68K
  • - TI-Basic Nspire
Calculatrices :
  • - TI-73
  • - TI-76.fr
  • - TI-82 Stats.fr
  • - TI-83+
  • - TI-84+
  • - TI-92
  • - TI-Nspire
  • - TI-Nspire CX

TI-84+ SE


Revenir en haut Aller en bas

automate cellulaire  Empty Re: automate cellulaire

Message par nikitouzz Dim 27 Mai - 9:25

cinquieme optimisation : j'ai trouver une astuce mais je me suis beaucoup embrouiller j'ai pas eu encore le temps de le tester

Code:

:Lbl MAA
:‾1
:For(L-1)
:!if {+1→Z+L1*12+L6+8*(Z+L2→J)}^^re(Z^4)

:{J}++
:Else
:!if {{+1→Z+L1}+1*12+L6+8*({Z+L2}-1→J)}^^re(Z^4)
:rand^2??‾1,1
:Else!If -1
:1
:Else
:‾1
:End
:+{I}→{I}
:{{I}*12+L6+8*{J}}^^re(Z^4)??{J}++
:End
:Z
:End
:Return


pardon pour le double post je ne sais pas ce qu'il c'est passer
nikitouzz
nikitouzz
Platinum 1
Platinum 1

Sexe : Masculin
Age : 28
Messages : 1834
Date d'inscription : 16/01/2011
Points Forum : 7
Points Concours : 6
Langages :
  • - TI-Basic Z80
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
  • - TI-Basic 68K
  • - TI-Basic Nspire
Calculatrices :
  • - TI-73
  • - TI-76.fr
  • - TI-82 Stats.fr
  • - TI-83+
  • - TI-84+
  • - TI-92
  • - TI-Nspire
  • - TI-Nspire CX

TI-84+ SE


Revenir en haut Aller en bas

automate cellulaire  Empty Re: automate cellulaire

Message par kindermoumoute Dim 27 Mai - 14:17

Le code bug, mais il restait bien plus optimisé car la commande pxt-test est beaucoup plus optimisée que le getbit. Le problème venait de la boucle. En effet une boucle faite avec une variable dedans modifie HL, donc ça ne marchait pas. Solution :
Code:

:0→Z
:For(L-1)
:!If Pxl-Test({Z+++L<sub>1</sub>→I},{Z+L<sub>2</sub>→J}
:{J}++
:Else
:!If Pxl-Test({I}+1,{J})*2+Pxl-Test({I}-1,{J}
:rand^2??‾1,1
:Else!If -1
:1
:Else
:‾1
:End
:+{I}→{I}
:Pxl-Test({I},{J})??{J}++
:End
:End
:Return

Et voilà, ça marche pour moi sans soucis. Après il ne faut pas oublier que de code ne gère pas le bas de l'écran, il faudra donc faire un sol pour que cela marche.
kindermoumoute
kindermoumoute
Or 4
Or 4

Sexe : Masculin
Age : 30
Messages : 797
Date d'inscription : 07/10/2010
Points Forum : 21
Points Concours : 1
Langages :
  • - TI-Basic Z80
  • - Axe Parser
Calculatrices :
  • - TI-83+

TI-83+


Revenir en haut Aller en bas

automate cellulaire  Empty Re: automate cellulaire

Message par nikitouzz Dim 27 Mai - 15:20

moi sa ne marche pas du tout ?? ram-clared a chaque fois ^^ je vais reinstaller l'os
nikitouzz
nikitouzz
Platinum 1
Platinum 1

Sexe : Masculin
Age : 28
Messages : 1834
Date d'inscription : 16/01/2011
Points Forum : 7
Points Concours : 6
Langages :
  • - TI-Basic Z80
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
  • - TI-Basic 68K
  • - TI-Basic Nspire
Calculatrices :
  • - TI-73
  • - TI-76.fr
  • - TI-82 Stats.fr
  • - TI-83+
  • - TI-84+
  • - TI-92
  • - TI-Nspire
  • - TI-Nspire CX

TI-84+ SE


Revenir en haut Aller en bas

automate cellulaire  Empty Re: automate cellulaire

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum