Ich habe gerade angefangen zu lernen Haskell, und habe ein paar Probleme online getan. Die meiste Zeit kann ich die Lösung herausfinden, aber ich kann es nicht in dem erwarteten Ausgabeformat ausdrucken.Drucken Pascals Dreieck in Haskell
Zum Beispiel habe ich versucht, ein Pascal-Dreieck-Programm zu tun. Ich habe herausgefunden, wie man Pascal's Triangle als eine Liste von Ints-Listen generiert, aber ich kann nicht herausfinden, wie man es druckt.
Hier ist mein Code.
import Data.List
pascal n = map liner [0..n]
where liner x = map (comb x) [0..x]
comb n 0 = 1
comb 0 r = 0
comb n r = comb (n-1) (r-1) * n `div` r
main = do
order <- getLine
let output = pascal . (read :: String -> Int) $ order
print output
Derzeit ist die Ausgabe wie
[[1],[1,1],[1,2,1],[1,3,3,1]...
ich es in der Form dieses
1
1 1
1 2 1
1 3 3 1
...
Wie kann ich tun, um zu drucken? Ich habe versucht, Dinge wie mapM_ oder intercalate "" zu verwenden, ohne Glück. Ich bin noch nicht in Monaden, also verstehe ich nicht, wie mapM funktioniert.
Keine Notwendigkeit, Monaden dafür wirklich zu verstehen. 'f = hebt ab. map (intercalate "". map show) 'erzeugt den gewünschten' String' Wert aus einem '[[Int]]' Wert; Übergeben Sie einfach das Ergebnis an 'putStr'. – Jubobs
und 'intercalate" "' ist nur 'unwords' - du bekommst es mit' putStr. unlines. Karte (unwords. Karte anzeigen) ' – Carsten
Aah schön. Ich vermischte Zeilen und Linien und ordnete alles falsch an. Ich habe 'show' nicht richtig benutzt. Vielen Dank! –