Пример #1
0
 public static String normalizePath(String path) {
   if (!path.contains("./")) {
     return path;
   }
   boolean absolute = path.startsWith("/");
   String[] elements = path.split(Repository.SEPARATOR);
   LinkedList<String> list = new LinkedList<String>();
   for (String e : elements) {
     if ("..".equals(e)) {
       if (list.isEmpty() || "..".equals(list.getLast())) {
         list.add(e);
       } else {
         list.removeLast();
       }
     } else if (!".".equals(e) && e.length() > 0) {
       list.add(e);
     }
   }
   StringBuilder sb = new StringBuilder(path.length());
   if (absolute) {
     sb.append("/");
   }
   int count = 0, last = list.size() - 1;
   for (String e : list) {
     sb.append(e);
     if (count++ < last) sb.append("/");
   }
   return sb.toString();
 }
Пример #2
0
  public static float calcFitness(int[] particle, LinkedList<PatternList> l) throws IOException {
    PatternList pl1 = l.getFirst();
    PatternList pl2 = l.getLast();

    float fit;

    int[] pagesArray = pl1.getPageArray();
    float f1 = 0;
    float f2 = 0;

    for (int i = 0; i < particle.length - 2 + 1; i++) {
      int[] duo = new int[2];
      for (int j = 0; j < 2; j++) {
        //                System.out.println("\t\t"+this.dimensions[i + j]);
        duo[j] = pagesArray[particle[i + j]];
      }
      Pattern current = pl2.seek(duo);
      if (current != null) {
        f2 += (current.getFreq() * (1000 * current.getConfidence()));
      } else if (current == null) {
        //                System.out.print("\t\t duo : ");
        //                new Pattern(duo).print();
        fit = (float) -6.0;
        return fit;
      }
    }

    f2 = (f2 / ((particle.length - 2 + 1) * pl2.getTotalFreq() * pl2.getDistribution()));

    for (int i = 0; i < particle.length; i++) {

      Pattern current = pl1.seek(particle[i]);
      if (current == null) {
        fit = (float) 0.0;
        return (float) -6.0;
      } else {
        f1 += current.getFreq();
      }
    }

    f1 = (f1 / (particle.length * pl1.getTotalFreq() * pl1.getDistribution()));

    // System.out.println("\t\t\tf2 freq : "+ f2);

    return fit = 1000 * ((1 * f1 + 3 * f2) / 4);
    // fitness da partícula 8,8,8 é :0.468331
    // fitness da partícula 1,1,1 é :0.35263315
    // fitness da partícula 6,6,7 é :0.050931655
    // fitness da partícula 14,13,16 é :3.627465E-4
    // fitness da partícula 8,8,8 é :0.039101
    // fitness da partícula 1,1,1 é :0.029390793
    // fitness da partícula 6,6,7 é :0.0042792875
    // fitness da partícula 14,13,16 é :1.3224661E-4

  }
Пример #3
0
  /**
   * On ajoute trois tuile bonus par province
   *
   * @param hprovince hashset de toutes les provinces
   * @param lltb LinkedList des tuiles bonus (utile pour chopper la dernière tuile de la pile)
   */
  public void ajoutTroisTuileBonus(Set<Province> hprovince, LinkedList<TuileBonus> lltb) {
    for (Province p : hprovince) {
      LinkedList<TuileBonus> llp = new LinkedList<TuileBonus>();
      int i = 0;

      while (i < 3) {
        llp.add(lltb.getLast());
        lltb.removeLast();
        i++;
      }
      p.setLltuilebonus(llp);
    }
  }
Пример #4
0
  /**
   * Distribution de 2 cartes Troupes à chaque joueurs On retire les deux dernières cartes du paquet
   * de troupes
   *
   * @param hjoueur liste des joueurs
   * @param llct paquet des cartes troupes qui sert à donner des cartes aux joueurs
   */
  public void distributionCartesDepart(Set<Joueur> hjoueur, LinkedList<CarteTroupe> llct) {
    for (Joueur j : hjoueur) {
      // Distibution des titres aléatoirement
      distributionTitreDepart(hjoueur, hashTitre);

      int i = 0;
      // On prend la liste de carte troupe du joueur
      ArrayList<CarteTroupe> alct = j.getAlctroupe();

      // On ne prend que deux cartes troupes (à chaque fois la dernière du paquet)
      while (i < 2) {
        alct.add(llct.getLast());
        // On supprime la carte pour ne plus l'avoir dans le paquet
        llct.removeLast();
        i++;
      }
    }
  }