0

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? :-)

 

gefragt

Student, Punkte: 286

 

1
Nur so als Rückmeldung: Deine Fragen scheinen nicht uninteressant, aber mich persönlich schreckt Deine Darstellung völlig davon ab mich damit zu beschäftigen. Unstrukturiert, unnötige Füllworte, keine präzisen Angaben, Rechtschreibung, und Unmengen an Leerzeilen und Umbrüchen, so dass man ständig gefühlte Kilometer rauf und runterscrollen muss beim Lesen.   ─   mikn 26.05.2022 um 12:58

Naja, ich habe halt (im anderen Thgema) lang und breit das programmiertechnische Vorgehen beschrieben, wie ich versuchen würde, meine Lsite immer weiter zu verbessern.
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

1
Es geht hier nicht um inhaltliches, soweit komme ich ja gar nicht, weil es für mich unlesbar wird. Gründe s.o.   ─   mikn 26.05.2022 um 19:31

das mit den vielen Umbrüchen kann dran liegen dass ich gewohnheitsmässig für einen Umbruch shift+enter drücke.
Weil ich es von miserabel gebauten Seiten und Apps gewohnt bin dass man, wenn man was schreibt und enter drückt zum zeilenumbruch, ungewollt der Mist gleich abgeschickt wird und es daher mitten im Textschreiben shcon ungewollt abgeschickt wird. daher habe ich mir das shift+enter angewöhnt, wo ich die gefahr nicht eingehe.

Aber gut, kann auch normale Umbrüche mit Enter machen, wenn es das besser lesbar macht :-)
  ─   densch 26.05.2022 um 19:44
Kommentar schreiben
1 Antwort
0
Vermutlich habe ich die Frage nicht ganz richtig verstanden aber: 

Gegeben \((3,14,27)\), könnte man doch einfach aus den restlichen \(\{1,2,\ldots,49\}\setminus\{3,14,27\}\) sich \(3\) Elemente nehmen und anschließend der Größe nach sortieren.

Deine angegebene Positionierung ergibt auch nicht so wirklich Sinn, denn man kann ja auch z.B. \(42,43,44\) betrachten und dann sind deine Stellen zwangläufig alle "hinter" der \(27\).
Diese Antwort melden
geantwortet

Student, Punkte: 645

 

Kurzum: Ich will mir alle 6Tupel bauen, in denen bspw. das Tupel (3,14,27) vorkommt.
Frage ist nur das Wie :-/
  ─   densch 26.05.2022 um 17:31

Du bildest alle 3 Tupel aus den übrigen Zahlen und setzt dann einfach beide Tupel zusammen. Sortieren kann man ja dann im Anschluss. Ich finde deine Denkweise teilweise recht kompliziert (auch deine andere Frage schon betreffend).   ─   cauchy 26.05.2022 um 17:43

Klar, die Menge an "übrigen" Zahlen lässt sich finden, klar.
Aber wie setze ich die dann zusammen?


Kann sein, dass es umständlich ist, ich steige generell selbst nur gerade mal so beim Thema durch :-)

Will mir halt ein Computerprogramm bauen und dieses "finde eine minimale Liste an 6Tupeln, die garantiert 3 Richtige bringt" ist recht umständlich für mich zu durchblicken wie man das machen könnte :-)
  ─   densch 26.05.2022 um 19:26

Ich sage ja, ich denke einfach zu kompliziert.
Ich wollte erst alle möglichen positionen für die 3 fehlenden Nummern finden und dann jeweils guckenw as wo reinpasst und so weite,r viel zu umständlich.
Einfach 3 zahlen aus {1,2,…,49}∖{3,14,27} ziehen, mit dne anderen zu nem 6Tupel zusammenpacken
und dann kann mans ja sortieren und aht auch das Gewünschte.

ich wollte erst die positionen ermitteln und dann die mögliche zahlen, dabei ist es viel eifnacher erst die zahlen zu suchen und dann zu sortieren, wodurch die ja automatisch dort reinfallen wo es passt...

Ich mache mir das Leben manchmal einfach zu schwer, viel zu schwer :-/
  ─   densch 26.05.2022 um 19:59

1
Ich weiß nicht, wie du Tupel in deinem Programm umsetzt, aber programmiertechnisch steckt doch nicht viel dahinter. Wenn du Arrays nutzt, machst du einfach einen neuen Array.   ─   cauchy 26.05.2022 um 21:55

Kommentar schreiben