Hallo,
ich stoße aktuell auf ein kleines, vermutlich kombinatorisches, Problem:
Grundsätzlich gehts um Lotto 6aus49.
heißt , es werden eine Anzahl Kugeln aus einer Trommel mit Kugeln gezogen, auf denen die Zahlen 1-49 stehen.
Jede zahl kommt nur einmal vor, wir ziehen ohne Zurücklegen.
Lotto halt.
Jedenfalls kann man, wenn bspw. die zahlen 49,7,13,22,41,6 gezogen werden, dies als aufsteigend sortiertes 6Tupel schreiben:
(6,7,13,22,41,49)
auf diese Weise habe ich einerseits eine Liste A mit allen aufsteigend sortierten 6Tupeln, die vorkommen können
((also alle Tupel von (1,2,3,4,5,6) bis (44,45,46,47,48,49)).
gleichermassen kann man eine Liste B aller möglichen 3Tupel bauen ((1,2,3) bis (47,48,49)).
Konkret ist nun mein Problem folgendes:
ein 3Tupel aus B sei vorgegeben.
Wie kann ich nun explizit alle 6Tupel finden und angeben, die jenes 3Tupel enthält?
Sagen wir bspw. wir haben das 3Tupel (3,14,27)
so wenn wir uns das ganze als Klötzchenspiel vorstellen, haben wir also einen klotz mit 3 drauf, einen klotz mit 14 und einen mit 27.
da wir ja 6tupel wollen, sind noch 3 weitere klötze nötig, auf denen für den moment nur a,b,c stehen.
was a,b,c sein kann, wird gleich thema sein.
jedenfalls kann man nun einerseits hingehen und die 6 klötzchen wie folgt positionieren:
_ 3 _ 14 _ 27 _
man beachte die 4 _ .
das sind 4 stellen, an denen 0 oder mehr der 3 mysteryklötze a,b,c liegen können.
also könnten wir bspw.
a 3 14 b c 27 haben
oder 3 c 14 b 27 a.
oder ähnliches.
es geht mir gerade nur drum, wo überhaupt man vor hinter oder zwischen den 3 bekannten zahlen man die 3 mysteryklötze reinpacken kann. (insofern ist egal ob wir jetzt 3 c 14 b 27 a oder 3 b 14 a 27 c schreiben, es geht nur drum dass an position 2,3 und 4 je 1 block liegt).
Für jede dieser konfiguration müssen wir nun aber auch gucken, was überhaupt eingefügt werden darf.
bei 3 14 a b 27 c
darf, weil das ganze ja eine aufsteigend sortierte 6stellige zahl sein sein,
darf der block a b nur einem der 2tupel (15,16) bis (25,26) entsprechen.
weil das das einzige ist, was an den stellen reinpasst um die aufsteigende gesamtsortierung beizubehalten.
c wiederum darf 28<=c<=49 sein.
so können wir alle zahlen für die 3 14 a b 27 c stellung finden.
gleiches müsste man für alle anderen konfigurationen machen.
So ist das aber nur blindes brute force durchprobieren.
Kann man das ganze etwas systematischer machen? :-/
EDIT vom 26.05.2022 um 19:42:
Rework wiel zu lang und umständlich geschrieben:
TL;DR:
Angenommen es gibt , wie beim Lotto 6aus49, einen Topf mit Kugeln 1-49. Es seien schon 3 bestimmte Zahlen,
bspw. (7,13,42) gezogen worden. Nun sollen noch 3 weitere Zahlen gezogen um dann eben ein 6Tupel zu erhalten.
Ich will am Ende eine Liste mit allen entsprechenden 6Tupel haben, die die 3 vorgegebenen Zahlen enthalten.
Jedes der 6Tupel sollte aufsteigend sortiert sein , so wie beim lotto die 6 Gewinnzahlen ja auch aufsteigend angegeben werden.
Wie kann ich mir, im Sinne von Programmieralgorithmus, so eine Liste am Einfachsten bauen? :-)
kann natürlich sein dass das Ganze eigentlich sehr viel einfacher machbar ist und ich da nur viel zu kompliziert denke :-)
Oder ich nur scheiße im Erklären bin.
Oder beides :-) ─ densch 26.05.2022 um 19:28