Prolog Aufgaben
This commit is contained in:
		
							parent
							
								
									4371dfe61c
								
							
						
					
					
						commit
						d989cb6a53
					
				
							
								
								
									
										
											BIN
										
									
								
								Logik und Logikprogrammierung - Prüfungsvorbereitung.pdf
									 (Stored with Git LFS)
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Logik und Logikprogrammierung - Prüfungsvorbereitung.pdf
									 (Stored with Git LFS)
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -418,18 +418,70 @@ | |||||||
|       \item $Gr=[4,5,6]$ |       \item $Gr=[4,5,6]$ | ||||||
|     \end{itemize} |     \end{itemize} | ||||||
|     \begin{solution} |     \begin{solution} | ||||||
|  |       \begin{lstlisting} | ||||||
|  |       % delete Funktion | ||||||
|  |       delete(_, [ ], [ ]). | ||||||
|  |       delete(X, [X|Xs], Xs). | ||||||
|  |       delete(X, [Y|Ys], [Y|Zs]) :- | ||||||
|  |         delete(X, Ys, Zs). | ||||||
|  | 
 | ||||||
|  |       % append Funktion  | ||||||
|  |       append([ ], Xs, Xs). | ||||||
|  |       append([X|Xs], Ys, [X|Zs]) :- | ||||||
|  |         append(Xs, Ys, Zs). | ||||||
|  | 
 | ||||||
|  |       % partition Funktion | ||||||
|  |       partition([ ], E, Kl, Gr). | ||||||
|  |       partition([K|R], E, Kl, Gr):- | ||||||
|  |         K<E,  | ||||||
|  |         append(K, Kl, Kl),  | ||||||
|  |         partition(R, E, Kl, Gr). | ||||||
|  |       partition([K|R], E, Kl, Gr):- | ||||||
|  |         K>E,  | ||||||
|  |         append(K, Gr, Gr),  | ||||||
|  |         partition(R, E, Kl, Gr).  | ||||||
|  | 
 | ||||||
|  |       \end{lstlisting} | ||||||
|     \end{solution} |     \end{solution} | ||||||
| 
 | 
 | ||||||
|     \part Das Prädikat $merge(L1,L2,L)$ soll zwei sortierte Listen mit ganzen Zahlen $L1$ und $L2$ zu einer sortierten Liste $L$ verschmelzen. |     \part Das Prädikat $merge(L1,L2,L)$ soll zwei sortierte Listen mit ganzen Zahlen $L1$ und $L2$ zu einer sortierten Liste $L$ verschmelzen. | ||||||
|     \begin{solution} |     \begin{solution} | ||||||
|  |       \begin{lstlisting} | ||||||
|  |         merge([ ], L2, L2). | ||||||
|  |         merge(L1, [ ], L1). | ||||||
|  |         merge([K1|R2], [K2|R2], L):- | ||||||
|  |           K1>K2, | ||||||
|  |           append(K2, L, L), | ||||||
|  |           merge([K1|R1], R2, L). | ||||||
|  |         merge([K1|R2], [K2|R2], L):- | ||||||
|  |           K2=<K1, | ||||||
|  |           append(K1, L, L), | ||||||
|  |           merge(R1, [K2|R2], L).       | ||||||
|  |       \end{lstlisting} | ||||||
|     \end{solution} |     \end{solution} | ||||||
| 
 | 
 | ||||||
|     \part Das Prädikat $listmerge(ListenListe, L)$ bekommt eine Liste sortierter Listen $ListenListe$ und soll sie zu einer sortierten Liste L verschmelzen. Das in Aufgabe b) definierte Prädikat $merge$ kann dabei verwendet werden. |     \part Das Prädikat $listmerge(ListenListe, L)$ bekommt eine Liste sortierter Listen $ListenListe$ und soll sie zu einer sortierten Liste L verschmelzen. Das in Aufgabe b) definierte Prädikat $merge$ kann dabei verwendet werden. | ||||||
|     \begin{solution} |     \begin{solution} | ||||||
|  |       \begin{lstlisting} | ||||||
|  |         listmerge([ ], L). | ||||||
|  |         listmerge([K|R], L):- | ||||||
|  |           merge(K, L, L2), | ||||||
|  |           listmerge(R, L2). | ||||||
|  |       \end{lstlisting} | ||||||
|     \end{solution} |     \end{solution} | ||||||
| 
 | 
 | ||||||
|     \part Das Prädikat $am\_groesten(L, Max)$ soll das größte Element $Max$ einer Zahlenliste $L$ ermitteln. Falls $L$ leer ist, soll ,,nein'' geantwortet werden. |     \part Das Prädikat $am\_groesten(L, Max)$ soll das größte Element $Max$ einer Zahlenliste $L$ ermitteln. Falls $L$ leer ist, soll ,,nein'' geantwortet werden. | ||||||
|     \begin{solution} |     \begin{solution} | ||||||
|  |       \begin{lstlisting} | ||||||
|  |         am_groesten([], Max):- | ||||||
|  |           fail. | ||||||
|  |         am_groesten([K|R], Max):- | ||||||
|  |           K>Max, | ||||||
|  |           am_groesten(R, K). | ||||||
|  |         am_groesten([K|R], Max):- | ||||||
|  |           K=<Max, | ||||||
|  |           am_groesten(R, Max). | ||||||
|  |       \end{lstlisting} | ||||||
|     \end{solution} |     \end{solution} | ||||||
| 
 | 
 | ||||||
