-- ****************************************************************
-- Pascalsches Dreieck mit Haskell
-- ****************************************************************

-- ---------------------------------------------------------------
-- pas berechnet alle Zeilen des Pascalschen Dreiecks 0..n
-- ---------------------------------------------------------------
pas n           = [pas' m| m <- [0..n] ]

-- ---------------------------------------------------------------
-- showpas zeigt das Dreieck zeilenweise an
-- ---------------------------------------------------------------
showpas n       = putStr ( titel ++ liste2string (pas n) )
                  where titel = "Pascalsches Dreieck für n="
		                ++show n++"\n"


-- ---------------------------------------------------------------
-- pas' berechnet die n-te Zeile des Dreiecks
-- ---------------------------------------------------------------
pas' 0          = [1]
pas' (n+1)      = [1] ++ koeff (pas' n) ++ [1]

-- ---------------------------------------------------------------
-- koeff berechnet die Koeffizienten 2 .. n-1
-- ---------------------------------------------------------------
koeff []        = []
koeff [x]       = []
koeff (x:y:xs)  = (x+y):koeff (y:xs)

-- ---------------------------------------------------------------
-- liste2string wandelt eine Liste in einen String um
-- ---------------------------------------------------------------
liste2string [] = []
liste2string (x:xs) = show x ++ "\n" ++ liste2string xs

-- ---------------------------------------------------------------
-- TEST
-- ---------------------------------------------------------------

test (n+1) = show n                                                                                                                                                                                                                                                                                                                                          
