Rekursiv Script

  • wie dir da schon gesagt worde, geh zur job börse im forum hier .

    Edit: oh Voll überlesen nur auch wen er hier ist es heist nicht JOB börse weil ma hier alles um sonst macht

    Einmal editiert, zuletzt von Taxfir (13. Mai 2010 um 23:10)

  • so weit bin ich schon, villt kann jmd anderes weitermachen:
    es kommen schon die richtigen einträge, allerdings nicht die richtige anzahl, damit lässt sich aber schon arbeiten...

    Spoiler anzeigen
    [autoit]

    Global $rekursiv[7][4] = [ ["a","b","c"], _ ; a ist das Land, b der Weg zum Land b, c der Weg zum Land c
    ["b","a","t"], _ ; b ist das Land, a der Weg zum Land weil man ja von a zu b kommt, t der Weg zum Land t
    ["c","a","f"], _ ; sihe oben ^^
    ["h","t","k","l"], _ ; u.s.w.
    ["l","h"], _
    ["k","h","t"], _
    ["t","f","k","z"]], $landweg[3]
    Global $rekursiv2DIndexCounts = _ArrayGet2DLenght($rekursiv, 0, 1)
    #include <Array.au3>
    _ArrayDisplay($rekursiv2DIndexCounts)
    $anzahlmoeglichkeiten = 3
    $deinland = InputBox("Dein Land?", "Gebe hier deinen Buchstaben" & @CRLF & "deines Landes ein:", "h") ; Kann man ja bestimmen wie man will...

    [/autoit] [autoit][/autoit] [autoit]

    If @error Then Exit

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($rekursiv) - 1
    If $deinland = $rekursiv[$i][0] Then ; Wenn dein Land dem Index entspricht
    If $rekursiv2DIndexCounts[$i] > 0 Then $landweg[0] = $rekursiv[$i][1] ; Wenn eine Wegmöglichkeit
    If $rekursiv2DIndexCounts[$i] > 1 Then $landweg[1] = $rekursiv[$i][2] ; Wenn zwei Wegmöglichkeiten
    If $rekursiv2DIndexCounts[$i] > 2 Then $landweg[2] = $rekursiv[$i][3] ; Wenn drei Wegmöglichkeiten
    $anzahlmoeglichkeiten = $rekursiv2DIndexCounts[$i]
    ExitLoop
    EndIf
    Next
    If $anzahlmoeglichkeiten = 1 Then
    MsgBox(0, "Deine offenen Wege: ", "Von deinem Land (" & $deinland & ") zu Land " & $landweg[0] & ".")
    ElseIf $anzahlmoeglichkeiten = 2 Then
    MsgBox(0, "Deine offenen Wege: ", "Von deinem Land (" & $deinland & ") zu Land " & $landweg[0] & "." & @CRLF _
    & "Von deinem Land (" & $deinland & ") zu Land " & $landweg[1] & ".")
    Else
    MsgBox(0, "Deine offenen Wege: ", "Von deinem Land (" & $deinland & ") zu Land " & $landweg[0] & "." & @CRLF _
    & "Von deinem Land (" & $deinland & ") zu Land " & $landweg[1] & "." & @CRLF _
    & "Von deinem Land (" & $deinland & ") zu Land " & $landweg[2] & ".")
    EndIf
    Func _ArrayGet2DLenght($a2DArray, $iStartIndex, $iStartCol) ; Durchsucht jede Col nach Buchstaben von A-Z und trägt dafür +1 ein
    Local $aSeach[27] = [26,"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"], $i2DDim = 0, $sFor2DArray
    For $i = $iStartIndex To UBound($a2DArray) - 1 ; Index "abgrasen"
    For $iI = $iStartCol To UBound($a2DArray, 2) - 1 ; Cols "abgrasen"
    For $iII = 1 To $aSeach[0] ; Plattern durchgehen
    If $a2DArray[$i][$iI] = $aSeach[$iII] Then ; Wenn Buchstabe gefunden wurde
    $i2DDim += 1
    $iII = $aSeach[0]
    ElseIf $a2DArray[$i][$iI] = "" Then ; Wenn Leerstelle gefunden wurde... (auf keinen Fall efizient, aber für diesen Fall ok)
    $iII = $aSeach[0]
    EndIf
    Next
    If $iI = UBound($a2DArray,2) - 1 Then $sFor2DArray &= $i2DDim & "|" ; String mit Ergebnissen erstellen
    Next
    Next
    Dim $a2DDimLenght = StringSplit($sFor2DArray, "|", 1) ; String zur Array Trimmen und
    ReDim $a2DDimLenght[UBound($a2DDimLenght) - 2] ; dann ausbessern (Array direkt machen gab einen Error -.-)
    Return $a2DDimLenght ; Ergebnis: Array mit Anzahl der Länge jeder individuellen Col (geht nur mit einzelnen Buchstaben von A-Z, etwas allgemeineres habe ich noch nicht)
    EndFunc

    [/autoit]