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(); }
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 }
/** * 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); } }
/** * 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++; } } }