Hallo,
ich werkle mal wieder an meinem Lottoproblem und der bisherige Code ist insofern aktuell performancemässig... miserabel
da der Code ein aufsteigend sortiertes Tripel (a,b,c) (mit a<b<c, 1<=a,b,c<=49) aktuell mit 13 Millionen 6-Tupeln (g,h,i,j,k,l) dahingehend vergleicht ob es darin enthalten ist. (zuzüglich 1-2 weiteren Bedingungen).
Falls dem so ist, dann geht der Code nochmal alle 6-Tupel durch und entfernt darin dieses Tripel.
Und das wieerum wird für ALLE möglichen Tripel gemacht.
Kurzum, es werden so ca. 2*(49 über 3)*(49 über 6)=515275651968 Vergleiche gemacht, was einfahc nur lächerlich hoch ist, was seeehr lange dauert und den Computer zum Abshcmieren bringt.
Um also zumindest ein 3-Tupel nicht 2 mal mit 13 Millionen 6-Tupeln vergleichen zu müssen,
war nun der Gedanke, sich vorab einfach mal zu überlegen, welche 6tupel es denn gibt in denen ein gegebenes 3-Tupel (a,b,c) enthalten sein könnte.
Und nur die dann überprüfen!
Das erscheint mir, als wäre es unter Umständen etwas schneller und effektiver!
Frage ist nur, wie alle möglichen solchen 6Tupel bauen?
Wenn ein 3Tupel (a,b,c) gegeben ist, kann ja das 6Tupel bspw die Formen
(___abc),(a_b_c)(a__bc) und ähnliche haben.
Wie finde ich die am Effektivsten?
Wobei halt die 3 Blnkstellen _ _ _ in und um a b und c verteilt werden müssen.
Ist vermutlich eher eine Frage der Kombinatorik, aber mir fällt nichts Gutes ein wie ich das programmieren kann :-/
ich werkle mal wieder an meinem Lottoproblem und der bisherige Code ist insofern aktuell performancemässig... miserabel
da der Code ein aufsteigend sortiertes Tripel (a,b,c) (mit a<b<c, 1<=a,b,c<=49) aktuell mit 13 Millionen 6-Tupeln (g,h,i,j,k,l) dahingehend vergleicht ob es darin enthalten ist. (zuzüglich 1-2 weiteren Bedingungen).
Falls dem so ist, dann geht der Code nochmal alle 6-Tupel durch und entfernt darin dieses Tripel.
Und das wieerum wird für ALLE möglichen Tripel gemacht.
Kurzum, es werden so ca. 2*(49 über 3)*(49 über 6)=515275651968 Vergleiche gemacht, was einfahc nur lächerlich hoch ist, was seeehr lange dauert und den Computer zum Abshcmieren bringt.
Um also zumindest ein 3-Tupel nicht 2 mal mit 13 Millionen 6-Tupeln vergleichen zu müssen,
war nun der Gedanke, sich vorab einfach mal zu überlegen, welche 6tupel es denn gibt in denen ein gegebenes 3-Tupel (a,b,c) enthalten sein könnte.
Und nur die dann überprüfen!
Das erscheint mir, als wäre es unter Umständen etwas schneller und effektiver!
Frage ist nur, wie alle möglichen solchen 6Tupel bauen?
Wenn ein 3Tupel (a,b,c) gegeben ist, kann ja das 6Tupel bspw die Formen
(___abc),(a_b_c)(a__bc) und ähnliche haben.
Wie finde ich die am Effektivsten?
Wobei halt die 3 Blnkstellen _ _ _ in und um a b und c verteilt werden müssen.
Ist vermutlich eher eine Frage der Kombinatorik, aber mir fällt nichts Gutes ein wie ich das programmieren kann :-/