## DEV Community

benboorstein

Posted on • Updated on

# My Solutions to 19 freeCodeCamp Algorithm Challenges

``````/*
Below are my solutions to the 16 challenges of freeCodeCamp's Basic Algorithm Scripting section and the first 3 challenges of freeCodeCamp's Intermediate Algorithm Scripting section.

(Full disclosure: This is certainly NOT the first time I've worked on these 19 challenges, but it is the first or second time I've been satisfied with my solutions.)
*/

// 1. Convert Celsius to Fahrenheit
function convertToF(celsius) {
let fahrenheit = celsius * (9/5) + 32

return fahrenheit
}

console.log(convertToF(30))

// 2. Reverse a String
function reverseString(str) {
return str.split('').reverse().join('')
}

console.log(reverseString('hello'))

// 3. Factorialize a Number
function factorialize(num) {
return num < 1 ? 1 : num * factorialize(num - 1)
}

console.log(factorialize(5))

// 4. Find the Longest Word in a String
function findLongestWordLength(str) {
return Math.max(...str.split(' ').map(val => val.length))
}

console.log(findLongestWordLength('The quick brown fox jumped over the lazy dog'))

// 5. Return Largest Numbers in Arrays
function largestOfFour(arr) {
return arr.map(subArr => Math.max(...subArr))
}

console.log(largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]))

// 6. Confirm the Ending
function confirmEnding(str, target) {
return str.slice(str.length - target.length) === target
}

console.log(confirmEnding('Bastian', 'an'))

// 7. Repeat a String Repeat a String
function repeatStringNumTimes(str, num) {
return num < 1 ? '' : str + repeatStringNumTimes(str, num - 1)
}

console.log(repeatStringNumTimes('abc', 3))

// 8. Truncate a String
function truncateString(str, num) {
return str.length > num ? str.slice(0, num) + '...' : str
}

// 9. Finders Keepers
function findElement(arr, func) {
return arr.find(val => func(val))
}

console.log(findElement([1, 2, 3, 4], num => num % 2 === 0))

// 10. Boo who
function booWho(bool) {
return typeof bool === 'boolean'
}

console.log(booWho(null))

// 11. Title Case a Sentence
function titleCase(str) {
return str
.toLowerCase()
.split(' ')
.map(val => val.slice(0, 1).toUpperCase() + val.slice(1))
.join(' ')
}

console.log(titleCase('I\'m a little tea pot'))

// 12. Slice and Splice
function frankenSplice(arr1, arr2, n) {
return arr2.slice(0, n).concat(arr1).concat(arr2.slice(n))
}

console.log(frankenSplice([1, 2, 3], [4, 5, 6], 1))

// 13. Falsy Bouncer
function bouncer(arr) {
return arr.filter(val => Boolean(val))
}

console.log(bouncer([7, 'ate', '', false, 9]))

// 14. Where do I Belong
function getIndexToIns(arr, num) {
return arr
.concat(num)
.sort((a, b) => a - b)
.indexOf(num)
}

console.log(getIndexToIns([40, 90, 60], 50))

// 15. Mutations
function mutation(arr) {
return arr[1]
.toLowerCase()
.split('')
.every(val => arr[0].toLowerCase().split('').includes(val))
}

console.log(mutation(['HellO', 'oELLh']))

// 16. Chunky Monkey
function chunkArrayInGroups(arr, size) {
let newArr = []

for (let i = 0; i < arr.length; i += size) {
newArr.push(arr.slice(i, i + size))
}

return newArr
}

console.log(chunkArrayInGroups(['a', 'b', 'c', 'd', 'e', 'f', 'g'], 3))

// 1. Sum All Numbers in a Range
function sumAll(arr) {
// "The lowest number will not always come first."
let lowerNum = Math.min(...arr)
let higherNum = Math.max(...arr)

// Getting the range of numbers, including the low number and the high number, and putting them in an array.
let newArr = []

for (let i = lowerNum; i <= higherNum; i++) {
newArr.push(i)
}

// "...the sum of those two numbers plus the sum of all the numbers between them."
return newArr.reduce((acc, cur) => acc += cur)
}

console.log(sumAll([7, 2]))

// 2. Diff Two Arrays
function diffArray(arr1, arr2) {
let notInArr1 = arr2.filter(val => !arr1.includes(val)) // [ 4 ]
let notInArr2 = arr1.filter(val => !arr2.includes(val)) // [ ]

return notInArr1.concat(notInArr2)
}

console.log(diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]))

// 3. Seek and Destroy
function destroyer(arr) {
let toRemove = Array.from(arguments).slice(1) // [ 2, 3 ]

return arr.filter(val => !toRemove.includes(val))
}

console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3))

``````