hi,
es geht um Aufgabe 3b.) c.) und d.).
Kann mir irgendjemand seine eigene Loesung mal hier posten.
Da die Musterloesungen nicht laufen und ich alleine nicht drauf komme bin ich am verzweifeln.
Danke im voraus.
Poste doch einfach mal die Aufgabenstellung. Sonst können die Leute aus den höheren Semestern dir nicht helfen, es sei denn, sie haben gerade Lust, selber sämtliche Uni-Seiten zu durchsuchen, um sie zu finden.
Wenn die Musterlösungen nicht laufen, dann könnte es sein, dass du in deinem Scheme die Sprache noch auf "Beginner" oder so stehen hast. Das müsstest du ggf. auf "Full Scheme" umstellen.
tja, mir hat er das suchen zugemutet..,
die musterlösung zu b. ist irgendwie nicht so zum thema,
ansonsten denke ich das die musterlösungen mit kleinen änderungen funktionieren,
kannst dir ja mal das hier anschauen und fragen stellen,
wenn du was nicht verstehst
a.)
% einfaches durchsuchen der liste bis zum ende
% lsrch_a: linear-search-for-(a)
% FN: Famillienname
% VN: Vorname
% N: Tel-Nr.
lsrch_a(FN,VN,N,[[FN,VN,N]|_]).
lsrch_a(FN,VN,N,[_|L]):-lsrch_a(FN,VN,N,L).
b.)
% sortiertes suchen, sortiert erst und verwendet dann lsrch_b
sortiertsuchen(FN,VN,N,LIST):-
sort(LIST,SORTLIST),lsrch_b(FN,VN,N,SORTLIST).
% durchsucht eine sortierte liste,
% hört beim ersten grösseren nachnamen auf
lsrch_b(FN,VN,N,[[FN,VN,N]|_]).
lsrch_b(FN,VN,N,[[FN2,_,_]|L]):-FN @=< FN2,lsrch_b(FN,VN,N,L).
c.)
% teilt eine liste in teilmengen,
% 2. parameter gibt anzahl der teilmengen an
chop(L,1,[L]).
chop(L,N,[X|LR]):-N>1,append(X,X1,L),length(L,LX),
LEN is ceiling(LX/N),length(X,LEN), N1 is N-1, chop(X1,N1,LR).
d.)
% durchsucht eine liste mit sortiertenteilisten-verfahren
% sortiert erstmal die liste, teilt sie dann in
% ceiling(laenge/3) stueck, und verwendet lsrch_c
nochsortiertersuchen(FN,VN,N,LIST):-sort(LIST,SORTLIST),
length(SORTLIST,LEN),TEILLEN is ceiling(LEN/3),
chop(SORTLIST,TEILLEN,TEILLIST),lsrch_c(FN,VN,N,TEILLIST).
% durchsucht eine sortierte liste aus teillisten,
% durchsucht passende teillisten mit lsrch_b
lsrch_c(FN,VN,N,[H1|L]):-ge(FN,H1), lsrch_c(FN,VN,N,L).
lsrch_c(FN,VN,N,[H1,H2|_]):-ge(FN,H1), le(FN,H2), lsrch_b(FN,VN,N,H1).
lsrch_c(FN,VN,N,[H]):-lsrch_b(FN,VN,N,H).
% hilffunktionen, schauen ob suchname >= (bzw. =< )
erster name in teilliste
ge(FN,[[H|_]|_]):-FN @>= H.
le(FN,[[H|_]|_]):-FN @=< H.
Ach.. es ging noch um Prolog..