6

この解決策を思いついた後、パスカルの三角形を任意の行まで出力しようとしています。

next xs = zipWith (+) ([0] ++ xs) (xs ++ [0])
pascal n = take n (iterate next [1])

main = do
   n <- readLn :: IO Int
   mapM_ putStrLn $ map show $ pascal n

印刷を除いて、これは非常にうまく機能します。申請すると、次のようpascal 4になります。

[1]
[1,1]
[1,2,1]
[1,3,3,1]

私が本当に欲しいのはこれです:

1
1 1
1 2 1
1 3 3 1

これを行う方法はありますか?

4

2 に答える 2

13

独自のプリティ印刷関数を定義します。

import Data.List (intercalate)

show' :: Show a => [a] -> String
show' = intercalate " " . map show
于 2013-10-08T19:14:00.183 に答える