IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Qui connait qui ?


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 37
    Par défaut Qui connait qui ?
    Bonjour,

    Dans mes différents développement, je me suis plusieurs fois retrouvé dans la situation où j'ai un univers et des éléments dans cet univers. L'univers connait les positions des éléments qui le compose, et pour chaque éléments, je me retrouve à lui donner sa position dans l'univers, ce que je trouve super moche, puisqu'il faut qu'à chaque déplacement d'un élément, je mettes à jour sa position stockée dans l'univers, ainsi que sa position sur lui-même.

    Sauriez-vous comment rendre ça un peu plus élégant ?

  2. #2
    Membre Expert
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Par défaut
    Tu peux être plus spécifique dans ta question ?
    Sinon je pourrais te répondre que le tableau de Dimitri Mendeliev donne à chaque élément chimique une position tout à fait satisfaisante.

  3. #3
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 371
    Par défaut
    Si l'univers ne fait que contenir les éléments, un simple tableau d'éléments suffit. Ton univers pourra connaitre la position de chaque élément via quelque chose du genre elements[i]->position

    Ma réponse étant limite triviale, je me dis que ce n'était pas celle là que tu attendais. Qu'est-ce qui manque dans ma réponse et dont tu aurais besoin ?

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Hum... d'après ce que j'ai compris du PO, la question serait:

    vaut il mieux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    element {
      position  p;
      data d;
    }
    univers = new element[...];
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    element {
      data d;
    }
    univers = new map<position,element>;
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 37
    Par défaut
    En fait, si je prends l'exemple d'un plateau de jeu, je donne au plateau un tableau a 2 dimensions où je mets des pions. Donc, dans ce cas là, mon plateau connais la position des pions (utile pour savoir qui est le voisins). Maintenant si je mets un évènement sur mes pions et que la position doit être connue(genre déplacement), c'est plus rapide si le pion connait sa position, plutôt qu'il l'a demande au plateau qui doit cherché où il se trouve pour le déplacer.

    Et même si mon évènement est au niveau du plateau, il va devoir cherché quel pion a déclenché cet évènement.

    Alors oui effectivement, une hash map pourrait être utilisée pour réduire le temps de recherche de l'élément dans le plateau.

    edit: fôtes.

  6. #6
    Membre éprouvé
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Par défaut
    Je ne suis pas sur d'avoir bien saisi la question. Je crois que c'est une question de point de vue.

    Soit c'est ton plateau qui "agit", soit c'est les pions.
    Je m'explique. Si c'est le plateau qui agit, ton plateau est un gros tableau à double entrée, et à la position x, y, tu as un objet "pion". Cet objet ne connait pas sa position, c'est du ressort du plateau. L'objet sait juste ce qui ne dépend que de lui comme par exemple sa couleur.
    Si tu veux avancer un pion, c'est par le plateau que tu passes. Par exemple,
    plateau->deplace_pion(pos_x_depart, pos_y_depart, pos_x_arrive, pos_y_arrive).
    (Tu peux remplacer la position d'arrivée par un déplacement, genre +3 en X et -2 en Y, c'est éventuellement plus agréable à l'utilisation).
    Tu dis à tel pion d'aller à telle case, et le plateau fait au passage les vérifications d'usage, genre, est-ce qu'il y a déjà un pion à l'endroit visé, est-ce que le mouvement est régulier, est-ce qu'il y a bien un pion au coordonnée indiquée... ?

    L'autre solution, c'est le "pion" qui agit. Et là, on se retrouve un peu dans l'idée d'acteur/agent. Le pion va emettre un message "je veux aller a tel endroit" et les autres vont lui répondre oui ou non. S'il n'y a que des "oui" en réponse, le pion se mets à jour.

    Bon, la première implémentation est clairement la plus facile ^^

    Dans tous les cas, avoir la position de la même chose stockée à deux endroits, c'est mal car source d'incoherence. Le seul cas ou c'est tolérable, c'est si tu as de gros problèmes de perf et que la duplication te fait gagner beaucoup de temps, mais à mon sens, c'est à ne jamais faire de façon préventive.

Discussions similaires

  1. Gestion de contacts et relation clients (Qui connait qui?)
    Par fayouu dans le forum Modélisation
    Réponses: 8
    Dernier message: 25/10/2012, 18h04
  2. qui connait sqlite ?
    Par Emmanuel Lecoester dans le forum SQLite
    Réponses: 23
    Dernier message: 19/02/2010, 13h44
  3. [XUL] qui connait ? qui utilise ?
    Par gorgonite dans le forum Autres langages pour le Web
    Réponses: 6
    Dernier message: 15/06/2006, 09h41
  4. qui connait suipack?
    Par judor31 dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 31/03/2006, 11h43
  5. Qui connait Putty ?
    Par viny dans le forum Applications et environnements graphiques
    Réponses: 7
    Dernier message: 26/03/2004, 23h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo