Algorithme de détection de C3 et C4


Principe général de l'algorithme

...

La class Main de JBotSim devrait ressembler à ceci:

import io.jbotsim.core.Topology;
import io.jbotsim.core.Node;
import io.jbotsim.ui.JTopology;
import io.jbotsim.ui.JViewer;

public class Main {
  public static int n; // n = nombre de sommets

  public static void main(String[] args) {

    Topology T = new Topology(680,540); // fenêtre de w x h pixels
    T.setDefaultNodeModel(DetectC34.class); // algo des sommets = ColoringNode
    String s = T.getFileManager().read("grille-2x7"); // lecture du fichier
    T.getSerializer().importFromString(T,s); // initialisation du graphe
    T.shuffleNodeIds(); // permutation des IDs dans [0,n[

    // initialisation de n
    n = T.getNodes().size();

    // fixe n pour tous les sommets
    DetectC34.n = n;

    JTopology J = new JTopology(T);
    new JViewer(J);  // dessine la topologie
    T.start();       // démarre l'aglorithme
    T.pause();       // mode pas-à-pas
  }
}

...

import io.jbotsim.core.Color;
import io.jbotsim.core.Node;

public class DetectC34 extends Node {

  public static int n; // constante commune à tous les sommets

  @Override // au départ
  public void onStart() {
    setColor(Color.getColorAt(getID())); // couleur = ID
    ...
    // ne pas oublier d'envoyer un premier message
  }

  @Override // à chaque top horloge
  public void onClock() {
    ...
  }

}

...