我试图打印Pascals三角形到一些任意行,经过一些想法我想出了这个解决方案:
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
Run Code Online (Sandbox Code Playgroud)
除印刷外,哪种方法效果很好.当我申请时,pascal 4我得到:
[1]
[1,1]
[1,2,1]
[1,3,3,1]
Run Code Online (Sandbox Code Playgroud)
当我真正想要的是这个:
1
1 1
1 2 1
1 3 3 1
Run Code Online (Sandbox Code Playgroud)
有什么方法可以做到这一点吗?
Fix*_*num 13
定义自己的漂亮打印功能:
import Data.List (intercalate)
show' :: Show a => [a] -> String
show' = intercalate " " . map show
Run Code Online (Sandbox Code Playgroud)
你可以unwords/unlines:
import Data.List
...
putStr $ unlines $ map (unwords . map show) $ pascal n
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1560 次 |
| 最近记录: |