problem mit einem algorythmus



  • erstmal ein bsp:

    111
    112
    113
    121
    122
    123
    131
    132
    133
    211
    212
    213
    ...
    333
    

    sowas kann man mit 3 schleifen einfach relasieren. aber was ist wenn ich die anzahl der ziffern nich kenne die ich hochzählen lasse?
    wie kann ich eine funktion machen die beliebig viele ziffern (0-120) in einer beliebigen größenordnung (0-26 für chars...) aufzählt?



  • such im internet mal nach 'permutation'



  • Kannst du dir nicht einfach den Sandkasten vorstellen und dort herumtrollen?

    <EDIT>
    Tut mir Leid, habe nur kurz die Zahlenreihe überflogen, das nächste Post mit Permutation gesehen und nicht mitgedacht.
    </EDIT>





  • Christoph K. schrieb:

    Kannst du dir nicht einfach den Sandkasten vorstellen und dort herumtrollen?

    😕 😕 😕 😕 😕



  • immigrant schrieb:

    such im internet mal nach 'permutation'

    Naja, Permutation wäre hier etwas anderes.
    Das hier

    123
    132
    213
    231
    312
    321
    

    wäre eine Permutation.



  • nicht das ich sentimental wäre aber

    Kannst du dir nicht einfach den Sandkasten vorstellen und dort herumtrollen?

    das war genein.

    und permutationen sind etwas anderes, da lediglich die positionen der ziffern eine rolle spielen. ich wollte einfach nur mal vergleichen ob es schneller ist durch einen zufallsalgo oder durch lineare lösung zum ziel zu kommen.

    void bruteforcer::set_cur_passwd(int range, int loop)
    {
    //lineare methode
    	int range_grNm = 26;
    
    	int *char_array;
    	char_array = new int[range];
    
    	for(int i = range-1; i >= 0; i--)
    	{
    	for(int j = 0; j < range_grNm; j++)
    	{
    		char_array[i] = j;
    
    		//AUSGABE:
    		for(int i = 0; i < range; i++)
    			cur_passwd += char_array[i]+65;
    		std::cout<<"Derzeitiges Wort: "<<cur_passwd.toStdString()<<std::endl;
    		cur_passwd = "";
    		//AUSGABE ENDE
    	}
    	}
    
    /*//zufällige methode
    	time_t sek;
    	time(&sek);
    	srand(sek);
    
    	while(true)
    	{
    		int i = 0;
    		if(loop)
    		{
    			i++;
    			if(i >= loop)
    				break;
    		}
    
    		for(int j = 0; j < range; j++)
    		{
    			int pos_grS = rand() % 26 + 64 + 1;//+1 für die 0
    			int pos_smS = rand() % 122 + 97;
    			int pos_Num = rand() % 57 + 48;
    
    			char tmp_char = pos_grS;
    			cur_passwd += tmp_char;
    
    			//std::cout<<pos_grS<<std::endl;
    		}
    
    		std::cout<<"Derzeitiges Wort: "<<cur_passwd.toStdString()<<std::endl;
    
    		if(cur_passwd == "ROT")
    		{
    			break;
    			std::cout<<"Passwort gefunden: "<<cur_passwd.toStdString()<<std::endl;
    		}
    
    		cur_passwd = "";
    	}
    */
    }
    

    wobei mir meine lineare methode kummer bereitet, das resultat nicht meiner ziel nahekommt. außerdem muss mir niemand helfen, es war ja nur ne frage gewesen. und von dem existierenden thread wuss ich nichts. 👎



  • harkon schrieb:

    und von dem existierenden thread wuss ich nichts. 👎

    War ja auch kein Vorwurf.


Anmelden zum Antworten