Informatik A

Werbung
7. Aufgabenblatt vom Dienstag, den 07.Dezember 2010 zur Vorlesung
Informatik A
(Frank Hoffmann)
Abgabe am Freitag, den 17.Dezember 2010 bis 1200
1. Binomialkoeffizienten (5 Punkte).
Implementieren Sie die Rekursion zur Berechnung der Binomialkoeffizienten. Geben Sie
die ersten 12 Zeilen des Pascalschen Dreieckes auf dem Bildschirm aus. Die einzelnen
Zeilen sollten linksbündig sein, danach jeweils eine Leerzeile, zwischen den Einträgen
einer Zeile jeweils ein Leerzeichen.
Zur Erinnerung: Der Binomialkoeffizient nk ist für nichtnegative ganze Zahlen n und
k rekursiv definiert als:
n
n
∀n ≥ 0 :
= 1, ∀0 ≤ n < k :
=0
0
k
n−1
n−1
n
+
=
∀n ≥ k :
k
k−1
k
2. Vollständige Induktion I (6 Punkte)
Beweisen Sie mittels vollständiger Induktion über die Listenlänge, dass für alle Listen
xs gilt:
length (reverse xs) = length xs,
wobei reverse die Funktion ist, die eine Liste umdreht, definiert mittels:
reverse [] = []
reverse (z:zs) = reverse zs ++ [z]
length [] = 0
length (y:ys) = 1 + length ys
--reverse.1
--reverse.2
--length.1
--length.2
Beweisen Sie außerdem, dass für Haskell–Listen die folgende Gleichheit auf Funktionenebene gilt, wobei id die Identitätsfunktion ist und der (.)-Operator für Funktionskomposition steht.
reverse . reverse = id
3. Vollständige Induktion II (5 Punkte)
Beweisen Sie mittels Induktion für alle endlichen Listen (von Listen) xss und alle
Funktionen f, dass gilt
concat (map (map f) xss) = map f (concat xss)
Zur Erinnerung:
concat ::[[a]] -> [a]
concat []=[]
concat (xs:xss)= xs++concat xss
map g []=[]
map g (x:xs)= g x : map g xs
--concat.1
--concat.2
--map.1
--map.2
4. Links- und Rechtsfaltung (4 Punkte)
(a) Beschreiben und begründen Sie verbal, was folgende Linksfaltung tut.
wasTuIch xs1 xs2 = foldl func xs1 xs2
func
func
|
|
[]
_ = []
(x:xs) y
x==y
= func xs y
otherwise = x: (func xs y)
(b) Was tut die Funktion mystery xs = foldr (++) [] (map sing xs),
wobei sing x = [x] für alle x ist?
Hinweis: Achten Sie bei Programmieraufgaben immer auf eine ausreichende und klare
Kommentierung, sonst Punktabzug! Bei der Abgabe schicken Sie per email das lauffähige
Haskell-Skript an Ihren Tutor, geben Sie es außerdem in Papierform ab.
Herunterladen