From f0982a01a374741048ccac2e70fc5ce41e0e02e8 Mon Sep 17 00:00:00 2001 From: Jussi Saurio Date: Tue, 12 Dec 2017 22:23:44 +0200 Subject: [PATCH 1/3] Make 'Anagrams of string' fully functional Gets rid of mutable `.push` (and param reassignment) inside `.map` --- snippets/anagrams-of-string-(with-duplicates).md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/snippets/anagrams-of-string-(with-duplicates).md b/snippets/anagrams-of-string-(with-duplicates).md index 0d24e51cb..090a75b9d 100644 --- a/snippets/anagrams-of-string-(with-duplicates).md +++ b/snippets/anagrams-of-string-(with-duplicates).md @@ -9,8 +9,7 @@ Base cases are for string `length` equal to `2` or `1`. const anagrams = str => { if(str.length <= 2) return str.length === 2 ? [str, str[1] + str[0]] : [str]; return str.split('').reduce( (acc, letter, i) => { - anagrams(str.slice(0, i) + str.slice(i + 1)).map( val => acc.push(letter + val) ); - return acc; + return acc.concat(anagrams(str.slice(0, i) + str.slice(i + 1)).map( val => letter + val )); }, []); } // anagrams('abc') -> ['abc','acb','bac','bca','cab','cba'] From 76a97266eeb3d09b242e5b085a7d2f0f6cf82747 Mon Sep 17 00:00:00 2001 From: Jussi Saurio Date: Tue, 12 Dec 2017 22:28:46 +0200 Subject: [PATCH 2/3] build readme --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 640da6cd9..d891348fc 100644 --- a/README.md +++ b/README.md @@ -67,8 +67,7 @@ Base cases are for string `length` equal to `2` or `1`. const anagrams = str => { if(str.length <= 2) return str.length === 2 ? [str, str[1] + str[0]] : [str]; return str.split('').reduce( (acc, letter, i) => { - anagrams(str.slice(0, i) + str.slice(i + 1)).map( val => acc.push(letter + val) ); - return acc; + return acc.concat(anagrams(str.slice(0, i) + str.slice(i + 1)).map( val => letter + val )); }, []); } // anagrams('abc') -> ['abc','acb','bac','bca','cab','cba'] From 3bef1644cad97d1b90529caad12867d5fce3797a Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Wed, 13 Dec 2017 12:37:28 +0200 Subject: [PATCH 3/3] Update anagrams-of-string-(with-duplicates).md Removed unnecessary curly brackets --- snippets/anagrams-of-string-(with-duplicates).md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/snippets/anagrams-of-string-(with-duplicates).md b/snippets/anagrams-of-string-(with-duplicates).md index 090a75b9d..10b949654 100644 --- a/snippets/anagrams-of-string-(with-duplicates).md +++ b/snippets/anagrams-of-string-(with-duplicates).md @@ -8,9 +8,8 @@ Base cases are for string `length` equal to `2` or `1`. ```js const anagrams = str => { if(str.length <= 2) return str.length === 2 ? [str, str[1] + str[0]] : [str]; - return str.split('').reduce( (acc, letter, i) => { - return acc.concat(anagrams(str.slice(0, i) + str.slice(i + 1)).map( val => letter + val )); - }, []); + return str.split('').reduce( (acc, letter, i) => + acc.concat(anagrams(str.slice(0, i) + str.slice(i + 1)).map( val => letter + val )), []); } // anagrams('abc') -> ['abc','acb','bac','bca','cab','cba'] ```