|     \part Das Prädikat $am\_kuerzesten(ListenListe, L)$ soll aus einer Liste von $ListenListe$ die kürzeste Liste $L$ ermitteln. Dies soll möglichst effizient geschehen: \begin{itemize} |     \part Das Prädikat $am\_kuerzesten(ListenListe, L)$ soll aus einer Liste von $ListenListe$ die kürzeste Liste $L$ ermitteln. Dies soll möglichst effizient geschehen: \begin{itemize} | ||||||
| @ -439,6 +491,15 @@ | |||||||
|     \end{itemize} |     \end{itemize} | ||||||
|     Falls $ListenListe$ leer ist, soll ,,nein'' geantwortet werden. |     Falls $ListenListe$ leer ist, soll ,,nein'' geantwortet werden. | ||||||
|     \begin{solution} |     \begin{solution} | ||||||
|  |       \begin{lstlisting} | ||||||
|  |         am_kuerzesten([], L). | ||||||
|  |         am_kuerzesten([K,R], L):- | ||||||
|  |           kuerzer_als(K,L), | ||||||
|  |           am_kuerzesten(R, K). | ||||||
|  |         am_kuerzesten([K,R], L):- | ||||||
|  |           !kuerzer_als(K,L), | ||||||
|  |           am_kuerzesten(R, L). | ||||||
|  |       \end{lstlisting} | ||||||
|     \end{solution} |     \end{solution} | ||||||
|   \end{parts} |   \end{parts} | ||||||
| 
 | 
 | ||||||
| @ -451,10 +512,50 @@ | |||||||
|   \begin{parts} |   \begin{parts} | ||||||
|     \part Das Prädikat $enthalten(Baum, Zahl)$ bekommt einen binären Suchbaum $Baum$ sowie eine Zahl $Zahl$ und soll entscheiden, ob diese Zahl in Baum enthalten ist und die Antwort ,,ja'' oder ,,nein'' liefern. |     \part Das Prädikat $enthalten(Baum, Zahl)$ bekommt einen binären Suchbaum $Baum$ sowie eine Zahl $Zahl$ und soll entscheiden, ob diese Zahl in Baum enthalten ist und die Antwort ,,ja'' oder ,,nein'' liefern. | ||||||
|     \begin{solution} |     \begin{solution} | ||||||
|  |       \begin{lstlisting} | ||||||
|  |         baum(nil). | ||||||
|  |         baum(Wurzel, Links, Rechts):- | ||||||
|  |           baum(Links), | ||||||
|  |           baum(Rechts). | ||||||
|  |          | ||||||
|  |         ist_knoten(X, baum(X, Links, Rechts)). | ||||||
|  |         ist_knoten(X, baum(Y, Links, Rechts)) :- | ||||||
|  |           ist_knoten(X, Links). | ||||||
|  |         ist_knoten(X, baum(Y, Links, Rechts)) :- | ||||||
|  |           ist_knoten(X, Rechts). | ||||||
|  | 
 | ||||||
|  |         enhalten(baum(X, Links, Rechts), X). | ||||||
|  |         enhalten(baum(Y, Links, Rechts), X):- | ||||||
|  |           enthalten(Links, X). | ||||||
|  |         enthalten(baum(Y, Links, Rechts), X):- | ||||||
|  |           enthalten(Rechts, X). | ||||||
|  |       \end{lstlisting} | ||||||
|     \end{solution} |     \end{solution} | ||||||
| 
 | 
 | ||||||
|     \part Das Prädikat $flattern(Baum,Liste)$ soll aus einem gegebenen Suchbaum $Baum$ die Liste $Liste$ aller der im Baum enthaltenen Zahlen in aufsteigender sortierter Reihenfolge liefern. |     \part Das Prädikat $flatten(Baum,Liste)$ soll aus einem gegebenen Suchbaum $Baum$ die Liste $Liste$ aller der im Baum enthaltenen Zahlen in aufsteigender sortierter Reihenfolge liefern. | ||||||
|     \begin{solution} |     \begin{solution} | ||||||
|  |       \begin{lstlisting} | ||||||
|  |         flatten([], []).           | ||||||
|  |         flatten(baum(X, Links, Rechts), L):- | ||||||
|  |           insert(X, L, L2), | ||||||
|  |           flatten(Links, L2), | ||||||
|  |           flatten(Rechts, L2). | ||||||
|  |         flatten([], L):- | ||||||
|  |           insertionSort(L, []). | ||||||
|  |          | ||||||
|  |         insert(X, [], [X]). | ||||||
|  |         insert(X, [X1|L1], [X, X1|L1]):-  | ||||||
|  |           X=<X1,  | ||||||
|  |           !. | ||||||
|  |         insert(X, [X1|L1], [X1|L]):-  | ||||||
|  |           insert(X, L1, L). | ||||||
|  | 
 | ||||||
|  |         insertionSort([], []):-  | ||||||
|  |           !. | ||||||
|  |         insertionSort([X|L], S):-  | ||||||
|  |           insertionSort(L, S1),  | ||||||
|  |           insert(X, S1, S). | ||||||
|  |       \end{lstlisting} | ||||||
|     \end{solution} |     \end{solution} | ||||||
|   \end{parts} |   \end{parts} | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user