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())));
}
}
Comments