免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: sw2wolf
打印 上一主题 下一主题

求汉明数 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-04-29 08:17 |只看该作者
原帖由 MMMIX 于 2009-4-28 13:11 发表

一个成员一个成员的输出,或者重新定义 list 的 show


重新定义 list 的 show 应该不错, 但觉得麻烦, 目前用如下笨办法解决: 将show (red)结果转换成需要的格式

red = [1,2,3,4,5]
red2 = filter (\x -> (x /= '[') && (x /= ']')) $ map (\x-> if x == ',' then ' ' else x)  $ show (red)
bracket (openFile "abc.txt" WriteMode) (hClose)
        (\hd1 -> hPutStrLn hd1 $ red2)

论坛徽章:
0
12 [报告]
发表于 2009-04-29 09:42 |只看该作者
Prelude> let s = map (\x -> if Char.isDigit x then x else ' ').show $ [1, 2, 3, 4]
Prelude> putStrLn s
1 2 3 4
Prelude> words s
["1","2","3","4"]

[ 本帖最后由 izhier 于 2009-4-29 09:47 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2009-04-29 10:34 |只看该作者
原帖由 izhier 于 2009-4-29 09:42 发表
Prelude> let s = map (\x -> if Char.isDigit x then x else ' ').show $ [1, 2, 3, 4]
Prelude> putStrLn s
1 2 3 4
Prelude> words s
["1","2","3","4"]


Char.isDigit, 很好, 但结果中两端多了空格, 也就是把"[", "]"也换成了空格

[ 本帖最后由 sw2wolf 于 2009-4-29 10:37 编辑 ]

论坛徽章:
0
14 [报告]
发表于 2009-04-29 10:52 |只看该作者

回复 #13 sw2wolf 的帖子

嗯,但是在我们获取这些数字时,可以用 words 函数去掉多余的空格呀

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
15 [报告]
发表于 2009-04-29 14:53 |只看该作者
原帖由 izhier 于 2009-4-29 09:42 发表
Prelude> let s = map (\x -> if Char.isDigit x then x else ' ').show $ [1, 2, 3, 4]
Prelude> putStrLn s
1 2 3 4
Prelude> words s
["1","2","3","4"]

试试这个

  1. intercalate " " $ map show [1..5]
复制代码


其中 intercalate 是 Data.List 中的函数。

论坛徽章:
0
16 [报告]
发表于 2009-04-29 15:01 |只看该作者
原帖由 MMMIX 于 2009-4-29 14:53 发表
其中 intercalate 是 Data.List 中的函数。

ghc 扩展 ?
标准函数库里找不到它的定义呀 !

[ 本帖最后由 izhier 于 2009-4-29 15:27 编辑 ]

论坛徽章:
0
17 [报告]
发表于 2009-04-29 15:24 |只看该作者
原帖由 MMMIX 于 2009-4-29 14:53 发表
intercalate " " $ map show [1..5]

这个 show 函数用的太好了
再给一个版本

unwords.map show $ [1..5]

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
18 [报告]
发表于 2009-04-29 17:05 |只看该作者
原帖由 izhier 于 2009-4-29 15:24 发表

这个 show 函数用的太好了
再给一个版本

unwords.map show $ [1..5]

这个我觉得写成如下形式更清晰些:
unwords $ map show [1..5]

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
19 [报告]
发表于 2009-04-29 17:09 |只看该作者
原帖由 izhier 于 2009-4-29 15:01 发表

ghc 扩展 ?

嗯,GHC 的 Data.List 里面有许多有用的函数,包括 unwords 本身在 GHC 中也是在 Data.List 中定义的。

论坛徽章:
0
20 [报告]
发表于 2009-04-29 18:38 |只看该作者
原帖由 MMMIX 于 2009-4-29 17:05 发表

这个我觉得写成如下形式更清晰些:
unwords $ map show [1..5]


各有优缺点

unwords $ map show [1..5] 直接用比较好看

unwords. map show 定义一个函数比较好看
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP