Re: [問題] 排除輸出重複數值的方法

看板Python作者時間11年前 (2012/11/04 18:21), 編輯推噓1(106)
留言7則, 1人參與, 最新討論串6/6 (看更多)
-原文恕刪- 之前有答過類似問題 原文在 #1FYW0hPP (Programming) 我把原po問題分為3個步驟 1. 不同容器,相同物品 的 排列組合 2. 原PO有一個特別限制條件是翻轉一樣的要去掉 3. 每個數字(容器內物品數) <= K (原po設為2) 1) from itertools import combinations from numpy import diff m,n = 9,8 # 改成9樣相同物品給8個相異箱子 c = [ (0,)+i+(m,) for i in combinations(range(1,m),n-1)] result1 = map(lambda x: tuple(diff(x)),c) 這時result會包含像是(1,1,1,2)及(2,1,1,1)這種對稱的 2) 由於http://docs.python.org/2/library/itertools.html#itertools.combinations 有說到這邊會是 in sorted order 所以這個result直接取前半段就可以了 from math import ceil result2 = result1[:int(ceil(len(result1)/2.0))] 3) 最後去掉大於2的數字 (optional) result3 = filter(lambda x:False not in [i < 3 for i in x],result2) # result3 為最終結果 寫到這邊忽然看到前面dark版友回兩篇都是重複組合 但是原PO那張圖的需求又讓我覺得怪怪的@@ 因為萬一是 4個數字 總和6 像是(1,2,1,2)就不會出現在重複組合裡(因為只會出現(1,1,2,2)這樣) 所以還要再排列一次不是? 通篇廢話不知道有沒有幫到原po就是了~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.104.179.117 ※ 編輯: bob123 來自: 59.104.179.117 (11/04 18:23) ※ 編輯: bob123 來自: 59.104.179.117 (11/04 18:29) ※ 編輯: bob123 來自: 59.104.179.117 (11/04 18:30)

11/15 22:01, , 1F
謝謝 作業已順利完成 我當時的需求是 例如1122
11/15 22:01, 1F

11/15 22:02, , 2F
1->一個支線 有一個點 2->一個支線 有兩個點
11/15 22:02, 2F

11/15 22:04, , 3F
四條支線共交一個圓心點 每條線之間的角度都任意
11/15 22:04, 3F

11/15 22:05, , 4F
所以 1122 1221 2211 2112 都是相同的
11/15 22:05, 4F

11/15 22:06, , 5F
我用各位的程式 列出所有組合 再用人工篩選 感覺蠻有趣
11/15 22:06, 5F

11/15 22:09, , 6F
可以想想像 上面4組都是同一個圖形 但是算起的起點不一樣
11/15 22:09, 6F

11/15 22:09, , 7F
再次謝謝各位 沒有你們我作業做不出來 之前有失敗兩次 呵呵
11/15 22:09, 7F
文章代碼(AID): #1Gba6R-J (Python)
討論串 (同標題文章)
文章代碼(AID): #1Gba6R-J (Python)