Référence du fichier /tmp/galet/src/regle2.cpp

contient la règle 2 Plus de détails...

#include "regles.h"

Graphe des dépendances par inclusion de regle2.cpp:

Aller au code source de ce fichier.

Fonctions

res_regle regle_2 (const entier_type &N, const GRAPHE &G, graph_list &L)
 On teste la regle n°2 (déplacement des galets). Puis on essaie de le déplacer, si l'on peut. On n'a pas besoin qu'un fils soit unique si le père est copié. On se sert de GRAPHE::bouge. Le noeud est supposé déterminé. On met le graphe à jour.
res_regle regle_2 (const entier_type &N, GRAPHE &G)
 On teste la regle n°2 (déplacement des galets). Puis on essaie de le déplacer, si l'on peut. On ne peut déplacer un galet si :
  • il reste plus d'un fils non calculé
  • il reste des fils avec galets
  • le galet est radin dans l'opération ou il est intrinsèquement un trou noir.
  • l'opération est destructrice On se sert de GRAPHE::bouge. Le noeud est supposé déterminé. On met le graphe à jour.


Description détaillée

contient la règle 2

Auteur:
Brice Boyer
Date:
17 juillet 2008
Avertissement:
On fait descendre le premier venu. Si l'on veut toutes les sols, il faut tester si un autre parent veut bien descendre, auquel cas, on renvoie autant de graphes. AArgh... ça complique (CreuseProfondUnique et CreuseProfondNonUnique)

Définition dans le fichier regle2.cpp.


Documentation des fonctions

res_regle regle_2 ( const entier_type N,
GRAPHE G 
)

On teste la regle n°2 (déplacement des galets). Puis on essaie de le déplacer, si l'on peut. On ne peut déplacer un galet si :

  • il reste plus d'un fils non calculé
  • il reste des fils avec galets
  • le galet est radin dans l'opération ou il est intrinsèquement un trou noir.
  • l'opération est destructrice On se sert de GRAPHE::bouge. Le noeud est supposé déterminé. On met le graphe à jour.

Paramètres:
N 
G 
Renvoie:
un couple de bool selon ce qu'on a pu (oupa) faire.

Définition à la ligne 77 du fichier regle2.cpp.

Références _debog, _DEBUG1, _DEBUG2, _resul, cinfo, GRAPHE::nom_de(), et GRAPHE::on_essaie_de_deplacer().

00077                                                         { /*{{{*/
00078    cinfo(_DEBUG2,true,3,_debog) << "regle_2 : Règle 2 en " << (G.nom_de(N)) << " :\n";
00079    res_regle fait ;                                            // on voit si on peut déplacer..
00080    fait = G.on_essaie_de_deplacer ( N ) ;                   // ou on n'a pas le choix, on veut juste vers une personne
00081 
00082    //ctrace(_DEBUG2,fait.first,G);
00083 
00084    cinfo(_DEBUG1,fait.first,3,_resul)  << "regle_2 : noeud "     << G.nom_de ( N ) << " calculé et déplacé.\n";
00085    cinfo(_DEBUG2,!fait.first,3,_resul) << "regle_2 : au noeud "  << G.nom_de ( N ) << " non appliquée.\n";
00086    return fait;                                                // et on renvoie ce qu'on a fait !
00087 } /*}}}*/

Voici le graphe d'appel pour cette fonction :