Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1271 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [java][Algo] Tableau 2 dimensions (dynamique?)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[java][Algo] Tableau 2 dimensions (dynamique?)

n°785222
Suri
Darksurious
Posté le 02-07-2004 à 18:56:57  profilanswer
 

j'ai un objet A. cet objet A peut avoir 4 voisins (haut bas gauche droite)
 
J'aimerai a partir de A, pouvoir avoir B, son voisin du haut de facon aisée (genre "position en x" + 1)
 
je pense a un tableau a deux dimensions en fait, et pouvoir me balader de case en case. Ceci dit, je cree dynamiquement les voisins en fct de si j'ai besoin d'aller les voir... par defaut, ya pas de voisin, mais si je dis "j'vais en haut", faut que ca cree le voisin du haut et que ca se deplace (tain j'explique trop mal)
du coup si je demarre ds mon tableau en 0,0 et que je monte, je passe en -1,0.. et mm enfin voila (je sais pas trop si c permis en java en fait)
 
le tout pour savoir si (a) et voisin de (d) si je fais le chemin suivant: abcd: (a la creation de a, il n'y a rien, je sais pas que d sera son voisin plus tard)
 


0- 0 - 0 -0
   |   |
0-(c)-(b)-0
   |   |
0-(d)-(a)-0
   |   |
0- 0 - 0 -0


 
jpeux passer en negatif mes indices de tableau? Y a t'il un autre moyen moins "degueu" (totalement different peu importe pour gerer les voisin)
merci


---------------
Suri.morkitu.org : Balades au coeur de la ville...
mood
Publicité
Posté le 02-07-2004 à 18:56:57  profilanswer
 

n°785244
red factio​n
Posté le 02-07-2004 à 19:42:55  profilanswer
 

non tu peut pas, l'acces a un element se fait directement par calcul de sont adresse en memoire donc si tu fait ca le programme va planter
 
moi je voit 2 solutions :
 
 
- garder le systeme du tableau et faire tes propres accesseurs a ce tableau qui s'arrangent pour toujours te retourner le bon element genre elem.getLeft()  
 
- soit tu lies les differents elements entre eux un peu comme dans une liste chainee :
 

Code :
  1. class Element{
  2. Element *up;
  3. Element *down;
  4. Element *right;
  5. Element *left;
  6. ...
  7. }


mais ca risque peut etre detre lourd a gerer si pratiquement tout les objets ont un voisin, le tableau a deux dimension vaut le coup detre utilise
 
peut etre quil existe des objets plus appropries pour faire ca directement en java mais la je c pas ten dire +


Message édité par red faction le 02-07-2004 à 19:46:24
n°785246
Suri
Darksurious
Posté le 02-07-2004 à 19:48:00  profilanswer
 

oui mais le pb en fait c'est que a un moment il va me manquer des liens.... (exemple ci dessus, si je construis (a), (b), (c) puis (d), je sais que (b) et lié à (a) et (c), que (c) est lié a (b) et (d), mais j'ai aucune idée que (d) et lié à (a) et vice versa... :/
 
(edit: en admettant que le constructeur d'un elem prenne sa provenance en argument, et qu'il sauve la destination avant de se deplacer)


Message édité par Suri le 02-07-2004 à 19:50:17

---------------
Suri.morkitu.org : Balades au coeur de la ville...
n°785249
red factio​n
Posté le 02-07-2004 à 19:51:16  profilanswer
 

tu met le pointeur a nul au depart puis basta  
 
apres tu lie t elements  
 
a.setLeft(d);


Message édité par red faction le 02-07-2004 à 19:54:21
n°785250
Suri
Darksurious
Posté le 02-07-2004 à 19:52:15  profilanswer
 

red faction a écrit :

tu met le pointeur a nul au depart puis basta
 
apres tu lie t elements
 
a.setLeft(d);


je vois pas comment tu sais que (d) est a coté de (a)...
 
 
(a moins de faire un gros traitement une fois que tout est construit mais je voudrais éviter [:itm])


Message édité par Suri le 02-07-2004 à 19:52:57

---------------
Suri.morkitu.org : Balades au coeur de la ville...
n°785261
benou
Posté le 02-07-2004 à 20:12:40  profilanswer
 

Y a aussi la solution de la Map : clef = 2 Integer, value = ton élément ...
 
faut voir les perfs du machin ...
 
 
A la rigueur si le parcours d'éléments en éléments doit être rapide, tu peux en plus gérer les voisins à la façon dont le proposait redFaction (avec les '*' en moins, on est pas en C :o)


Message édité par benou le 02-07-2004 à 20:13:42

---------------
ma vie, mon oeuvre - HomePlayer
n°785268
Suri
Darksurious
Posté le 02-07-2004 à 20:17:08  profilanswer
 

si j'avais une matrice ca serait au tres grand max une matrice 16*9... jvais jeter un oeil a la map alors thx


---------------
Suri.morkitu.org : Balades au coeur de la ville...
n°785278
benou
Posté le 02-07-2004 à 20:32:37  profilanswer
 

suri a écrit :

si j'avais une matrice ca serait au tres grand max une matrice 16*9... jvais jeter un oeil a la map alors thx


si tu te sers d'une hashmap, teste les perfs avec différentes valeurs pour le initialCapacity. Plus ce sera grand, plus ca perndra de place mais plus la recherche devrais être rapide ...
 
fait aussi gaffe au codage du hashcode de l'objet qui te servira comme clef ...


---------------
ma vie, mon oeuvre - HomePlayer

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [java][Algo] Tableau 2 dimensions (dynamique?)

 

Sujets relatifs
[Oracle/PL-SQL] Passer un tableau en paramètre d'une procedure stockéeApplet Java, lire un fichier .txt [java.policy&security access denied]
[VBA] Insérer numéro de page dans tableau [RESOLU][PHP] Htaccess dynamique ??
Socket et Java[XSL] activation de certains rangs de mon tableau par un type radio
[java] NoClassDefFoundError au lancement d'un JarPb focus sur le premier champ texte d'une variable de type tableau
Comment reconstruire une image bitmap a partir d'un tableau?JAVA : Erreur avec 2 requêtes imbriquées :'-|
Plus de sujets relatifs à : [java][Algo] Tableau 2 dimensions (dynamique?)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR