上下文 - 用於確定潮流網絡中環路流的開發算法。通過唯一反轉的絕對條件對列表進行排序列表
問題:
我有一個列表的列表,每個列表表示通過我的算法來確定網絡中的循環。不幸的是,該算法也將挑選出相反的副本。
即
L1 = [a, b, c, -d, -a]
L2 = [a, d, c, -b, -a]
(請注意,C必須不爲負,這是正確的,由於作爲寫入網絡的結構和定義的流程)
現在這兩個循環是等價的,只是遵循整個網絡的逆向結構。
我希望保留L1,同時丟棄列表中的L2。 因此,如果我有6個循環的列表,其中3個是反向重複的,我希望保留所有三個循環。
此外,循環不必遵循上面指定的格式。它可以更短,更長,並且標誌結構(例如pos pos pos neg neg)不會在所有情況下發生。
我一直試圖通過顛倒列表和比較絕對值來對此進行排序。
我完全難住,任何援助將不勝感激。
根據mgibson提供的一些代碼,我可以創建以下內容。
def Check_Dup(Loops):
Act = []
while Loops:
L = Loops.pop()
Act.append(L)
Loops = Popper(Loops, L)
return Act
def Popper(Loops, L):
for loop in Loops:
Rev = loop[::-1]
if all (abs(x) == abs(y) for x, y in zip(loop_check, Rev)):
Loops.remove(loop)
return Loops
此代碼應該運行,直到沒有剩下的循環每次丟棄重複。我接受mgibsons的答案,因爲它提供了必要的密鑰創建解決方案
如果這是一個面試問題或功課,請將其標記爲這樣,所以我們不會給出答案。 – ely
不應該有一個'-c'? –
不一定。如果節點的數量是奇數,那麼它的中位數實際上就是其中的一個節點。按照慣例,它可以始終列出從開始到中位數的所有內容爲正數,並且只將後中位數列爲負數。 – ely