Zeitplan mit Bedingungen

Atroxy

Ensign
Dabei seit
Apr. 2009
Beiträge
191
Hallo!

ich moechte einen Zeitplan (am Besten als Tablle) erstellen mit Bedingungen. Mir stehen die Tage Montag bis Freitag zur Verfuegung auf die ich 12 Veranstaltungen verteilen soll. Pro Tag sollte mindestens eine (>1), jedoch nie mehr als 3 (<4) Veranstaltungen stattinden.

Vereinfach dargestellt, jeweils Name und Typ:
(AAAA, 1)
(BBBB, 1)
(CCCC, 1)
(DDDD, 2)
(EEEE, 3)
(FFFF, 4)
(GGGG, 5)
(HHHH, 6)
(IIII, 7)
(JJJJ, 7)
(KKKK,8)
(LLLL, 8)

Notwendige Bedindungen: Die Typen 1 und 2 nicht am gleichen Tag, 5 und 6 nicht am gleichen Tag. Sowie gleiche Typen nicht am selben Tag.
Wenn moeglich: GGGG nicht am Dienstag oder Freitag.

Ich hatte an eine Loesung mit der Ecxel Pivot Funktion gedacht, aber ich komme einfach nicht drauf. Weiss jemand wie man so etwas loest, oder gar ob dies einen Namen hat?
Vielen Dank!
 

Develope_PC

Cadet 4th Year
Dabei seit
Okt. 2009
Beiträge
120
Wenn ich das richtig verstanden habe sind pro Tag 2,4 Veranstaltungen. GGGG schiebst du dann auf einen "dritten" Tag.

Nur deine Darstellung mit Name und Typ leuchtet mir noch nicht ein.
 

Atroxy

Ensign
Ersteller dieses Themas
Dabei seit
Apr. 2009
Beiträge
191
Um es klarzustellen: Jede Veranstaltung findet einmal statt.

Der Name ist der Name dieser Veranstaltung (Primaerschluessel, wenn man so will). Ich koennte genauso gut eine Nummer dafuer hernehmen, habe ab nunmal im Moment Namen und noch keine Zahlen zugewiesen.

Der Typ bezeichnet ein Attribut, welches ich eben dann benutzte um die Bedingungen festzulegen.
Um ein echtes Beispiel herzunehmen. Nehmen wir an 1=Rockmusik, 2=Volksmusik, 3=Jazz. Pro Tag sollen 1-3 Konzerte stattfinden, jedoch niemals zwei Rockkonzerte gleichzeitg, bzw, ein Rockkonzert und ein Volksmusikkonzert gleichzeitg. Rockmusik und Jazz oder Jazz und Volksmusik gleichzeitig waeren okay.
 
Zuletzt bearbeitet:

Develope_PC

Cadet 4th Year
Dabei seit
Okt. 2009
Beiträge
120
Programmierbeispiel & Probleme

Kannst du eigentlich programmieren?

Ich programmiere fast alles. Von C bis SAP. Und dein Projekt ist nicht so einfach zu veralgemeinern, dass du dort Name und Bedingung einträgst und der PC macht den Rest.
Woher soll der PC wissen was Rockmusik ist?
Wenn, dann muss man etwas wie Profile nehmen, damit man dann in die Profile allgemeine Regeln einträgt, wie z.B. die Genres. Dann ordnet man die Veranstaltungen den Genres zu.

Die Abfrage für die Ausgabe einer Zelle könnte so aussehen.

Die Befehle des nachfolgenden Beispiels sind frei erfunden. Sie sollen lediglich des Verständnis dienen.
Code:
[COLOR="green"]# Veranstaltungen definieren[/COLOR]
V1 = "Rock am Ring"
V1G = "Rock"
V2 = "Jazz for ever!"
V2G = "Jazz
V3 = "Muse"
V3G = "Rock"
[COLOR="green"]# V3 - V12 müssen auch definiert werden[/COLOR]

[FONT="Arial"]Hier müssten die Veranstaltungen mit den Genres verknüpft werden, aber mir fällt die Lösung gerade nicht ein.[/FONT]
[COLOR="DimGray"][I]V1speicher = (math.random(0-13)) [COLOR="Green"]#d.h. 1 und 12 sind möglich[/COLOR]
P1 = "V" + V1speicher

V2speicher = (math.random(0-13))
P2 = "V" + V2speicher

V3speicher = (math.random(0-13))
P3 = "V" + V3speicher
[/I][/COLOR]

case ([COLOR="DarkGreen"]V2[/COLOR] = [COLOR="DarkGreen"]V1[/COLOR])
  then {return;}
case ([COLOR="DarkGreen"]V2[/COLOR] = [COLOR="DarkGreen"]V1[/COLOR])
  then {return;}
# = Kommentar
V1G = Genre der Veranstaltung
P1 = enthält den Namen der Variable, dem die Veranstaltung zugeordnet ist
V = Veranstalung
case = engl. Fall; der PC geht die Liste durch, wenn Bedingung efüllt, dann return; ist wie if-Abfrage
return = etw. wie nochmal von vorne.

Alle möglichen Kombinationen bestimmen:

V1|V1 V1|V2 V1|V3
V2|V1 V2|V2 V2|V3
V3|V1 V2|V3 V3|V3

V2|V1
V3|V1
V2|V3


Wenn es Excel sein muss, dann brauchst du jemanden, der dir das in VisualBasic programmiert.


________________________________________________________
Leider fehlt mir die Zeit das weiter auszuarbeiten, aber vllt. kann jemand anders das tun.
Fragen dazu bitte per PM. Ich nehme das hier auf.
 
Y

yxcv

Gast
Hallo Atroxy,

möchtest du alle möglichen Lösungen automatisch ermittelt haben?
Falls ja, was kannst/möchtest du nutzten? Nur Excel oder auch z.B. SQL?

Wenn nicht, wie wäre es mit diesem Aufbau?
 

Anhänge

  • Veranstaltungsplan.jpg
    Veranstaltungsplan.jpg
    41,4 KB · Aufrufe: 114
  • Veranstaltungsplan.zip
    37,6 KB · Aufrufe: 104
Zuletzt bearbeitet:

NullPointer

Lt. Commander
Dabei seit
Okt. 2009
Beiträge
1.570
@Develope_PC: Ich denke, die beste Methode wäre Logikprogrammierung. Ich hab mir mal den Spaß gemacht, das Problem in Prolog zu formulieren, allerdings ist meine Implementation offenbar nicht besonders effizient. Die Lösung dauert Stunden, und ich mußte das Programm schon einmal neu starten, weil mir der Stack vollgelaufen war :D
 

Develope_PC

Cadet 4th Year
Dabei seit
Okt. 2009
Beiträge
120
Ja da hast du zweifellos recht.
Pack mal deine Files in den Anhang.
Würd's mir gerne anschauen.
 

NullPointer

Lt. Commander
Dabei seit
Okt. 2009
Beiträge
1.570
Hier ist der Sourcecode (ich verwende SWI-Prolog unter 64-bit Ubuntu mit "-G4g" für mehr Stack). Im Moment versuche ich, mit

Code:
?- findall(Plan, optimalerPlan(Plan), Liste).

alle Lösungen zu erzeugen, aber er rechnet seit heute früh und ist noch immer nicht fertig :o
 

Anhänge

  • termine.pl.txt
    2,7 KB · Aufrufe: 121

Develope_PC

Cadet 4th Year
Dabei seit
Okt. 2009
Beiträge
120
@ NullPointer Hast du das wirklich so geschrieben? Ist ja grausam zu lesen. Wird ne weile brauchen.

Natürlich dauert das Ewigkeiten, wenn du alle Lösungen errechnen lässt. Wir brauchen aber nur eine.
 

NullPointer

Lt. Commander
Dabei seit
Okt. 2009
Beiträge
1.570
Grausam? So schlimm finde ich's nicht... oder benutzt du Windows und hast einen Editor, der mit den Unix-Zeilenendezeichen nicht klarkommt? ;)
 
Y

yxcv

Gast
Zitat von Develope_PC:
@ NullPointer Hast du das wirklich so geschrieben? Ist ja grausam zu lesen. Wird ne weile brauchen.
.
Nein, dass ist nicht grausam von NullPointer geschrieben. So kryptisch sieht Prolog immer aus.

Zitat von Develope_PC:
Natürlich dauert das Ewigkeiten, wenn du alle Lösungen errechnen lässt.
Wir brauchen aber nur eine.
Die Geschwindigkeit ist immer eine Frage der Optimierung...
Egal welche Software verwendet wird, alle Lösungen können mit Sicherheit
innerhalb einer Minute gefunden werden.
Eine Lösung habe ich ja schon geschrieben. Die nächsten 50 sind damit simpel zu ermitteln.
 
