haskell 基础题解(13)

本文介绍了如何使用Haskell根据自然数顺序填充N阶矩阵,并展示了代码实现过程。通过`unwords`和`unlines`函数处理字符串,然后定义`bu`函数补全数字的位数,确保矩阵中数字对齐。最后提到了Haskell中函数复合的概念,并给出了另一种简洁的矩阵生成方法。
摘要由CSDN通过智能技术生成

填充矩阵

【题目】用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,至少。当然,多数功能都属于雕虫小技,自已实现一下也不会死的。

目前输出效果是:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值