Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi 00, 01, 10, 11....Kombinationen (https://www.delphipraxis.net/95167-00-01-10-11-kombinationen.html)

Telefonkabel 2. Jul 2007 14:34


00, 01, 10, 11....Kombinationen
 
Hy!
Ich möchte aus einer gegebenen Menge, alle Kombinationsmöglichkeiten ermitteln.
Also, wenn ich z.B. meinem Programm eine 3 übergeben, möchte ich, dass er alle Kombinationen folgender Art und Weise ermittelt:
000
001
100
.
.
.
etc.

bei 4:
0000
1000
.
.
.usw.


Wie macht man sowas?
Wäre toll, wenn ihr mit helfen könntet.


MfG
Telekab.

Phoenix 2. Jul 2007 14:38

Re: 00, 01, 10, 11....Kombinationen
 
Hrm.

Also ich würde hergehen und in einer For-Schleife von i = 0 bis 2^n (n ist die Eingegebene Zahl) durchlaufen lassen.

Dann müssten nur noch für alle i's das Bitmuster ausgegeben werden. Sowas wie BitToString müsste recht easy zu bauen sein.

Ultimator 2. Jul 2007 14:42

Re: 00, 01, 10, 11....Kombinationen
 
Sowas nennt sich Permutationen. Und wenn man weiß, wonach man suchen muss, findet man das hier aus der CL: http://www.delphipraxis.net/internal...ct.php?t=74277

Mfg Ultimator

Der_Unwissende 2. Jul 2007 15:18

Re: 00, 01, 10, 11....Kombinationen
 
Zitat:

Zitat von Phoenix
Also ich würde hergehen und in einer For-Schleife von i = 0 bis 2^n (n ist die Eingegebene Zahl) durchlaufen lassen.

Dann müssten nur noch für alle i's das Bitmuster ausgegeben werden. Sowas wie BitToString müsste recht easy zu bauen sein.

Man kann auch gleich (für dieses Beispiel) einen binären Zähler bauen, so schwer ist das ja nun nicht. Der String hat eine feste Länge (eben n). Du fängst bei n*0 an und addierst 1, dass ganze machst 2^n - 1 mal (die erste Belegung n*0 hast Du ja schon!). Jetzt musst Du nur schauen, ob das Array an der aktuellen Stelle schon 1 ist, wenn ja, dann wird es 0 gesetzt und zum nächst höheren Bit wird 1 addiert.

Gruß Der Unwissende

Corpsman 2. Jul 2007 15:56

Re: 00, 01, 10, 11....Kombinationen
 
das stimmt so aber nicht | Permutationen | einer N stelligen Binärzahl ist <> 2^N !!

TheAn00bis 2. Jul 2007 16:16

Re: 00, 01, 10, 11....Kombinationen
 
Bitmasken!

Hab das mal in Java so gemacht:

Code:
    private void test()
    { 
        int max = 4;
       
        for(int i = 0; i < (1 << max); i++)
        {
            for (int j = 0; j < max; j++)
            {
                if ((i & (1 << j)) != 0)
                {
                    System.out.print(j+1);                  
                }
            }
                System.out.println();
        } 
    }
Die Ausgabe wäre dann:

Zitat:

1
2
12
3
13
23
123
4
14
24
124
34
134
234
1234

mkinzler 2. Jul 2007 16:38

Re: 00, 01, 10, 11....Kombinationen
 
Allgemein: Kombinatorik


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz