π
<-

Optimisation programme TI-Basic

Optimisation programme TI-Basic

Unread postby Larwive » 22 Nov 2019, 19:06

Bonjour/Bonsoir,
j'ai créé un labyrinthe sur ma TI-83 Premium CE mais je trouve que c'est très lent.

Le principe du labyrinthe : On contrôle un "+" qui commence en haut à gauche et on doit le faire rejoindre le "=" en bas à droite.
Les murs (ou plutôt téléporteurs) sont invisibles jusqu'à qu'on se cogne contre eux. On est alors téléporté au tout début.

Voici le code :
Code: Select all
0→K
EffÉcran
Output(1,1,"VERSION 1.01
Repeat K=105
getKey→K
End
EffÉcran
1→X:1→Y
1→A:1→B
Output(10,26,"=
Repeat (X=26 et Y=10) ou K=45
Output(A,B,"
Output(Y,X,"+
Y→A:X→B
getKey→K
X-(K=24)+(K=26)→X
Y-(K=25)+(K=34)→Y
If X=0:1→X
If X=27:26→X
If Y=0:1→Y
If Y=11:10→Y
If (Y=1 et (X=7 ou X=9 ou X=17)) ou (Y=2 et (X=5 ou X=7 ou X=9 ou X=11 ou X=14 ou X=16 ou X=18 ou X=19 ou X=20 ou X=23 ou X=25)) ou (Y=3 et (X=1 ou X=3 ou X=5 ou X=9 ou X=12 ou X=19 ou X=22)) ou (Y=4 et (X=5 ou X=6 ou X=8 ou X=11 ou X=16 ou X=23 ou X=24 ou X=25)) ou (Y=5 et (X=1 ou X=3 ou X=10 ou X=13 ou X=15 ou X=16 ou X=17 ou X=20 ou X=21 ou X=24)) ou (Y=6 et (X=1 ou X=4 ou X=6 ou X=10 ou X=11 ou X=17 ou X=24 ou X=26)) ou (Y=7 et (X=3 ou X=4 ou X=8 ou X=11 ou X=13 ou X=17 ou X=19 ou X=20 ou X=24)) ou (Y=8 et (X=1 ou X=7 ou X=13 ou X=15 ou X=17 ou X=21)) ou (Y=9 et (X=2 ou X=3 ou X=4 ou X=9 ou X=11 ou X=13 ou X=17 ou X=18 ou X=21 ou X=22 ou X=23 ou X=24 ou X=25)) ou (Y=10 et (X=6 ou X=11 ou X=13 ou X=15 ou X=18 ou X=19 ou X=25))
Then:Output(Y,X,"*
1→X
1→Y
End
End
EffÉcran
If X=26 et Y=10
Disp "GAGNÉ !


Mais c'était pire qu'avant car les parenthèses avec les Y=... étaient développées.

Donc j'aimerai savoir où est-ce qu'on pourrait encore gagner du temps d'exécution.
Je dis que je ne dis rien, à part que mes programmes sont disponibles ici. Image

En mettant à profit mes pouvoirs de devin, sachant que j'ai écrit ma signature bien avant ta venue, ton pseudo est ClaudeBot [spider].:whistle:
User avatar
LarwiveProgrammeur
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 89.6%
 
Posts: 283
Images: 20
Joined: 25 Oct 2018, 17:41
Location: Chez moi
Gender: Male
Calculator(s):
MyCalcs profile
Class: Classe comme jamais.
GitHub: Larwive

Re: Optimisation programme TI-Basic

Unread postby Wistaro » 22 Nov 2019, 19:46

Je pense que tu pourrais améliorer ton algorithme, tout simplement.
Tes if en masse doivent beaucoup ralentir le programme, essaye de trouver une solution pour t'en passer.
Nouveau sur le site, ClaudeBot [spider] ? Avant de poster sur le chat et sur le forum, n'oublie pas de lire les règles. En cas de problème, tu peux m'envoyer un message, je réponds rapidement.

Liens utiles:
Image
Découvre mes programmes et mon site!
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 88.5%
 
Posts: 3188
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ingénieur en électronique
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

Re: Optimisation programme TI-Basic

Unread postby Larwive » 22 Nov 2019, 19:53

Mes If en masse... Tu veux dire les 5 If à la suite ou le gros If ?
Je dis que je ne dis rien, à part que mes programmes sont disponibles ici. Image

En mettant à profit mes pouvoirs de devin, sachant que j'ai écrit ma signature bien avant ta venue, ton pseudo est ClaudeBot [spider].:whistle:
User avatar
LarwiveProgrammeur
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 89.6%
 
Posts: 283
Images: 20
Joined: 25 Oct 2018, 17:41
Location: Chez moi
Gender: Male
Calculator(s):
MyCalcs profile
Class: Classe comme jamais.
GitHub: Larwive

Re: Optimisation programme TI-Basic

Unread postby Wistaro » 22 Nov 2019, 20:00

LePetitMage wrote:Mes If en masse... Tu veux dire les 5 If à la suite ou le gros If ?


Le gros if
Nouveau sur le site, ClaudeBot [spider] ? Avant de poster sur le chat et sur le forum, n'oublie pas de lire les règles. En cas de problème, tu peux m'envoyer un message, je réponds rapidement.

Liens utiles:
Image
Découvre mes programmes et mon site!
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 88.5%
 
Posts: 3188
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ingénieur en électronique
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

Re: Optimisation programme TI-Basic

Unread postby Larwive » 22 Nov 2019, 20:12

Du coup je ne vois pas de moyen de m'en passer.
Il faudra bien des If pour savoir si on se cogne contre un mur.
Je dis que je ne dis rien, à part que mes programmes sont disponibles ici. Image

En mettant à profit mes pouvoirs de devin, sachant que j'ai écrit ma signature bien avant ta venue, ton pseudo est ClaudeBot [spider].:whistle:
User avatar
LarwiveProgrammeur
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 89.6%
 
Posts: 283
Images: 20
Joined: 25 Oct 2018, 17:41
Location: Chez moi
Gender: Male
Calculator(s):
MyCalcs profile
Class: Classe comme jamais.
GitHub: Larwive

Re: Optimisation programme TI-Basic

Unread postby critor » 22 Nov 2019, 20:21

Projet intéressant. :)

Il faut réduire le nombre de lignes et le nombre de lignes compliquées dans la boucle.
Je vois que tu as utilisé une astuce pour les touches contrôlant X et Y. On peut également inclure le test des bornes sur la même ligne.

Et surtout, au lieu d'un énorme If on peut stocker ton labyrinthe sous forme de matrice (tableau de nombres).

Code: Select all
[[0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0][0,0,0,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,1,1,0,0,1,0,1,0][1,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0][0,0,0,0,1,1,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,1,1,0][1,0,1,0,0,0,0,0,0,1,0,0,1,0,1,1,1,0,0,1,1,0,0,1,0,0][1,0,0,1,0,1,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1][0,0,1,1,0,0,0,1,0,0,1,0,1,0,0,0,1,0,1,1,0,0,0,1,0,0][1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0][0,1,1,1,0,0,0,0,1,0,1,0,1,0,0,0,1,1,0,0,1,1,1,1,1,0][0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,0,0,1,1,0,0,0,0,0,1,0]]→[A]
0→K
EffÉcran
Output(1,1,"VERSION 1.01
Repeat getKey=105
End
EffÉcran
1→X:1→Y
1→A:1→B
Output(10,26,"=
Repeat (X=26 et Y=10) ou K=45
Output(A,B,"
Output(Y,X,"+
Y→A:X→B
getKey→K
max(1,min(26,X-(K=24)+(K=26→X
max(1,min(10,Y-(K=25)+(K=34→Y
If [A](Y,X
Then:Output(Y,X,"*
1→X
1→Y
End
End
EffÉcran
If X=26 et Y=10
Disp "GAGNÉ !
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 51.2%
 
Posts: 42225
Images: 16681
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Optimisation programme TI-Basic

Unread postby Larwive » 22 Nov 2019, 20:28

Donc les 1 dans la matrice correspondent aux emplacements où il y a un obstacle et les 0 là où il n'y en a pas.

Sinon, que teste la ligne
Code: Select all
If [A](Y,X
?

Anecdote : La version précédente de celle plus haut comptait 354 lignes et 85 If en tout.

La prochaine étape est de créer un labyrinthe avec des murs aléatoirement disposés.
Je dis que je ne dis rien, à part que mes programmes sont disponibles ici. Image

En mettant à profit mes pouvoirs de devin, sachant que j'ai écrit ma signature bien avant ta venue, ton pseudo est ClaudeBot [spider].:whistle:
User avatar
LarwiveProgrammeur
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 89.6%
 
Posts: 283
Images: 20
Joined: 25 Oct 2018, 17:41
Location: Chez moi
Gender: Male
Calculator(s):
MyCalcs profile
Class: Classe comme jamais.
GitHub: Larwive

Re: Optimisation programme TI-Basic

Unread postby critor » 22 Nov 2019, 20:35

LePetitMage wrote:Donc les 1 dans la matrice correspondent aux emplacements où il y a un obstacle et les 0 là où il n'y en a pas.

Oui, mais tu es libre de faire autrement. :)

LePetitMage wrote:Sinon, que teste la ligne
Code: Select all
If [A](Y,X
?

Ecrit comme ça, le test est vrai pour toute valeur non nulle, donc notamment pour les 1.

LePetitMage wrote:La prochaine étape est de créer un labyrinthe avec des murs aléatoirement disposés.

Ce qui est maintenant possible avec une matrice que tu peux faire remplir au programme comme tu veux. :)
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 51.2%
 
Posts: 42225
Images: 16681
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor


Return to TI-Basic

Who is online

Users browsing this forum: ClaudeBot [spider], Google [Bot] and 1 guest

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
932 utilisateurs:
>903 invités
>22 membres
>7 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)