begrenzte variablen --> alle möglichen Kombinationen?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

dominik

Betreff: begrenzte variablen --> alle möglichen Kombinationen?

BeitragMo, Jul 05, 2004 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
wie bastel ich ne rutine die mir aus 4 verschiedenen variablen alle möglichen kombinationen heraussucht.
(ich weill keinen fertigen code sonder ne idee, hilfe)
hab natrülich auch nix gegen code *gg*

Michi1988

BeitragMo, Jul 05, 2004 22:29
Antworten mit Zitat
Benutzer-Profile anzeigen
anzahl der verschiedenen möglichkeiten (a,b,c,d) ^ Plätze nebeneinander (a,b,d,c ; a,b,c,d)
 

walski

Ehemaliger Admin

BeitragDi, Jul 06, 2004 1:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist so nicht ganz korrekt Smile
Was du suchst ist, wenn ich es richtig verstanden hab, eine Permutations-Darstellung. Die Anzahl der Elemente der Permutation errechnet sich nicht potentiell sondern fakultativ... also

Fakultät der Anzahl der Elemente. Bei 4 Elementen ergeben sich also 4*3*2*1 = 24 Möglichkeiten.

Ich habe lange gesucht, um einen Weg zu finden, das ganze darzustellen (über Bäume etc etc) aber ich hab leider keinen gefunden.
Also machte ich mich auf den Weg durchs WWW und fand tatsächlich einen VB code, den ich dreist geklaut und konvertiert hab.

Hier ist er:

Code: [AUSKLAPPEN]

Dim intPositionArray(100)

Function LexicographicPermutations(strString)
    Local strPermutation$
   
    ;Initialise the position array.
   uB = Len(strString) - 1
   
    For i = 1 To Len(strString)
        intPositionArray(i - 1) = i
    Next

    ;Get Each permutation.
    Repeat
        ;DoEvents
        If bolCancel Then Goto Finish

        i = uB
   
        ;Loop through the permutation position array And reorder it.
        While intPositionArray(i - 1) >= intPositionArray(i)
            i = i - 1
            If i = 0 Then Goto Finish
        Wend
   
        j = uB + 1
   
        While intPositionArray(j - 1) <= intPositionArray(i - 1)
            j = j - 1
        Wend
   
        ;Swap (i-1) And (j-1).
        intTemp = intPositionArray(i - 1)
        intPositionArray(i - 1) = intPositionArray(j - 1)
        intPositionArray(j - 1) = intTemp
   
        i = i + 1
        j = uB + 1
       
        While i < j
            ;Swap (i-1) And (j-1).
            intTemp = intPositionArray(i - 1)
            intPositionArray(i - 1) = intPositionArray(j - 1)
            intPositionArray(j - 1) = intTemp
            i = i + 1
            j = j - 1
        Wend
   
        ;Set the permutation.
        strPermutation = ""
        For i = 0 To uB
            strPermutation = strPermutation + Mid$(strString, intPositionArray(i), 1)
      

        Next

       Print strPermutation
       
    Forever
   
   .Finish
   
End Function


LexicographicPermutations("1234")


Die Dimensionierung auf 100 Felder (ganz oben) ist sicherlich unschön, aber was solls Smile
Ich habe mir eben auch nicht mehr dir Mühe gemacht das zu verstehen, es ist einfach zu spät dafür!

Ehre wem Ehre gebührt, hier der Link zum Original:

http://www.planet-source-code....p;lngWId=1

So, viel Spaß damit.
Das ganze solltest du jetzt ja recht fix so umschreiben können, das es auch beliebig lange Zeichenketten oder was auch immer aneinander reiht.

Joa, gute Nacht und ich hoffe du gibst dir beim Verstehen mehr Mühe als ich und lernst auch was daraus Very Happy

walski
buh!

Michi1988

BeitragDi, Jul 06, 2004 11:13
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe gedacht jede Zahl darf so oft dran kommen wie sie will.
wie die möglichkeiten mit Bits.

00 01 10 11

also 4 möglichkeiten. dann wäre es bei mir richtig: 2(möglichkeiten (1 oder 2)) ^2 (stellen: ab)

wen jede Zahl nur einmal dran kommen darf na klar. Fakultät
!2 ist dann 2

10 01

Nur mal so nebensächlich Shocked
Michi

dominik

BeitragDi, Jul 06, 2004 15:32
Antworten mit Zitat
Benutzer-Profile anzeigen
wo ist hier die zu erfüllende Bedingung?
Code: [AUSKLAPPEN]
If bolCancel Then Goto Finish


danke walski das ises(fast) Very Happy
denn hier werden die möglichkeiten das nicht immer alle zahlen verwendet werden müssen nicht bedacht.

hab aber noch nich ganz verstanden

DC

Sieger des B2D Retro Wettbewerb / Aug 04

BeitragDi, Jul 06, 2004 15:40
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn da nichts mehr steht wird geprüft ob es true ist, also 1
Core i5 4670K | 4 x 3,40 GHZ | 16 GB Ram | GeForce GTX 960 | HTC Vive | Win 10 Pro
www.UnrealSoftware.de | www.StrandedOnline.de | www.CS2D.com |
www.CarnageContest.com | www.Stranded3.com

Markus2

BeitragDi, Jul 06, 2004 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
@dominik

Man könnte die Schleife von außen abbrechen darum stand
da wohl auch DoEvents drin , also z.B. wenn man nen Stop
Knopp drückt wird ein (Click) Event durchgelassen was diese Variable setzt .

Eigentlich gibt es in VB auch Exit Do ...
 

walski

Ehemaliger Admin

BeitragDi, Jul 06, 2004 20:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie gesagt, war nur eine quick&dirty Konvertierung ohne jeden Gedanken Smile

Ich war zu müde.

walski
buh!

Triton

BeitragMi, Jul 07, 2004 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
VERSCHOBEN nach Allgemein.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group