Aufgaben
Inhaltsverzeichnis |
Übungsaufgaben
Binäre Suche
Aufgabe 1 binär-Suche
Nur keine Angst, die Übung sieht schlimer aus als es tatsächlich ist.
<eval></eval>
- Binär Such Maske mit sicherheits abfragen
(define bin-suche
(lambda (ls wert) (bin-such ls wert)))
(define bin-such
(lambda (ls wert)
(cond
[(number? wert)
(cond
[(eq? ls '()) "Fehler! Eingegebene Liste ist leer"]
[(eq? wert '()) "Fehler! Eingegebener Wert ist leer"]
[(list? wert) "Fehler! Der zusuchende Wert soll eine Liste sein!?!"]
[(eq? (cdr ls) '())
(cond
[(eq? (car ls) wert) wert]
[else "Element Nicht vorhanden + Liste besteht aus max einem Wert."])]
[else (bint-suc (sort < ls) wert (listen-lang ls))])]
[Else "Ausschließlich Zahlen sind als Suchabfrage erlaubt."])))- ls = Liste
- wert = gesuchter Wert
- i = länge der liste
- tatsächlicher binär Sucher
- wenn die unterste teilliste eine Linke-Liste ist entsteht ein Fehler!
(define bint-suc
(lambda (ls wert i)
(cond
[(eq? i 2)(isers ls wert)]
[(< wert (car (liste-r ls)))
(bint-suc (liste-l ls) wert (listen-lang (liste-l ls)))
]
[(>= wert (car (liste-r ls))) ;Fehler Lokaliesiert irgend wo hier
(bint-suc (liste-r ls) wert (listen-lang (liste-r ls))); oder eher hier
]
)))- ermitteln der Länge einer Liste
(define list-lalng1
(lambda (ls i)
(cond
[(not-list? ls)(+ i 1)]
[else (list-lalng (cdr ls) (+ i 1))])))(define list-lalng
(lambda (ls i)
(cond
[(eq? ls '()) i]
; [number? ls i]
[else (list-lalng (cdr ls) (+ i 1))]))) (define listen-lang
(lambda (ls) (list-lalng ls 0)))
- Ermitteln der linken 50% Liste LLL
(define liste-l
(lambda (ls) (list-linkses ls (/ (listen-lang ls) 2))))
(define list-linkses
(lambda (ls laenge)
(cond
[(< laenge 1) '() ]
[else (cons (car ls) (list-linkses (cdr ls) (- laenge 1)))])))- Ermitteln der rechten 50% Liste RRR
(define liste-ra
(lambda (ls) (list-rechtest ls (modulo (listen-lang ls) 2))))
(define liste-r
(lambda (ls) (list-rechtest ls (/ (listen-lang ls) 2))))
(define list-rechtest
(lambda (ls laenge)
(cond
[(< laenge 1) ls]
[else (list-rechtest (cdr ls) (- laenge 1))])))- BinäreSuche
- Konzeptionel
(define ist-er-es
(lambda (ls wert)
(cond
[(eq? ls '()) 'no]
[(eq? (car ls) wert) (car ls)]
[else (ist-er-es (cdr ls) wert)]
)))- paar-durchsuchung
- isers1 wird nicht genutzt
(define isers1
(lambda (ls wert)
(cond
[(eq? ls '()) 'no]
[(eq? (car ls) wert) (car ls)]
[(eq? (cadr ls) wert) (cadr ls)]
[else 'no]
)))(define isers
(lambda (ls wert)
(cond
[(eq? ls '()) "unter Umständen ist ein Fehler aufgetreten! Die End-Liste ist leer!!!"]
[(eq? (car ls) wert) "Wert Enthalten"]; für bint-suc i = 2
[(eq? (cadr ls) wert) "Wert Enthalten"]; für bint-suc i = 2
[(eq? (cddr ls) wert) "Wert Enthalten"]; für bint-suc i = 3;(!!!! Wichtig ansonsten entsteht eine endlose sich selbst verarbeitende Schleife in bin-suc im falle das die vorletzte Teil Liste eine 3-er liste ist)
[else "Wert nicht Enthalten"]
)))(define sort
(lambda (rel ls)
(cond
[(eq? '() ls)'()]
[(eq? '() (cdr ls)) ls]
[(Cond
[(eq? rel <)(einf < (sort rel (cdr ls))(car ls) )]
[(eq? rel >)(einf > (sort rel (cdr ls))(car ls) )]
[else "Relation unzulässig!"])])))(define einf
(lambda (relatio ls wawert)
(cond
[(eq? ls '())(list wawert)]
;[(eq? wawert (car ls) ) (cons sortls wawert)]
[(relatio wawert (car ls))(cons wawert ls)]
[else (cons (car ls)(einf relatio (cdr ls) wawert))])))"Für Hilfe: hilfe-bin-suche eingeben "
"Für Tipps: tipp-xy wobei x ein Buchstabe ist und y eine Ziffer"
"Für die Buchstaben: a, b, c und l(für Lösung)"
"Die Tipps mit gleichen Buchstaben gehören zusammen"
"Für die Ziffern: 1, 2, 3, 4 die Ziffern stehen für die Tipp-intensitäts-stufe"
"(Oder sollten das zumindestens)"
"!!!ACHTUNG!!! vorm verändern des Quellcodes, von diesem eine Kopie anlegen!"
Multiplikation großer ganzer Zahlen nach KARATSUBA und OFMAN
Lösen Sie, unter Verwendung der Kenntnisse aus Teile und Herrsche 2: Der Algorithmus von KARATSUBA und OFMAN, folgende Rechenaufgaben:
- 3812 \cdot 3264
- 837147 \cdot 479253
- 34 \cdot 56
Schnelle Matrixmultiplikation nach STRASSEN
Gegeben sind folgende zwei Matrizen A und B
A=\begin{pmatrix} 3 & 4 & 8 & 9\\ 1 & 5 & 9 & 2\\ 5 & 7 & 4 & 3\\ 2 & 3 & 8 & 1 \end{pmatrix} und
B=\begin{pmatrix} 3 & 2 & 8 & 6\\ 1 & 4 & 9 & 5\\ 7 & 6 & 4 & 3\\ 2 & 9 & 2 & 3 \end{pmatrix}Berechnen Sie das Produkt der gegebenen Matrizen mithilfe des Algorithmus von Strassen.
Lösungen
Die Lösungen zu den Aufgaben findet man hier.