2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								---
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								id: a7bf700cd123b9a54eef01d5
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								title: No Repeats Please
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								challengeType: 5
							 
						 
					
						
							
								
									
										
										
										
											2019-07-31 11:32:23 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								forumTopicId: 16037
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								---
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								## Description
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< section  id = 'description' >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Return the number of total permutations of the provided string that don't have repeated consecutive letters. Assume that all characters in the provided string are each unique.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								For example, < code > aab< / code >  should return 2 because it has 6 total permutations (< code > aab< / code > , < code > aab< / code > , < code > aba< / code > , < code > aba< / code > , < code > baa< / code > , < code > baa< / code > ), but only 2 of them (< code > aba< / code >  and < code > aba< / code > ) don't have the same letter (in this case < code > a< / code > ) repeating.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Remember to use < a  href = 'http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514'  target = '_blank' > Read-Search-Ask< / a >  if you get stuck. Try to pair program. Write your own code.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / section >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								## Instructions
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< section  id = 'instructions' >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / section >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								## Tests
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< section  id = 'tests' >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```yml
							 
						 
					
						
							
								
									
										
										
										
											2018-10-04 14:37:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								tests:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -  text: < code > permAlone("aab")</ code >  should return a number.
							 
						 
					
						
							
								
									
										
										
										
											2019-07-24 23:56:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    testString: assert.isNumber(permAlone('aab'));
							 
						 
					
						
							
								
									
										
										
										
											2018-10-04 14:37:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  -  text: < code > permAlone("aab")</ code >  should return 2.
							 
						 
					
						
							
								
									
										
										
										
											2019-07-24 23:56:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    testString: assert.strictEqual(permAlone('aab'), 2);
							 
						 
					
						
							
								
									
										
										
										
											2018-10-04 14:37:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  -  text: < code > permAlone("aaa")</ code >  should return 0.
							 
						 
					
						
							
								
									
										
										
										
											2019-07-24 23:56:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    testString: assert.strictEqual(permAlone('aaa'), 0);
							 
						 
					
						
							
								
									
										
										
										
											2018-10-04 14:37:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  -  text: < code > permAlone("aabb")</ code >  should return 8.
							 
						 
					
						
							
								
									
										
										
										
											2019-07-24 23:56:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    testString: assert.strictEqual(permAlone('aabb'), 8);
							 
						 
					
						
							
								
									
										
										
										
											2018-10-04 14:37:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  -  text: < code > permAlone("abcdefa")</ code >  should return 3600.
							 
						 
					
						
							
								
									
										
										
										
											2019-07-24 23:56:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    testString: assert.strictEqual(permAlone('abcdefa'), 3600);
							 
						 
					
						
							
								
									
										
										
										
											2018-10-04 14:37:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  -  text: < code > permAlone("abfdefa")</ code >  should return 2640.
							 
						 
					
						
							
								
									
										
										
										
											2019-07-24 23:56:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    testString: assert.strictEqual(permAlone('abfdefa'), 2640);
							 
						 
					
						
							
								
									
										
										
										
											2018-10-04 14:37:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  -  text: < code > permAlone("zzzzzzzz")</ code >  should return 0.
							 
						 
					
						
							
								
									
										
										
										
											2019-07-24 23:56:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    testString: assert.strictEqual(permAlone('zzzzzzzz'), 0);
							 
						 
					
						
							
								
									
										
										
										
											2018-10-04 14:37:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  -  text: < code > permAlone("a")</ code >  should return 1.
							 
						 
					
						
							
								
									
										
										
										
											2019-07-24 23:56:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    testString: assert.strictEqual(permAlone('a'), 1);
							 
						 
					
						
							
								
									
										
										
										
											2018-10-04 14:37:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  -  text: < code > permAlone("aaab")</ code >  should return 0.
							 
						 
					
						
							
								
									
										
										
										
											2019-07-24 23:56:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    testString: assert.strictEqual(permAlone('aaab'), 0);
							 
						 
					
						
							
								
									
										
										
										
											2018-10-04 14:37:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  -  text: < code > permAlone("aaabb")</ code >  should return 12.
							 
						 
					
						
							
								
									
										
										
										
											2019-07-24 23:56:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    testString: assert.strictEqual(permAlone('aaabb'), 12);
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / section >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								## Challenge Seed
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< section  id = 'challengeSeed' >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< div  id = 'js-seed' >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function permAlone(str) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return str;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								permAlone('aab');
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / div >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / section >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								## Solution
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< section  id = 'solution' >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function permAlone(str) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return permutor(str).filter(function(perm) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return !perm.match(/(.)\1/g);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }).length;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function permutor(str) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // http://staff.roguecc.edu/JMiller/JavaScript/permute.html
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  //permArr: Global array which holds the list of permutations
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  //usedChars: Global utility array which holds a list of "currently-in-use" characters
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var permArr = [], usedChars = [];
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function permute(input) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    //convert input into a char array (one element for each character)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var i, ch, chars = input.split("");
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for (i = 0; i <  chars.length ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      //get and remove character at index "i" from char array
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ch = chars.splice(i, 1);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      //add removed character to the end of used characters
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      usedChars.push(ch);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      //when there are no more characters left in char array to add, add used chars to list of permutations
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if (chars.length === 0) permArr[permArr.length] = usedChars.join("");
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      //send characters (minus the removed one from above) from char array to be permuted
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      permute(chars.join(""));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      //add removed character back into char array in original position
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      chars.splice(i, 0, ch);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      //remove the last character used off the end of used characters array
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      usedChars.pop();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  permute(str);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return permArr;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								permAlone('aab');
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / section >