Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package teste;
- import org.paukov.combinatorics.Factory;
- import org.paukov.combinatorics.Generator;
- import org.paukov.combinatorics.ICombinatoricsVector;
- import java.util.*;
- public class Tester
- {
- public Trip makeTrip(Location start, Location end)
- {
- Trip trip = new Trip();
- trip.setStart(start);
- trip.setEnd(end);
- return trip;
- }
- public static void main(String[] args)
- {
- Tester tester = new Tester();
- ArrayList<Location> locations = new ArrayList<>();
- locations.add(new Location("A", "A"));
- locations.add(new Location("B", "B"));
- locations.add(new Location("C", "C"));
- locations.add(new Location("D", "D"));
- locations.add(new Location("E", "E"));
- locations.add(new Location("F", "F"));
- locations.add(new Location("G", "G"));
- locations.add(new Location("H", "H"));
- locations.add(new Location("I", "I"));
- locations.add(new Location("J", "J"));
- locations.add(new Location("K", "K"));
- locations.add(new Location("L", "L"));
- locations.add(new Location("M", "M"));
- locations.add(new Location("N", "N"));
- locations.add(new Location("O", "O"));
- locations.add(new Location("P", "P"));
- locations.add(new Location("Q", "Q"));
- locations.add(new Location("R", "R"));
- locations.add(new Location("S", "S"));
- locations.add(new Location("T", "T"));
- int i = 0;
- Random random = new Random();
- ArrayList<Trip> trips = new ArrayList<>();
- while (i++ < 54)
- {
- trips.add(tester.makeTrip(locations.get(random.nextInt(locations.size())), locations.get(random.nextInt(locations.size()))));
- }
- System.out.println("Trips:");
- trips.forEach(System.out::println);
- final Location start = trips.get(random.nextInt(trips.size())).getStart();
- System.out.println("\nLooking for start: " + start);
- System.out.println();
- final Set<Trip> allTrips = new HashSet<>(trips);
- List<List<Trip>> possibleCombinations = new ArrayList<>();
- for (int j = 0; j < trips.size(); j++)
- {
- final ICombinatoricsVector<Trip> vector = Factory.createVector(allTrips);
- final Generator<Trip> generator = Factory.createMultiCombinationGenerator(vector, j);
- final List<ICombinatoricsVector<Trip>> iCombinatoricsVectors;
- iCombinatoricsVectors = generator.generateFilteredObjects((long l, ICombinatoricsVector<Trip> tripCombination) -> {
- final List<Trip> listTrips = tripCombination.getVector();
- if (listTrips.isEmpty()) return false;
- final Iterator<Trip> iterator = listTrips.iterator();
- Trip firstTrip = iterator.next();
- if (!firstTrip.getStart().equals(start)) return false;
- Trip tripTmp = firstTrip;
- while (iterator.hasNext())
- {
- final Trip trip = iterator.next();
- if (!tripTmp.getEnd().equals(trip.getStart())) return false;
- tripTmp = trip;
- }
- return true;
- });
- iCombinatoricsVectors.forEach(l -> possibleCombinations.add(l.getVector()));
- }
- System.out.println("Possible trips: " + possibleCombinations.size());
- possibleCombinations.forEach(l -> System.out.println(Arrays.toString(l.toArray())));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement