• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Kombinationen erstellen

yss

Mitglied
Hey
Ich versuche gerade ein JS-Script zu schreiben, welches mir alle Zahlenkombis von 1-4 erstellt, also z.B. 1114, 1324, 1334 usw...
Nur leider weis ich nicht wie ich das ganze machen soll, also mit dem überprüfen, ob ich die Zahlenkombi schon habe und ob es sich "lohnt", das ganze in ein Array zu schreiben und dann in einer Schleife immer eine neue Kombi erzeugen, dann überprüfen ob es jene schon im Array gibt und wenn nicht die neue Zahlenkombi dem Array hinzufügen. Bin ich da auf dem richtigen weg?
 
Hab das jetzt hier, aber der browser hängt sich immer auf:
HTML:
function creatNumber( min, max ) {
			if( min > max ) {
			return( -1 );
			}
			if( min == max ) {
			return( min );
			}
 
        	return( min + parseInt( Math.random() * ( max-min+1 ) ) );
		}
		
	function test(){
		var array = new Array();
		var status = 0;
		/*for (var i = 0; i < array.length; i++){
			if(i == "256"){
				var status = 1;
			}
		}*/
		
		while(status == 0){
	
		var number1 = creatNumber(1,4);
		var number2 = creatNumber(1,4); 
		var number3 = creatNumber(1,4);
		var number4 = creatNumber(1,4);
		
		var number1 = number1.toString();
		var number2 = number2.toString();
		var number3 = number3.toString();
		var number4 = number4.toString(); 
		
		var combi = number1+number2+number3+number4;
		//alert(combi);
		
		//Ist diese Zahlencombi schon da?
		for (var i = 0; i < array.length; i++){
			if(array[i] == combi){
				//NUll
			}else{
				array.push(combi);
			}
		}
		
		if(array.length == "265"){
			alert("Fertig");
			status = 1;
		}
		
		}
		
	}
 
Code:
function createNumber( min, max ) {
			if( min > max ) {
			return( -1 );
			}
			if( min == max ) {
			return( min );
			}
 
        	return( min + parseInt( Math.random() * ( max-min+1 ) ) );
		}

function test()
{
    var arr = [], maxNumbers = 4;
    for (var i = 0, num; i < maxNumbers; i++) {
        do {
            num = createNumber(1,4) * 1000 +
                  createNumber(1,4) * 100 +
                  createNumber(1,4) * 10 +
                  createNumber(1,4) ;
        } while(arr.indexOf(num) > -1);
        arr.push(num);
    }

    console.log(arr);
}
 
Hilfe. Na, immerhin ohne Rekursion. ;)

Code:
function getPermutations(values, n)
{
    function rec(values, ret, n, cur)
    {
        if (n > 0) {
            for (var i = 0; i < values.length; i++) {
                var newCur = cur.slice(0); // Clone array
                newCur.push(values[i]);
                rec(values, ret, n - 1, newCur);
            }
        } else {
            ret.push(cur);
        }
    }

    var ret = []
    rec(values, ret, n, []);
    return ret;
}

var values = [1, 2, 3, 4],
    n      = 3,
    ret    = [];

ret = getPermutations(values, n);

console.log(ret);
 
Zurück
Oben