besoin d'aide hollywood
12 sujets de 1 à 12 (sur un total de 12)
-
Salut,
J’aimerai savoir comment faire pour inverser l’index d’une table Hollywood? Suis-je obliger de créer une deuxième table et de faire une boucle pour récupérer de la dernière a la première ou alors il y a une solution plus simple?
Visiblement la fonction sort() mais je na sais pas trop comment faire je cherche aussi des livre en français si quelqu’un a des noms?
Merci d’avance
http://wxlua.developpez.com/tutoriels/lua/general/cours-complet/
Pourtant ici c’est en fr
De l'Amiga et bien d'autres ici:
http://tutosproc.blogspot.fr/
Ici sur gg books un livre en fr
De l'Amiga et bien d'autres ici:
http://tutosproc.blogspot.fr/
Salut,
je n’ai jamais testé Hollywood, mais si c’est du Lua, tu n’as effectivement pas de fonction intégrée qui inverse l’ordre d’un tableau.
Tu as, grosso modo, deux solutions :
1/ tu fais une copie de ton tableau et tu recopie chaque valeur en ordre inverse
2/ tu inverse l’index à chaque fois que tu veux accéder à ton tableau.Dans le premier cas, une simple boucle for suffit.
Dans le deuxième cas, tu as juste besoin de connaitre la taille de ton tableau et de faire une soustraction, genre si ‘i’ est ton index :mon_tableau[#mon_tableau – i]
Pour choisir une méthode plutôt qu’une autre, tu dois déterminer s’il est plus intéressant de retourner ton tableau complet VS de faire une soustraction à chaque nouvel accès.
Si ton tableau fait 10.000 entrées et que tu dois y accéder seulement 5 fois, la méthode 2 est plus adaptée.
Si ton tableau fait 30 entrées, mais que tu dois y accéder 3000 fois, la méthode 1 est sans doute préférable.
En tout cas, c’est comme ça que j’essayerai de résoudre ce problème 🙂
Il n’existe de toute façon pas de solution magique pour retourner le contenu d’un bloc de mémoire sans avoir un minimum de remue-ménage.Pour finir, la fonction sort() peut trier ton tableau selon n’importe quel critère pertinent, si tu lui passes en paramètre le bout de code qui permet de départager deux entrées successives.
Bon courage 🙂
(et tu peux éventuellement copier-coller ton bout de code ici, ça pourra sans doute servir à un autre Amigaiste qui tombe sur la même question 🙂
C’est toute la puissance des langages comme le Lua. Les fonctions sont des « first class values », c’est à dire qu’elles bénéficient des mêmes droits que des valeurs immediates comme des nombres ou des chaines de caractère.
Du coup, tu peux passer une fonction en parametre d’une autre fonction.
Dans ton exemple c’est ce que tu fais, tu passes la fonction de comparaison de deux entrées consécutives (de ton tableau) à la fonction de tri.
‘a’ et ‘b’ correspondent à deux entrées du tableau, puisque la fonction de tri va comparer chaque valeur de ton tableau, 2 par 2.
Pour trier un tableau Lua par index à l’aide de la fonction sort(), j’avoue ne pas savoir si c’est faisable. Moi je ferai une boucle for, ça prends 3 lignes et on n’en parle plus :p
J’ai trouvé cette fonction lua que j’ai adapté à hollywood et je pense que c’est la meilleur elle inverse le premier avec le dernier, le deuxième avec l’avant dernier, etc… jusqu’au milieu de la table
Function ReverseItems(T)
local i, j = 0, ListItems(T)-1
While i < j
T[ i], T[ j] = T[ j], T[ i]
i = i + 1
j = j – 1
WendEndFunction
12 sujets de 1 à 12 (sur un total de 12)
- Vous devez être connecté pour répondre à ce sujet.
› Forums › AmigaOS, MorphOS et AROS › Développement › besoin d'aide hollywood