Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Sapeur-Goblin Floodeur prématuré
Inscrit le: 14 Oct 2009 Messages: 719 Sujets: 40 Spécialité en worldedit: Les bugs Médailles: 1 (En savoir plus...)
|
Posté le: 04/04/12 16:48 Sujet du message: |
|
|
Vaut-il mieux que je laisse la fonction comme ça ou faire un truc comme je vais l'expliquer, qui permet de gagner en efficacité, mais avec une limite de regen/degen :
Je crée une TableArray array que j'utilise de cette manière :
Jass: | globals
private TableArray t[X]
endglobals
function AddUnitRegeneration takes unit u, unit c, integer id, real degen returns nothing
local integer i = GetUnitUserData(c)
if t[i] == 0 then //Si la table n'est pas créée, on la crée
set t[i] = TableArray.create()
endif
if t[i].has[id][0] then //Si l'unité a déjà des dégénérations
set t[i].integer[id][0] = t[i].integer[id][0] + 1 //Nombre de degen = Nombre de degen + 1
set t[i].real[id][t[i].integer[id][0]] = degeneration.create() //On stock dans le prochain emplacement vide la struct
else //Sinon on initialise l'emplacement 0 et la struct
set t[i].integer[id][0] = 1
set t[i].real[id][1] = degeneration.create()
endif
//...
endfunction |
Bon, ça réduit la complexité pour toutes les fonctions et la fonction HasUnitRegeneration aurait une complexité de O(1). Mais pour les autres la complexité serait de O(n) avec n = le nombre de degen sur l'unité et non le nombre de degen total comme ça l'était. Le problème c'est qu'il y aurait une limitation de dégénération par unité (que l'on pourrait paramétrer). Bon, c'est pas un gros problème puisque ça dépassera jamais 100 mais bon... _________________
|
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 04/04/12 22:31 Sujet du message: |
|
|
Je n'ai jamais utilisé de Table 2D, si vraiment j'en ai besoin j'utilise simplement directement une hashtable.
Cela dit c'est vrai que la complexité a été réduite, mais ca me fait penser à du code spaghetti.
M'enfin j'ai vraiment la flemme de me pencher dessus plus que cela. _________________
|
|
Revenir en haut |
|
|
Sapeur-Goblin Floodeur prématuré
Inscrit le: 14 Oct 2009 Messages: 719 Sujets: 40 Spécialité en worldedit: Les bugs Médailles: 1 (En savoir plus...)
|
|
Revenir en haut |
|
|
|