[问题] 特殊宾果的问题

楼主: content71 (罗莉饲养中...)   2016-04-15 01:38:11
请教各位先进,
给你一个 list, 里面有六个 sub-list,
每个 sub-list 里面有六个数字(范围从1-9)
list 每次随机生成
举例:
[ [ 3, 4, 9, 2, 4, 6],
[ 4, 4, 4, 9, 3, 2],
[ 1, 4, 9, 8, 3, 7],
[ 6, 4, 2, 1, 3, 8],
[ 5, 6, 1, 9, 2, 4],
[ 8, 8, 8, 8, 8, 8] ]
目标是计算出连线数,
横排有3个或以上相同数字的话连线数+1
直排有3个或以上相同数字的话连线数+1
以例子来算的话,连线数是4条 (直的、横的分开算)
我的想法是先 loop 过 sub-list, 再 loop 过每个数字
可是这样横排好解,直排要怎么计算呢?
ps.我在工作了,这真的不是学校作业~谢谢!
作者: tiefblau (tiefblau)   2016-04-15 02:25:00
loop过index 这我看跟大一作业有九成像 拜托不要跟我说你是以写程式为职业......
作者: bigpigbigpig (To littlepig with love)   2016-04-15 06:52:00
作者: Yshuan (倚絃)   2016-04-15 10:06:00
最简单就是enumerate抓index吧 直排跟横排就内外颠倒
作者: yeh6   2016-04-15 15:25:00
这样就可以了吧 " target="_blank" rel="nofollow">
作者: yjc1 (.来而色月踏我.)   2016-04-16 09:46:00
x=np.array(L)print (sum(sum(v>=3 for v in Counter(p).values())for p in chain(x,x.T)))
作者: bigpigbigpig (To littlepig with love)   2016-04-17 21:10:00
你可以用 itertools 模组的 groupby() :)if any(len(list(g)) >= 3 for k,g in groupby(bingo_line ))
作者: yjc1 (.来而色月踏我.)   2016-04-17 23:28:00
sum(any(len(list(g))>=3 for k, g in groupby(v))for p in (x,x.T) for v in p)
作者: jenny2921 ( )   2016-04-20 00:59:00
return cal_cnt(arrs) + cal_cnt( zip(*arrs) )from collections import Counterdef cal_cnt(arrs):t=0for arr in arrs:t+=sum(map( lambda x:x>=3, Counter(arr).values() ))原谅我推文推不出indent XD喔喔 现在才看到上面有人用Counter了~原来要连续啊

Links booklink

Contact Us: admin [ a t ] ucptt.com