zeichen aus einem pool

  • hi ich möchte in einer schleife verschidene kombinationen durch gehen
    zb. mein zeichen, a,b,c,d,e,...x,y,z und 0,1,2,3,...,9
    und diese zeichen jeweils in einer 3 stelligen kombination alle durchgeht
    also: a,b,c,...,aa,ab,ac,...,ba,bb,..... so halt ungefähr^^
    wie geht das?

    hier ein algemeines bsp:

    Spoiler anzeigen


    String test;
    String[] pool = {"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", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
    for(int i = 0; i < 36; i++) {
    for(int ii = 0; ii < 36; ii++) {
    for(int iii = 0; iii < 36; iii++) {
    test = pool[i] + pool[ii] + pool[iii];
    if(PING(test)) {
    Ausgabe(test + " vergeben.");
    }
    else {
    Ausgabe(test + " frei.");
    }
    }
    }
    }

    • Offizieller Beitrag

    Hmm, so ganz kann ich dir nicht folgen.
    Erst bildest du alle möglichen 3-fach Kombinationen aus Ziffern und Zeichen.
    Was soll in der If-Abfrage passieren? Da alle Kombinationen im Pool sind, hast du immer Übereinstimmung.
    Und Autoit-Code wär nicht schlecht. ;)
    Deinen Code kann ich nur sehr vage deuten, weiß nur dass es kein VB, Cobol oder Turbopascal ist.

  • das is nur sehr grob und von nem freund geschrieben da ich ja keine ahnung habe wie ich das realisieren kann, also wenn dich das bsp verrwirt, was ich verstehe, dann ignorier es ^^

    • Offizieller Beitrag

    Das kannst du doch fast direkt übernehmen!?
    Am Anfang das Array definieren, dann 3 For-Schleifen ineinander von bis UBound($array) -1.
    innen dann zusammenbasteln.

    Allerdings gibt das auch Ergebnisse, wie 111, müsste man dann filtern, wenn man die nicht will.

    peethebee

  • wie gesagt, ich hab keine ahnung was mein beispiel bedeuted, oder könnte das wenigste in autoit umsetzen ^^
    achja 111 macht mir nix soll ja alle möglichen kombinationen machen
    bitte ein autoit bsp posten =D

  • Hi,
    die Befehle heissen ja nicht wirklich anderst in AutoIt als in deinem Bsp... Aber wollen wir mal nicht so sein:

    [autoit]

    dim $pool[37]=["","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", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
    dim $output
    For $i=0 to UBound($pool)-1
    For $j=0 to UBound($pool)-1
    For $k=0 to UBound($pool)-1
    if ($i=0 and $j=0 and $k<>0) Or ($i<>0 and $j <>0) then
    ConsoleWrite($pool[$i] & $pool[$j]&$pool[$k] & @CRLF)
    EndIf
    Next
    Next
    Next

    [/autoit]


    eddy_erpel

    • Offizieller Beitrag

    HI,

    versuch mal dies:

    [autoit]

    $permutarray = permute("1234")
    $msg = ""
    For $n = 1 To $permutarray[0]
    $msg = $msg & $permutarray[$n] & @CRLF
    Next
    MsgBox(0,"", $msg)

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

    Func rotate($sString, $nRotateLevel)
    Local $aStringArray = StringSplit($sString,"")
    Local $nStartRotate = $aStringArray[0] - $nRotateLevel + 1
    Local $n, $tempchar, $tempstr = "", $retval = ""
    For $n = 1 To $nStartRotate - 1
    $tempstr= $tempstr & $aStringArray[$n]
    Next
    $tempchar = $aStringArray[$nStartRotate]
    For $n = $nStartRotate+1 To $aStringArray[0]
    $retval = $retval & $aStringArray[$n]
    Next
    $retval = $tempstr & $retval & $tempchar
    Return $retval
    EndFunc ;==>rotate

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

    Func permute_internal($sString, $nRotateLevel, ByRef $permutations)
    Local $n, $str
    Dim $arr[$nRotateLevel]
    If $nRotateLevel = 2 Then
    $permutations = $permutations & ":" & rotate($sString,$nRotateLevel)
    Return
    EndIf
    $str = $sString
    For $n = 0 To $nRotateLevel -1
    $str = rotate($str,$nRotateLevel)
    $arr[$n] = $str
    ;--- special check, to stop a level beeing printed twice ---
    If not (($n = 0) AND (StringLen($sString) > $nRotateLevel)) Then
    $permutations = $permutations & ":" & $arr[$n]
    EndIf
    permute_internal($arr[$n],$nRotateLevel-1,$permutations)
    Next
    EndFunc ;==>permute_internal

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

    Func permute($sString)
    Global $permutations = ""
    permute_internal($sString,StringLen($sString),$permutations)
    $permutations = StringTrimLeft($permutations,1)
    Return StringSplit($permutations,":")
    EndFunc ;==>permute

    [/autoit]

    So long,

    Mega