2021-05-05 10:13:49 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								---
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								id: 5e4ce2bbac708cc68c1df25f
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								title: Letter frequency
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								challengeType: 5
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								forumTopicId: 385263
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								dashedName: letter-frequency
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								---
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# --description--
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Given a string, calculate the frequency of each character.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								All characters should be counted. This includes lower and upper case letters, digits, whitespace, special characters, or any other distinct characters.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# --instructions--
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Write a function to count the occurrences of each character in a given string.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The function should return a 2D array with each of the elements in the following form: `['char', freq]` . The character should be a string with a length of 1, and frequency is a number denoting the count.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								For example, given the string "ab", your function should return `[['a', 1], ['b', 1]]` .
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# --hints--
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								`letterFrequency`  should be a function. 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert(typeof letterFrequency == 'function');
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								`letterFrequency("Not all that Mrs. Bennet, however")`  should return an array. 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert(Array.isArray(letterFrequency('Not all that Mrs. Bennet, however')));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-16 11:03:16 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								`letterFrequency("Not all that Mrs. Bennet, however")`  should return `[[" ", 5], [",", 1], [".", 1], ["B", 1], ["M", 1], ["N", 1], ["a", 2], ["e", 4], ["h", 2], ["l", 2], ["n", 2], ["o", 2], ["r", 2], ["s", 1], ["t", 4], ["v", 1], ["w", 1]]` . 
						 
					
						
							
								
									
										
										
										
											2021-05-05 10:13:49 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert.deepEqual(letterFrequency('Not all that Mrs. Bennet, however'), [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [' ', 5],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [',', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['.', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['B', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['M', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['N', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['a', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['e', 4],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['h', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['l', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['n', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['o', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['r', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['s', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['t', 4],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['v', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['w', 1]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								]);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-16 11:03:16 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								`letterFrequency("daughters, could ask on the ")`  should return `[[" ", 5],[",", 1],["a", 2],["c", 1],["d", 2],["e", 2],["g", 1],["h", 2],["k", 1],["l", 1],["n", 1],["o", 2],["r", 1],["s", 2],["t", 2],["u", 2]]` . 
						 
					
						
							
								
									
										
										
										
											2021-05-05 10:13:49 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert.deepEqual(letterFrequency('daughters, could ask on the '), [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [' ', 5],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [',', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['a', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['c', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['d', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['e', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['g', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['h', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['k', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['l', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['n', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['o', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['r', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['s', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['t', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['u', 2]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								]);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								`letterFrequency("husband any satisfactory description")`  should return `[[" ", 3], ["a", 4], ["b", 1], ["c", 2], ["d", 2], ["e", 1], ["f", 1], ["h", 1], ["i", 3], ["n", 3], ["o", 2], ["p", 1], ["r", 2], ["s", 4], ["t", 3], ["u", 1], ["y", 2]]` . 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert.deepEqual(letterFrequency('husband any satisfactory description'), [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [' ', 3],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['a', 4],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['b', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['c', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['d', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['e', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['f', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['h', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['i', 3],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['n', 3],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['o', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['p', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['r', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['s', 4],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['t', 3],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['u', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['y', 2]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								]);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								`letterFrequency("in various ways--with barefaced")`  should return `[[" ", 3], ["-", 2], ["a", 4], ["b", 1], ["c", 1], ["d", 1], ["e", 2], ["f", 1], ["h", 1], ["i", 3], ["n", 1], ["o", 1], ["r", 2], ["s", 2], ["t", 1], ["u", 1], ["v", 1], ["w", 2], ["y", 1]]` . 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert.deepEqual(letterFrequency('in various ways--with barefaced'), [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [' ', 3],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['-', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['a', 4],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['b', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['c', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['d', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['e', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['f', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['h', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['i', 3],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['n', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['o', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['r', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['s', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['t', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['u', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['v', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['w', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['y', 1]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								]);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-16 11:03:16 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								`letterFrequency("distant surmises; but he eluded")`  should return `[[" ", 4], [";", 1], ["a", 1], ["b", 1], ["d", 3], ["e", 4], ["h", 1], ["i", 2], ["l", 1], ["m", 1], ["n", 1], ["r", 1], ["s", 4], ["t", 3], ["u", 3]]` . 
						 
					
						
							
								
									
										
										
										
											2021-05-05 10:13:49 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert.deepEqual(letterFrequency('distant surmises; but he eluded'), [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [' ', 4],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [';', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['a', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['b', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['d', 3],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['e', 4],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['h', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['i', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['l', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['m', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['n', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['r', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['s', 4],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['t', 3],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['u', 3]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								]);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-16 11:03:16 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								`letterFrequency("last obliged to accept the second-hand,")`  should return `[[" ", 5], [",", 1], ["-", 1], ["a", 3], ["b", 1], ["c", 3], ["d", 3], ["e", 4], ["g", 1], ["h", 2], ["i", 1], ["l", 2], ["n", 2], ["o", 3], ["p", 1], ["s", 2], ["t", 4]]` . 
						 
					
						
							
								
									
										
										
										
											2021-05-05 10:13:49 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert.deepEqual(letterFrequency('last obliged to accept the second-hand,'), [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [' ', 5],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [',', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['-', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['a', 3],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['b', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['c', 3],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['d', 3],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['e', 4],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['g', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['h', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['i', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['l', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['n', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['o', 3],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['p', 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['s', 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ['t', 4]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								]);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# --seed--
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								## --seed-contents--
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function letterFrequency(txt) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# --solutions--
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function letterFrequency(txt) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var cs = txt.split(''),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        i = cs.length,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        dct =  {},
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        c = '',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        keys;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    while (i--) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        c = cs[i];
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        dct[c] = (dct[c] || 0) + 1;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    keys = Object.keys(dct);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    keys.sort();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return keys.map(function (c) { return [c, dct[c]]; });
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```