- 论坛徽章:
- 16
|
本帖最后由 expert1 于 2014-05-29 20:16 编辑
最近论坛问题质量下降,来个题目大家耍一下。
来自群的问题,为了简明起见,做了转化。大家都有上课签到点名的经历,比如在一个月内(日期连续,包含周末节假日 )某user连续签到3天以上算有效的签到,并且计算为N-1次(N必须大于3),现在给出签到表,统计该人连续出清天数和一个时间段内总有效签到次数。
e.g 某人2014-6-1到2014-6-5连续出现,那么算有效(符合连续并且大于3天的条件),则应该打印
2014-6-1 2014-6-5 somebody 4
6-6 somebody不来签到了,7,8号来一天,9号又不来了,虽然连续但少于3天,无效。 以此类推,假如10-14号又连续签到,应该打印
2014-6-10 2014-6-14 somebody 3
。。。 #省略若干
。。。。。。
最后统计somebody该时间段内签到次数,4+3=7
现在提供数据如下(由于跨年份/月份的可以用awk的时间函数处理,简单起见,就直接简单列出了数字来替代,否则直接gensub或者mktime之类的加工一下没什么难度)
51
cj
bob
zooyo
tom
52
tom
cj
53
tom
zooyo
cj
54
zooyo
cj
55
bob
56
bob
cj
57
zooyo
bob
tom
cj
58
tom
cj
59
tom
60
tom
cj
数字代表日期,上面说了,真正日期可以用函数加工为UNIX时间,简明起见,就用连续数字代替。
根据上述要求,结果应该是
55-57 bob 2
51-54 cj 3
56-58 cj 2
51-53 tom 2
57-60 tom 3
########## summary ##############
bob 2
cj 5
tom 5
我的代码,为了不干扰大家,隐藏起来。
更正: 代码在二楼,放code block里面了。论坛会吃掉i做index。只能放code区里。
更多测试数据(非日期的数据不含数字,提醒一下免得目测的眼花)
20140401
caoyihong
chengwei
dengqinglin
gongll
wangying
duxuedong
huanglu.px
huangshengming
leizhenguo
liaoweiping
linping
lishaoqing
liujianyi
liuqinghua
20140402
jxmailtestvip
caoyihong
chengwei
dengqinglin
duxuedong
huanglu.px
lihh
20140403
jxmailtestvip
caoyihong
chengwei
duxuedong
huanglu.px
leizhenguo
liaoweiping
linping
lishaoqing
liujianyi
lill
20140404
chengwei
dengqinglin
duxuedong
huanglu.px
huangshengming
leizhenguo
liaoweiping
linping
lishaoqing
zhaoqun
liuqinghua
20140405
zhaoqun
20140406
gongll
20140407
gongll
20140408
gongll
20140409
dengqinglin
chengwei
duxuedong
huanglu.px
liuqinghua
gongll
huangshengming
liaoweiping
linping
caoyihong
lishaoqing
liujianyi
20140410
lishaoqing
dengqinglin
liaoweiping
wangying
duxuedong
huanglu.px
chengwei
huangshengming
leizhenguo
linping
liujianyi
liuqinghua
|
|