2

I'm trying to make a JavaScript that calculate all possible letter combinations.

I've made this so far:

    var input = window.prompt("What to calculate?", "");
    var letters = input;
    var combi = [];
    var temp = "";
    var letLen = Math.pow(2, letters.length);
    for (var i = 0; i < letLen; i++){
        temp = "";
        for (var j = 0; j < letters.length; j++){
            if ((i & Math.pow(2, j))){
                temp += letters[j];
            }
            if (temp !==""){
                combi.push(temp);
            }
        }
    document.write(combi.join(" "));
    alert(combi.length);

The result is: r g rg b rb gb rgb

However, there are more possible combinations like bgr brg br gr bg

What do I have to chance in my code to show all possible combinations and not some of them?

Thanks in advance.

Taylor Jones
  • 153
  • 1
  • 10
vweltje
  • 293
  • 1
  • 7

1 Answers1

1

Probably not the most efficient way..

function permute(str) {
    var s, c, i, e, n, ce = [];
    if (str) {
        for (i = 0; i < str.length; ++i) {
            c = str.charAt(i);
            s = str.slice(0, i) + str.slice(i + 1);
            ce.push(c); // comment out this line if you always want every char
            if (s) {
                e = permute(s);
                for (n = 0; n < e.length; ++n) {
                    ce.push(c + e[n]);
                }
            }
        }
    }
    return ce;
}

permute('rgb');
/*
  [
      "r", "rg", "rgb", "rb", "rbg",
      "g", "gr", "grb", "gb", "gbr",
      "b", "br", "brg", "bg", "bgr"
  ]
*/
Paul S.
  • 64,864
  • 9
  • 122
  • 138