Ruzzle

Bonjour,

je doit crée une application du jeu "ruzzle "
et je veut faire ca avec un arbre n air

j'ai fait ca



public class arbre {

private char pere ;
ArrayList <arbre> fils ;

public arbre(char pere)
{
this.pere=pere; // ma racine qui va etre vide
this.fils= new ArrayList<arbre>(); // mes arbres

}

public arbre remplireArbre(String nom) // je vais faire entres un string que je doit decouper en lettres
{
// char c = decoupage(nom);
int i=0;
while(i<nom.length())
{
char c = nom.charAt(i);

}

}



et je sais pas comment faire pour remplir mon arbre avec le dictionnaire de mots 'dico.txt"

merci

1 réponse

  1. Modérateur
    Bonjour,

    Il te manque un argument à ton arbre : la valeur des noeuds, ce n'est pas au père de porter cette information.

    public class Arbre<E> {
        private Arbre<E> pere;
        private Collection<Arbre<E>> fils;
        private E valeur;
    }
    1. bonsoir ,
      merci pour ta repense

      s'il te plait E c'est les lettres que je dois inserer dans mon arbre n air ??

      et pour mon constructeur ?

      merci
    2. Modérateur
      @infokabNon, E c'est un type paramétré, c'est pour avoir une structure générique.

      Par exemple dans ton code, tu as mis ArrayList<arbre>, c'est une utilisation spécifique de ArrayList<E> où E est un arbre.

      Dans ton cas tu pourrais avoir un Arbre<String> par exemple, où chaque valeur est un String.
    3. a d'accord merci j'ai jamais utiliser cette structure

      et pour le constructeur comment je doit le declarer ?

      moi je doit remplir mon arbre avec des lettres

      merci
    4. Modérateur
      @infokab"et pour le constructeur comment je doit le declarer ?"
      Comme avant, sauf que tu remplaces tes valeurs par E.

      Exemple :
      public Arbre(E valeur)


      Remarque : je pense que ce constructeur n'est pas pertinent, il serait sûrement utile d'avoir deux classes : Arbre qui est la structure concrète utilisée et Noeud qui compose l'arbre. L'arbre contient le nœud racine : celui qui n'a aucun père et chaque nœud référence son père, sa valeur et ses fils (manipuler directement le nœud étant interdit).

      "je doit remplir mon arbre avec des lettres"
      Si ton arbre fonctionne avec des types paramétré, il fonctionnera avec des lettres, mais aussi avec n'importe quelle autre type de données.

      Exemples :

      Arbre<String> arbre1 = new Arbre<String>("valeur");
      Arbre<Integer> arbre2 = new Arbre<Integer>(42);
    5. @KXbonsoir

      public class Arbre <E> {

      private Arbre <E> pere ;
      private Collection<Arbre<E>> fils;
      private E valeur;

      //la valeur des noeuds, ce n'est pas au père
      //de porter cette information.

      public Arbre(Arbre pere,E valeur)
      {
      this.pere=pere; // ma racine qui va etre vide
      this.fils= new ArrayList <Arbre <E>>(); // mes arbres
      this.valeur=valeur;
      }


      c'est bon c'est ca ??

      merci