91 lines
2.5 KiB
Java
91 lines
2.5 KiB
Java
package gfn.marc;
|
|
|
|
// Hilfsklasse zur Simulation der Aufgabenstellung
|
|
|
|
import java.util.*;
|
|
|
|
import static java.util.Map.entry;
|
|
|
|
public class Routen {
|
|
|
|
static Ort a = new Ort("A", 1600, 5.6);
|
|
static Ort b = new Ort("B", 1800, 5.2);
|
|
static Ort c = new Ort("C", 1300, 5.5);
|
|
static Ort d = new Ort("D", 1450, 4.9);
|
|
static Ort e = new Ort("E", 1400, 5.1);
|
|
|
|
static {
|
|
a.setKnoten(b, c, d);
|
|
b.setKnoten(a, c, e);
|
|
c.setKnoten(a, b);
|
|
d.setKnoten(a, e);
|
|
e.setKnoten(b, d);
|
|
|
|
a.berechneRouten();
|
|
b.berechneRouten();
|
|
c.berechneRouten();
|
|
d.berechneRouten();
|
|
e.berechneRouten();
|
|
}
|
|
|
|
public static String[][] getRoute(String SB, String SE) {
|
|
for (Ort ort : Ort.orte) {
|
|
if (ort.id.matches(SB)) {
|
|
return ort.routen.get(SB.concat(SE));
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
}
|
|
|
|
class Ort {
|
|
static ArrayList<Ort> orte = new ArrayList<>();
|
|
String id;
|
|
int frachtkapazitaet;
|
|
double frachtkosten; // EUR/kg
|
|
ArrayList<Ort> knoten;
|
|
HashMap<String, Ort> knotenMap;
|
|
HashMap<String, String[][]> routen;
|
|
|
|
public Ort(String id, int frachtkapazitaet, double frachtkosten) {
|
|
this.id = id;
|
|
this.frachtkapazitaet = frachtkapazitaet;
|
|
this.frachtkosten = frachtkosten;
|
|
Ort.orte.add(this);
|
|
}
|
|
|
|
public void setKnoten(Ort... knotenArray) {
|
|
ArrayList<Ort> knoten = new ArrayList<>();
|
|
HashMap<String, Ort> knotenMap = new HashMap<>();
|
|
for (Ort k : knotenArray) {
|
|
knoten.add(k);
|
|
knotenMap.put(k.id, k);
|
|
}
|
|
this.knoten = knoten;
|
|
this.knotenMap = knotenMap;
|
|
}
|
|
|
|
void berechneRouten() {
|
|
HashMap<String, String[][]> routen = new HashMap<>();
|
|
for (Ort o : orte) {
|
|
if (!this.id.equals(o.id)) {
|
|
routen.put(this.id.concat(o.id), new String[this.knoten.size()][orte.size()]);
|
|
|
|
for (int i = 0; i < routen.get(this.id.concat(o.id)).length; i++) {
|
|
routen.get(this.id.concat(o.id))[i][0] = this.id;
|
|
for (int j = 1; j < routen.get(this.id.concat(o.id))[i].length; j++) {
|
|
if (routen.get(this.id.concat(o.id))[i][j].isBlank()) {
|
|
|
|
// TODO: Hier weitermachen!
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.routen = routen;
|
|
}
|
|
}
|