So, das ganze mal in 34 Zeilen haeszlichem Prolog. Fuer den != CDW, der mir den Code erklaeren kann, gibts nochmal nen Keks. ;-)
Das ganze loest beide Teile der Aufgabe. Wenn auch ARG langsam. Am Ende lassen sich alle benoetigten startzeiten mit -? st(X). finden.
[SPOILER]:- dynamic(time/1).
:- dynamic(st/1).
gentimes :-
stime(H,M,S),
uhrzeit(H,M,S),
gentimes.
stime(H,M,S) :-
random(0,25,X),
random(0,61,Y),
random(0,61,Z),
(
(
not(st([X,Y,Z])),not(time([X,Y,Z])),
assert(st([X,Y,Z])),assert(time([X,Y,Z])),
H is X,M is Y,S is Z,
write('StartTime: '),write(X),write('h '),write(Y),write('m '),write(Z),write('s'),nl
)

stime(H,M,S)
)
).
uhrzeit(H,M,S) :-
Z is (S + 11) mod 60,
((Z < 11, MT is 1)

Z >= 11,MT is 0)),
Y is ((M + 11) + MT) mod 60,
((Y < 11, HT is 1)

Y >= 11,HT is 0)),
X is ((H + 11) + HT) mod 24,
not(time([X,Y,Z])),
write('GenerTime: '),write(X),write('h '),write(Y),write('m '),write(Z),write('s'),nl,
assert(time([X,Y,Z])),
uhrzeit(X,Y,Z).[/SPOILER]