Zuletzt bearbeitet:

Develope_PC

Cadet 4th Year
Dabei seit
Okt. 2009
Beiträge
120
Wer meinen anderen Thread liest, sieht, dass ich gerade nicht von meinem Hauptsystem schreibe.

Der Schnelle halber, habe ich den Windows Texteditor genommen.
Die fehlenden Zeilenumbrüche haben mich verwirrt, da so keine logische Trennung verfügbar ist.

Code:
% Unsere Datenbasis.
veranstaltung(aaaa, 1).
veranstaltung(bbbb, 1).
veranstaltung(cccc, 1).
veranstaltung(dddd, 2).
veranstaltung(eeee, 3).
veranstaltung(ffff, 4).
veranstaltung(gggg, 5).
veranstaltung(hhhh, 6).
veranstaltung(iiii, 7).
veranstaltung(jjjj, 7).
veranstaltung(kkkk, 8).
veranstaltung(llll, 8).

% Wir definieren eine Ordnung auf den Veranstaltungen, damit wir sagen koennen, dass Permutationen
% wie [bbbb, aaaa] nicht beruecksichtigt werden sollen.
vor(V1, V2) :- veranstaltung(V1, T1), veranstaltung(V2, T2), T1 < T2.
vor(aaaa, bbbb).
vor(aaaa, cccc).
vor(bbbb, cccc).
vor(iiii, jjjj).
vor(kkkk, llll).


% Unser Haupt-Ziel. Jede Loesung dieser Formel ist ein gueltiger Wochenplan.
plan(Plan) :- tage(Plan), alleDrin(Plan), jedeNurEinmal(Plan).


% Idealerweise wollen wir GGGG nicht dienstags oder freitags legen.
optimalerPlan(Plan) :- plan(Plan), gNichtDiOderFr(Plan).


% Eine Woche besteht aus genau 5 Tagen, von denen jeder...
tage([Montag, Dienstag, Mittwoch, Donnerstag, Freitag]) :- tag(Montag), tag(Dienstag), tag(Mittwoch), tag(Donnerstag), tag(Freitag).


% ... eine bis drei Veranstaltungen hat, deren Typen kompatibel sind.
tag([V1]) :- veranstaltung(V1, _).
tag([V1, V2]) :- veranstaltung(V1, T1), veranstaltung(V2, T2), vor(V1, V2), typkompatibel(T1, T2).
tag([V1, V2, V3]) :- veranstaltung(V1, T1), veranstaltung(V2, T2), veranstaltung(V3, T3), vor(V1, V2), vor(V2, V3), typkompatibel(T1, T2), typkompatibel(T2, T3), typkompatibel(T1, T3).


% Typen sind kompatibel, wenn sie ungleich sind. Ausserdem sind 1/2 und 5/6 inkompatibel.
typkompatibel(T1, T2) :- T1 \= T2,  kompatibel(T1, T2), kompatibel(T2, T1).
kompatibel(T1, T2) :- (T1 =:= 1 -> T2 \= 2 ; true), (T1 =:= 5 -> T2 \= 6 ; true).


% Stelle sicher, dass jede Veranstaltung im Plan enthalten ist.
% Ob das wohl schoener geht? Ich hab zu lange kein Prolog mehr geschrieben.
alleDrin(Plan) :- drin(Plan, aaaa), drin(Plan, bbbb), drin(Plan, cccc), drin(Plan, dddd), drin(Plan, eeee), drin(Plan, ffff), drin(Plan, gggg), drin(Plan, hhhh), drin(Plan, iiii), drin(Plan, jjjj), drin(Plan, kkkk), drin(Plan, llll).

drin([Tag|_], Name) :- drin2(Tag, Name), !.
drin([_|Rest], Name) :- drin(Rest, Name).

drin2([Name|_], Name) :- !.
drin2([_|Rest], Name) :- drin2(Rest, Name).


% Stelle auch sicher, dass keine Veranstaltung mehr als einmal drin ist.
jedeNurEinmal([]).
jedeNurEinmal([Tag|Rest]) :- jedeNurEinmal2(Tag, Rest), jedeNurEinmal(Rest).

jedeNurEinmal2([], _).
jedeNurEinmal2([T|Ts], Rest) :- keineTermine(T, Rest), jedeNurEinmal2(Ts, Rest).

keineTermine(_, []).
keineTermine(Name, [Tag|Rest]) :- keinTermin(Name, Tag), keineTermine(Name, Rest).

keinTermin(_, []).
keinTermin(Name, [T|Ts]) :- Name \= T, keinTermin(Name, Ts).


gNichtDiOderFr([_, Dienstag, _, _, Freitag]) :- keineTermine(gggg, [Dienstag, Freitag]).

Witzig: Nachdem kopieren des Codes hierein, sind die Umbrüche vorhanden, aber bei mir nicht. Wiedereinmal die Unfähigkeit des Editors bewiesen.
 

Anhänge

  • Editor von Windows 7.png
    Editor von Windows 7.png
    100,6 KB · Aufrufe: 116

Atroxy

Ensign
Ersteller dieses Themas
Dabei seit
Apr. 2009
Beiträge
191
Möchtest du alle möglichen Lösungen automatisch ermittelt haben?
Falls ja, was kannst/möchtest du nutzten? Nur Excel oder auch z.B. SQL?

Ich möchte schlussendlich ein Formfeld haben, im dem ich Monat für Monate die Veranstaltungen ändere. Das wird nicht immer von mir ausgefüllt, sodass Excel nunmal naheliegend ist, da es bereits überall installiert ist, leicht anwendbar und leicht durch Email versendbar zum ausfüllen.

Den Hintergrund mit VBA zu machen, wäre eine Lösung, bisher arbeite ich ab nur mit PHP, javascript und HTML, daher nur wenig Erfahrung.

EDIT:
Also so wie ihr, das Problem weitgehenst beschrieben habt passt es. yxcv hat es ja in Excel gezeigt, aber dies hast du ja manuell arrangiert?
Wie oben geschrieben, wird dies Monat für Monat gemacht, so dass das ganze dynamisch sein muss. Es kommen Typen hinzu oder werden entfernt, und die Veranstaltungen heißen jeden Monat anders.
Da ich 20-30 Verstaltungen habe und 10-15 Typen, so wie mehrere Nebenbedingungen, brauche ich ein Formfeld auf dem es alles eingetragen wird und dann seperat ein Output entsteht (eine Lösung, alle anderen sind egal da ich ja mit den NB spezifiziere), und das Ganze so, dass ein Laie den Input in 10 Minuten hinbekommt :D Ist das überhaupt realistisch, oder fordert dies zuviel Programmierfähigkeit um so etwas zu erstellen.
 
Zuletzt bearbeitet:

NullPointer

Lt. Commander
Dabei seit
Okt. 2009
Beiträge
1.570
Zitat von Develope_PC:
Natürlich dauert das Ewigkeiten, wenn du alle Lösungen errechnen lässt. Wir brauchen aber nur eine.

Da hast du allerdings recht :) Es gibt einfach extrem viele Lösungen. Ich hab noch einmal angefangen, sie mir eine nach der anderen ausgeben zu lassen. Das hier sind die ersten:

Code:
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, gggg], [dddd, iiii, kkkk], [hhhh, jjjj, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, gggg], [dddd, iiii, llll], [hhhh, jjjj, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, gggg], [dddd, jjjj, kkkk], [hhhh, iiii, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, gggg], [dddd, jjjj, llll], [hhhh, iiii, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, gggg], [hhhh, iiii, kkkk], [dddd, jjjj, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, gggg], [hhhh, iiii, llll], [dddd, jjjj, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, gggg], [hhhh, jjjj, kkkk], [dddd, iiii, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, gggg], [hhhh, jjjj, llll], [dddd, iiii, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, hhhh], [gggg, iiii, kkkk], [dddd, jjjj, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, hhhh], [gggg, iiii, llll], [dddd, jjjj, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, hhhh], [gggg, jjjj, kkkk], [dddd, iiii, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, hhhh], [gggg, jjjj, llll], [dddd, iiii, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, iiii], [dddd, gggg, kkkk], [hhhh, jjjj, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, iiii], [dddd, gggg, llll], [hhhh, jjjj, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, iiii], [gggg, jjjj, kkkk], [dddd, hhhh, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, iiii], [gggg, jjjj, llll], [dddd, hhhh, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, jjjj], [dddd, gggg, kkkk], [hhhh, iiii, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, jjjj], [dddd, gggg, llll], [hhhh, iiii, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, jjjj], [gggg, iiii, kkkk], [dddd, hhhh, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, jjjj], [gggg, iiii, llll], [dddd, hhhh, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, kkkk], [dddd, gggg, iiii], [hhhh, jjjj, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, kkkk], [dddd, gggg, jjjj], [hhhh, iiii, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, kkkk], [gggg, iiii, llll], [dddd, hhhh, jjjj]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, kkkk], [gggg, jjjj, llll], [dddd, hhhh, iiii]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, llll], [dddd, gggg, iiii], [hhhh, jjjj, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, llll], [dddd, gggg, jjjj], [hhhh, iiii, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, llll], [gggg, iiii, kkkk], [dddd, hhhh, jjjj]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, ffff, llll], [gggg, jjjj, kkkk], [dddd, hhhh, iiii]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, iiii], [dddd, ffff, kkkk], [hhhh, jjjj, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, iiii], [dddd, ffff, llll], [hhhh, jjjj, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, iiii], [dddd, hhhh, kkkk], [ffff, jjjj, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, iiii], [dddd, hhhh, llll], [ffff, jjjj, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, iiii], [dddd, jjjj, kkkk], [ffff, hhhh, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, iiii], [dddd, jjjj, llll], [ffff, hhhh, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, iiii], [ffff, hhhh, kkkk], [dddd, jjjj, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, iiii], [ffff, hhhh, llll], [dddd, jjjj, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, iiii], [ffff, jjjj, kkkk], [dddd, hhhh, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, iiii], [ffff, jjjj, llll], [dddd, hhhh, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, iiii], [hhhh, jjjj, kkkk], [dddd, ffff, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, iiii], [hhhh, jjjj, llll], [dddd, ffff, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, jjjj], [dddd, ffff, kkkk], [hhhh, iiii, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, jjjj], [dddd, ffff, llll], [hhhh, iiii, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, jjjj], [dddd, hhhh, kkkk], [ffff, iiii, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, jjjj], [dddd, hhhh, llll], [ffff, iiii, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, jjjj], [dddd, iiii, kkkk], [ffff, hhhh, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, jjjj], [dddd, iiii, llll], [ffff, hhhh, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, jjjj], [ffff, hhhh, kkkk], [dddd, iiii, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, jjjj], [ffff, hhhh, llll], [dddd, iiii, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, jjjj], [ffff, iiii, kkkk], [dddd, hhhh, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, jjjj], [ffff, iiii, llll], [dddd, hhhh, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, jjjj], [hhhh, iiii, kkkk], [dddd, ffff, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, jjjj], [hhhh, iiii, llll], [dddd, ffff, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, kkkk], [dddd, ffff, iiii], [hhhh, jjjj, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, kkkk], [dddd, ffff, jjjj], [hhhh, iiii, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, kkkk], [dddd, hhhh, iiii], [ffff, jjjj, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, kkkk], [dddd, hhhh, jjjj], [ffff, iiii, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, kkkk], [dddd, iiii, llll], [ffff, hhhh, jjjj]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, kkkk], [dddd, jjjj, llll], [ffff, hhhh, iiii]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, kkkk], [ffff, hhhh, iiii], [dddd, jjjj, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, kkkk], [ffff, hhhh, jjjj], [dddd, iiii, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, kkkk], [ffff, iiii, llll], [dddd, hhhh, jjjj]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, kkkk], [ffff, jjjj, llll], [dddd, hhhh, iiii]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, kkkk], [hhhh, iiii, llll], [dddd, ffff, jjjj]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, kkkk], [hhhh, jjjj, llll], [dddd, ffff, iiii]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, llll], [dddd, ffff, iiii], [hhhh, jjjj, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, llll], [dddd, ffff, jjjj], [hhhh, iiii, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, llll], [dddd, hhhh, iiii], [ffff, jjjj, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, llll], [dddd, hhhh, jjjj], [ffff, iiii, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, llll], [dddd, iiii, kkkk], [ffff, hhhh, jjjj]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, llll], [dddd, jjjj, kkkk], [ffff, hhhh, iiii]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, llll], [ffff, hhhh, iiii], [dddd, jjjj, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, llll], [ffff, hhhh, jjjj], [dddd, iiii, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, llll], [ffff, iiii, kkkk], [dddd, hhhh, jjjj]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, llll], [ffff, jjjj, kkkk], [dddd, hhhh, iiii]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, llll], [hhhh, iiii, kkkk], [dddd, ffff, jjjj]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, gggg, llll], [hhhh, jjjj, kkkk], [dddd, ffff, iiii]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, iiii], [dddd, gggg, kkkk], [ffff, jjjj, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, iiii], [dddd, gggg, llll], [ffff, jjjj, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, iiii], [ffff, gggg, kkkk], [dddd, jjjj, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, iiii], [ffff, gggg, llll], [dddd, jjjj, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, iiii], [gggg, jjjj, kkkk], [dddd, ffff, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, iiii], [gggg, jjjj, llll], [dddd, ffff, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, jjjj], [dddd, gggg, kkkk], [ffff, iiii, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, jjjj], [dddd, gggg, llll], [ffff, iiii, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, jjjj], [ffff, gggg, kkkk], [dddd, iiii, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, jjjj], [ffff, gggg, llll], [dddd, iiii, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, jjjj], [gggg, iiii, kkkk], [dddd, ffff, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, jjjj], [gggg, iiii, llll], [dddd, ffff, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, kkkk], [dddd, gggg, iiii], [ffff, jjjj, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, kkkk], [dddd, gggg, jjjj], [ffff, iiii, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, kkkk], [ffff, gggg, iiii], [dddd, jjjj, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, kkkk], [ffff, gggg, jjjj], [dddd, iiii, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, kkkk], [gggg, iiii, llll], [dddd, ffff, jjjj]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, kkkk], [gggg, jjjj, llll], [dddd, ffff, iiii]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, llll], [dddd, gggg, iiii], [ffff, jjjj, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, llll], [dddd, gggg, jjjj], [ffff, iiii, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, llll], [ffff, gggg, iiii], [dddd, jjjj, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, llll], [ffff, gggg, jjjj], [dddd, iiii, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, llll], [gggg, iiii, kkkk], [dddd, ffff, jjjj]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, hhhh, llll], [gggg, jjjj, kkkk], [dddd, ffff, iiii]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, iiii, kkkk], [dddd, ffff, gggg], [hhhh, jjjj, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, iiii, kkkk], [dddd, gggg, jjjj], [ffff, hhhh, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, iiii, kkkk], [dddd, gggg, llll], [ffff, hhhh, jjjj]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, iiii, kkkk], [ffff, gggg, jjjj], [dddd, hhhh, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, iiii, kkkk], [ffff, gggg, llll], [dddd, hhhh, jjjj]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, iiii, kkkk], [gggg, jjjj, llll], [dddd, ffff, hhhh]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, iiii, llll], [dddd, ffff, gggg], [hhhh, jjjj, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, iiii, llll], [dddd, gggg, jjjj], [ffff, hhhh, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, iiii, llll], [dddd, gggg, kkkk], [ffff, hhhh, jjjj]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, iiii, llll], [ffff, gggg, jjjj], [dddd, hhhh, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, iiii, llll], [ffff, gggg, kkkk], [dddd, hhhh, jjjj]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, iiii, llll], [gggg, jjjj, kkkk], [dddd, ffff, hhhh]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, jjjj, kkkk], [dddd, ffff, gggg], [hhhh, iiii, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, jjjj, kkkk], [dddd, gggg, iiii], [ffff, hhhh, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, jjjj, kkkk], [dddd, gggg, llll], [ffff, hhhh, iiii]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, jjjj, kkkk], [ffff, gggg, iiii], [dddd, hhhh, llll]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, jjjj, kkkk], [ffff, gggg, llll], [dddd, hhhh, iiii]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, jjjj, kkkk], [gggg, iiii, llll], [dddd, ffff, hhhh]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, jjjj, llll], [dddd, ffff, gggg], [hhhh, iiii, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, jjjj, llll], [dddd, gggg, iiii], [ffff, hhhh, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, jjjj, llll], [dddd, gggg, kkkk], [ffff, hhhh, iiii]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, jjjj, llll], [ffff, gggg, iiii], [dddd, hhhh, kkkk]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, jjjj, llll], [ffff, gggg, kkkk], [dddd, hhhh, iiii]] ;
Plan = [[aaaa], [bbbb, eeee], [cccc, jjjj, llll], [gggg, iiii, kkkk], [dddd, ffff, hhhh]] ;

Das sind nur die Lösungen mit Montag = AAAA, Dienstag = BBBB/EEEE sowie CCCC am Mittwoch, also eine sehr eingeschränkte Teilmenge aller Lösungen. Trotzdem sind es immer noch 124 Kombinationen ^^
 
Top