填充矩阵
【题目】用1,2,3… 的自然数顺序填充一个N阶的矩阵,当N=3时,如:
1 2 3
4 5 6
7 8 9
这个用 haskell 很容易实现,因为很明显,只要把一个自然数序列,不断截N个作为一个列表,加入最终的大列表就可以了。
上代码:
ju n = f n [1..n^2] where
f 1 xs = [xs]
f row xs = take n xs : f (row-1) (drop n xs)
ok :: Int -> [String]
ok n = map (unwords . map show) (ju n)
main = putStrLn $ unlines (ok 9)
unwords 是把多个串中间用空格分开生成一个单一的串。
unlines 是把多个串中间用“\n” 分开生成一个单一的串。
这些最常见的通用功能一般 haskell 都有了现成的函数。初学者最好能仔细研究一下Data.List,至少。当然,多数功能都属于雕虫小技,自已实现一下也不会死的。
目前输出效果是: