Tell us what’s happening:
My code is working on jsfiddle, passing all the tests, here: https://jsfiddle.net/ethanryan/8psh2enk/
But it’s not working on freeCodeCamp.
Anyone have any idea why?
Your code so far
//helper method (got this from StackOverflow)
function hasDuplicates(str) {
var duplicates = (/([a-z])\1/i).test(str)
return duplicates
}
//console.log( hasDuplicates('aba') )
function getPermutations(string) {
if (string.length < 2) {
console.log('string.length is less than 2... return string!');
return string; // This is our break condition
}
var permutations = []; // This array will hold our permutations
for (var i = 0; i < string.length; i++) {
var character = string[i];
var current = string.slice(0, i) //adding this
//console.log('current is: ', current)
var next = string.slice(i + 1, string.length) //adding this
//console.log('next is: ', next)
var remainingString = current + next;
console.log('remainingString is: ', remainingString)
//refactoring below line into above:
//var remainingString = string.slice(0,i) + string.slice(i+1,string.length); //Note: you can concat Strings via '+' in JS
for (var subPermutation of getPermutations(remainingString)) //calling recursively
var result = character + subPermutation
console.log(result, ' gets pushed to permutations')
permutations.push(result)
}
console.log('permutations is: ', permutations)
console.log('permutations.length is: ', permutations.length)
return permutations;
}
//var array = getPermutations('aab'); //this is where we call above
//getPermutations('abc');
//final function, calls functions above:
function permAlone(string) {
if (string.length === 1) {
console.log('string.length is 1')
return 1
}
//var array = getPermutations('aab'); //this is where we call above
var array = getPermutations(string); //this is where we call above
console.log('array from getPermutations(string) is: ', array)
var answer = array.map(function(string) {
if (hasDuplicates(string) === false) {
console.log('removing strings with duplicates')
return string
}
})
answer = answer.filter(n => n) //filter out null values
console.log('_______answer is: ', answer)
console.log('_______answer.length is: ', answer.length)
return answer.length
}
permAlone("aab") //should return 2.
//permAlone("aaa") //should return 0.
//permAlone("aabb") //should return 8.
//permAlone("abcdefa") //should return 3600.
//permAlone("abfdefa") //should return 2640.
//permAlone("zzzzzzzz") //should return 0.
//permAlone("a") //should return 1.
//permAlone("aaab") //should return 0.
//permAlone("aaabb") //should return 12.
Your browser information:
Your Browser User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
.
Link to the challenge: