Finden Sie bei einer Liste von Zahlen alle Matrizen so, dass jede Spalte und Zeilensumme bis zu 264 SummePython

Python-Programme
Anonymous
 Finden Sie bei einer Liste von Zahlen alle Matrizen so, dass jede Spalte und Zeilensumme bis zu 264 Summe

Post by Anonymous »

Nehmen wir an, ich habe eine Liste von 16 Zahlen. Mit diesen 16 Zahlen kann ich verschiedene 4x4 -Matrizen erstellen. Ich möchte alle 4x4 -Matrizen finden, in denen jedes Element in der Liste einmal verwendet wird und wo die Summe jeder Zeile und jedes Colum 264 entspricht.

Code: Select all

numbers = [11, 16, 18, 19, 61, 66, 68, 69, 81, 86, 88, 89, 91, 96, 98, 99]

candidates = []
result = [x for x in itertools.combinations(numbers, 4) if sum(x) == 264]
< /code>

result
wird zu einer Liste, in der jedes Element eine Liste mit 4 Elementen ist, in der die Summe der 4 Elemente = 264. Ich betrachte diese als meine Zeilen. Dann möchte ich alle Permutationen meiner Zeilen nehmen, da Addition kommutativ ist. < /P>

for i in range(0, len(result)):
candidates.append(list(itertools.permutations(result)))
< /code>

Now given all my possible rows where the sum is 264. I'd like to choose all combinations of 4 rows, such that every column's sum is 264.

test = []
for i in range(0, len(candidates)):
test = test + candidates
result2 = [x for x in itertools.combinations(test, 4) if list(map(add, x[0], list(map(add, x[1], list( map(add, x[2], x[3])))))) == [264, 264, 264, 264]]
< /code>

Is there a faster/better way? The last part, finding all combinations of 4 rows, takes a lot of time and computer power.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post