Advertisement
KennedyOliveira

Untitled

Mar 3rd, 2015
330
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.23 KB | None | 0 0
  1. package teste;
  2.  
  3. import org.paukov.combinatorics.Factory;
  4. import org.paukov.combinatorics.Generator;
  5. import org.paukov.combinatorics.ICombinatoricsVector;
  6.  
  7. import java.util.*;
  8.  
  9. public class Tester
  10. {
  11.  
  12.   public Trip makeTrip(Location start, Location end)
  13.   {
  14.     Trip trip = new Trip();
  15.     trip.setStart(start);
  16.     trip.setEnd(end);
  17.     return trip;
  18.   }
  19.  
  20.   public static void main(String[] args)
  21.   {
  22.     Tester tester = new Tester();
  23.  
  24.     ArrayList<Location> locations = new ArrayList<>();
  25.  
  26.     locations.add(new Location("A", "A"));
  27.     locations.add(new Location("B", "B"));
  28.     locations.add(new Location("C", "C"));
  29.     locations.add(new Location("D", "D"));
  30.     locations.add(new Location("E", "E"));
  31.     locations.add(new Location("F", "F"));
  32.     locations.add(new Location("G", "G"));
  33.     locations.add(new Location("H", "H"));
  34.     locations.add(new Location("I", "I"));
  35.     locations.add(new Location("J", "J"));
  36.     locations.add(new Location("K", "K"));
  37.     locations.add(new Location("L", "L"));
  38.     locations.add(new Location("M", "M"));
  39.     locations.add(new Location("N", "N"));
  40.     locations.add(new Location("O", "O"));
  41.     locations.add(new Location("P", "P"));
  42.     locations.add(new Location("Q", "Q"));
  43.     locations.add(new Location("R", "R"));
  44.     locations.add(new Location("S", "S"));
  45.     locations.add(new Location("T", "T"));
  46.  
  47.     int i = 0;
  48.  
  49.     Random random = new Random();
  50.  
  51.     ArrayList<Trip> trips = new ArrayList<>();
  52.  
  53.     while (i++ < 54)
  54.     {
  55.       trips.add(tester.makeTrip(locations.get(random.nextInt(locations.size())), locations.get(random.nextInt(locations.size()))));
  56.     }
  57.  
  58.     System.out.println("Trips:");
  59.     trips.forEach(System.out::println);
  60.  
  61.     final Location start = trips.get(random.nextInt(trips.size())).getStart();
  62.  
  63.     System.out.println("\nLooking for start: " + start);
  64.     System.out.println();
  65.  
  66.     final Set<Trip> allTrips = new HashSet<>(trips);
  67.  
  68.     List<List<Trip>> possibleCombinations = new ArrayList<>();
  69.  
  70.     for (int j = 0; j < trips.size(); j++)
  71.     {
  72.       final ICombinatoricsVector<Trip> vector = Factory.createVector(allTrips);
  73.  
  74.       final Generator<Trip> generator = Factory.createMultiCombinationGenerator(vector, j);
  75.  
  76.       final List<ICombinatoricsVector<Trip>> iCombinatoricsVectors;
  77.  
  78.       iCombinatoricsVectors = generator.generateFilteredObjects((long l, ICombinatoricsVector<Trip> tripCombination) -> {
  79.         final List<Trip> listTrips = tripCombination.getVector();
  80.  
  81.         if (listTrips.isEmpty()) return false;
  82.  
  83.         final Iterator<Trip> iterator = listTrips.iterator();
  84.  
  85.         Trip firstTrip = iterator.next();
  86.  
  87.         if (!firstTrip.getStart().equals(start)) return false;
  88.  
  89.         Trip tripTmp = firstTrip;
  90.  
  91.         while (iterator.hasNext())
  92.         {
  93.           final Trip trip = iterator.next();
  94.  
  95.           if (!tripTmp.getEnd().equals(trip.getStart())) return false;
  96.           tripTmp = trip;
  97.         }
  98.  
  99.         return true;
  100.       });
  101.  
  102.       iCombinatoricsVectors.forEach(l -> possibleCombinations.add(l.getVector()));
  103.     }
  104.  
  105.     System.out.println("Possible trips: " + possibleCombinations.size());
  106.  
  107.     possibleCombinations.forEach(l -> System.out.println(Arrays.toString(l.toArray())));
  108.   }
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement