I’m confused as to why the permutations array contains nothing in it still. Here is my code, someone please help:
var regExp =/(.)\1+/g;
function permAlone(str) {
var newArray = str.split('');
var n = newArray.length;
var permutations = [];
function swap(index1, index2) {
tmp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = tmp;
}
function generate(n, newArray) {
if (n === 1) {
permutations.push(newArray.join(''));
} else {
for(var i = 0; i<n-1; i++) {
generate(n-1, newArray);
if(n % 2 === 0) {
swap(newArray[i], newArray[n-1]);
} else {
swap(newArray[0], newArray[n-1]);
}
}
generate(n-1, newArray);
}
}
return permutations;
}
permAlone('abc');
To strictly answer your question: your generate function is not initially being called.
@icartusacrimea
I changed some stuff around but now it says maximum call size exceeded
var regExp =/(.)\1+/g;
function permAlone(str) {
var newArray = str.split('');
var n = newArray.length;
var permutations = [];
var tmp;
function swap(index1, index2) {
tmp = newArray[index1];
newArray[index1] = newArray[index2];
newArray[index2] = tmp;
}
function generate(n, newArray) {
if (n === 1) {
permutations.push(newArray.join(''));
} else {
for(var i = 0; i<n-1; i++) {
generate(n-1, newArray);
if(n % 2 === 0) {
swap(i, n-1);
} else {
swap(0, n-1);
}
}
generate(n-1, newArray);
}
}
generate();
return permutations;
}
permAlone('abc');
You’re not passing any arguments to generate.
Remember: the solution is number of permutations, not an array of them.
@njanne19 your generate function requires a 2 parameter, n and newArray. You haven’t pass anything in your generate function.
1 Like
@mikeale03 @icartusacrimea
Thanks for the help. I’m aware I’m not logging the length of the arrays, I’m just logging all of the possible permutations to see if it works first. My question now is, how come it logs every permutation twice as often.
Here is my code:
var regex = /(.)\1+/g;
function permAlone(str) {
var newArray = str.split('');
var n = newArray.length;
var permutations = [];
var tmp;
function swap(index1, index2) {
tmp = newArray[index1];
newArray[index1] = newArray[index2];
newArray[index2] = tmp;
}
function generate(n, newArray) {
if (n === 1) {
permutations.push(newArray.join(''));
} else {
for(var i = 0; i<n-1; i++) {
generate(n-1, newArray);
swap(n % 2 ? 0 : i, n-1);
permutations.push(newArray.join(''));
/* if(n % 2 === 0) {
swap(i, n-1);
permutations.push(newArray.join(''));
} else {
swap(0, n-1);
permutations.push(newArray.join(''));
} */
}
generate(n-1, newArray);
}
}
generate(n, newArray);
return permutations;
}
permAlone('aab');