[問題] 特殊賓果的問題

作者: 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
這樣就可以了吧 http://imgur.com/G3JbTgx
作者: 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