![]() |
Kombinations - Möglichkeiten
Ich möchte gerne von zwei verschiedenen Werten alle Kombinationsmöglichkeiten haben.
Also, ich habe z.B zwei Werte. Jeder dieser Werte kann a oder b sein. Dann möchte ich gerne alle Kombinationen angezeigt bekommen also: aa ab ba bb Gibt es dafür irgendwelche functionen? Ich wollte so an die Sache herangehen:
Code:
1. Frage: Eine Möglich keit um 2 hoch 2 zu rechnen. Also etwas um eine Rechnung
var Teil1,Teil2:Array[1..2] of String;
Teil1[1] := 'a'; Teil1[2] := 'b'; Teil2[1] := 'a'; Teil2[2] := 'b'; Dann könnte man folgenden machen:
Delphi-Quellcode:
Wie kann ich jetzt diese Arrays füllen?
Anzahl der Möglichkeiten --> adm
var moeglichkeiten: array of string; SetLength(dynArray, adm); Bei 4 Möglichkeiten ist es noch einfach im Kopf zu machen aber bei 10 hoch 10, wäre es schon komplizierter, daher brauche ich eine Function, die so etwas kann (auch mit mehreren Möglichkeiten)!!! Gibt es schon Functionen oder Tutorials??? Danke im Voraus Nicolai [edit=sakura] Zu langer Titel *G* Mfg, sakura[/edit] |
Re: Kombinationsmöglichkeiten
Such mal mit Google nach Kombinatorik und Permutation, das sind die Fachbegriffe. Es sollten dabei einige Formeln bei rausspringen. Alternativ kannst du, wenn du hast, auch in einer mathematischen Formelsammlung unter den obigen Begriffen nachschlagen.
|
Re: Kombinations - Möglichkeiten
vieles aus der Kombinatorik laeßt sich mit der Fakultät berechnen
aber das hattest du in der schule bestimmt noch nicht. 1! =1 2! = 2 * 1 = 2 3! = 3 * 2 * 1= 6 n! = n! * (n-1)! * ... * 1 = z.B 6 Schüler sollen zu viert in der Halle Fussball spielen. Wieviele verschiedene Vierer Teams kann man daraus machen? 1) Antwort ( 6! / 2! ) / 4! = 15 verschiedene Teams würde man jetzt noch sagen die Positionen spielten eine Rolle und nicht nur die Anzahl wären es mehr (6! / 2!) das ist im übrigen auch die formel für beim Lotto die Chance auf einen sechser zu berechnen 1 / ((49! / 43!) / 6!) |
Re: Kombinations - Möglichkeiten
Hallo Nicolai,
Potenzen kann man mit der Funktion Power aus der Unit Maths berechnen. Beachte, dass das Ergebniss als Real gespeichert wird. Das Auflisten aller Möglichkeiten mit einer Anzahl von Zeichen und einer Anzahl von Stellen entspricht ziemlich genau dem Zählen. Ersetzt du in deinem Beispiel das a gegen 0 und b gegen 1, dann hast du in deinem Beispiel binär von 0 bis 3 gezählt. Diesen Gedanken kannst du für dein Problem benutzten: Nimm eine Schleife (for schleife über den Index des Arrays, denn du füllen willst, in deinem Fall 'moeglichkeiten'). Du fängst an un setzt die erste Variable des Arrays auf 'aaaaa....aaa', so viele a's wie du Stellen hast. Bei jedem Schleifendurchlauf tust du nun folgendes: Nimm das letzte Zeichen und ersetzte es durch das in der Reihenfolge nächste, also a durch b, e durch f usw... Falls an dieser Stelle das letzte Zeichen in deiner Reihenfolge steht (wenn du 10 Zeichen hast wäre das das j), dann ersetzt du dieses Zeichen durch das erste Zeichen (a) und erhöhst dafür das Zeichen in der Stelle davor um einen. So wird 'aaa' zu 'aab' und 'aaj' wird zu 'aba'. So bekommst du alle Möglichkeiten, die es gibt in geordneter Form in das Array rein. Hoffe, ich hab mich verständlich ausgedrückt. Grüße Seniman |
Re: Kombinations - Möglichkeiten
ich habs anders gemacht nud zwar mit drei stringlists!
erstmal zum prinzip:
Code:
jetzt bildest du einfach die kombinationen, indem du aus der ersten reihe die buchstaben
|a b c d e
------------------ a | b | c | d | e | nach unten setzt:
Code:
die ergebnisse setzt du jetzt in die linke spalte die dann so aussieht:
|a b c d e
------------------ a |aa ab ac ad ae b |ba bb bc bd be c |ca cb cc cd ce d |da db dc dd de e |ea eb ec ed ee
Code:
jetzt holst du wieder die buchstaben aus der ersten zeile usw usw.
a
b c d e aa ab ac ad ae ba bb bc ... die drei stringlists: 1. zeile, linke spalte und der ergebnisbereich! kapiert? is ne recht einfache möglichkeit! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz