JavaScript Coding Challenges
##### 01. Creates a function that takes two numbers as arguments and return their sum.
```js
function addition(a, b) {
//Write Your solution Here
};
console.log(addition(10, 20)); // 30
console.log(addition(30, 20)); // 50
console.log(addition(10, 90)); // 100
```
Solution
```js
function addition(a, b) {
let add = a + b;
return (add)
};
```
---
**[⬠Back to Top](#header)**
##### 02. Converts hours into seconds.
```js
function howManySeconds(hours) {
//Write Your solution Here
};
console.log(howManySeconds(12)); // 43200
console.log(howManySeconds(8)); // 28800
console.log(howManySeconds(3)); // 10800
```
Solution
```js
function howManySeconds(hours) {
let hoursToSeconds = (hours*3600);
return(hoursToSeconds)
};
```
---
**[⬠Back to Top](#header)**
##### 03. Converts minutes into seconds.
```js
function convert(minutes){
//Write Your solution Here
};
console.log(convert(30)); // 1800
console.log(convert(10)); // 600
console.log(convert(20)); // 1200
```
Solution
```js
function convert(minutes) {
let seconds = minutes*60;
return (seconds)
};
```
---
**[⬠Back to Top](#header)**
##### 04. Calculates total points of a team from number of wins(3pts), draws(1pt), and losses(0pt).
```js
function footballPoints(wins, draws, losses){
//Write Your solution Here
};
console.log(footballPoints(4, 3, 1)); // 15
console.log(footballPoints(10, 5, 0)); // 35
console.log(footballPoints(11, 0, 9)); // 33
```
Solution
```js
function footballPoints(wins, draws, losses) {
let points = (wins*3) + (draws*1) + (losses*0)
return(points)
};
```
---
**[⬠Back to Top](#header)**
##### 05. Write functions to calculate the bitwise AND, bitwise OR and bitwise XOR of two numbers.
```js
function bitwiseAND(n1, n2) {
//Write Your solution Here
};
function bitwiseOR(n1, n2) {
//Write Your solution Here
};
function bitwiseXOR(n1, n2) {
//Write Your solution Here
};
console.log(bitwiseAND(10, 20)); // 0
console.log(bitwiseOR(10, 20)); // 30
console.log(bitwiseXOR(10, 20)); // 30
```
Solution
```js
function bitwiseAND(n1, n2) {
let answer = n1 & n2;
return (answer);
};
function bitwiseOR(n1, n2) {
let answer = n1 | n2;
return (answer);
};
function bitwiseXOR(n1, n2) {
let answer = n1 ^ n2;
return (answer);
};
```
---
**[⬠Back to Top](#header)**
##### 06. Write Function to return first value of an array.
```js
function getFirstValue(arr) {
//Write Your solution Here
};
console.log(getFirstValue(["Saab", "Volvo", "BMW"])); // Saab
console.log(getFirstValue([3, 5, 1])); // 3
console.log(getFirstValue(['hello', 'world', 'welcome'])); // hello
```
Solution
```js
function getFirstValue(arr) {
return arr[0];
};
```
---
**[⬠Back to Top](#header)**
##### 07. Create a function that takes a number as an argument, increments the number by +1 and returns the result.
```js
function addition(num){
//Write Your solution Here
};
console.log(addition(5)); // 6
console.log(addition(100)); // 101
console.log(addition(99)); // 100
```
Solution
```js
function addition(num) {
let numPlusOne = num + 1;
return(numPlusOne)
};
```
---
**[⬠Back to Top](#header)**
##### 08. Given two numbers, return true if the sum of both numbers is less than 100. Otherwise return false.
```js
function lessThan100(a, b){
//Write Your solution Here
};
console.log(lessThan100(10, 20)); // true
console.log(lessThan100(50, 60)); // false
console.log(lessThan100(20, 50)); // true
```
Solution
```js
function lessThan100(a, b) {
if (a + b < 100) {
return true;
}
else {
return false;
}
};
```
---
**[⬠Back to Top](#header)**
##### 09. Create a function that returns true when num1 is equal to num2; otherwise return false.
```js
function isSameNum(num1, num2){
//Write Your solution Here
};
console.log(isSameNum(30, 30)); // true
console.log(isSameNum(20, 40)); // false
console.log(isSameNum(50, 50)); // true
```
Solution
```js
function isSameNum(num1, num2) {
if (num1 === num2){
return true;
}
else {
return false;
}
};
```
---
**[⬠Back to Top](#header)**
##### 10. Create a function that takes a number (step) as an argument and returns the amount of matchsticks in that step.
```js
function matchHouses(step){
//Write Your solution Here
};
console.log(matchHouses(5)); // 26
console.log(matchHouses(0)); // 0
console.log(matchHouses(10)); // 51
```
Solution
```js
function matchHouses(step){
if (step > 0) {
let matchSticks = ((step*6) - (step -1));
return(matchSticks)
}
else {
let matchSticks = 0;
return (matchSticks)
}
};
```
---
**[⬠Back to Top](#header)**
##### 11. Write function to return the square of a number.
```js
function squared(a){
//Write Your solution Here
};
console.log(squared(6)); // 36
console.log(squared(9)); // 81
console.log(squared(4)); // 16
```
Solution
```js
function squared(a) {
return (a*a);
};
```
---
**[⬠Back to Top](#header)**
##### 12. Write function to calc area of a rectangle
```js
function findPerimeter(height, width){
//Write Your solution Here
};
console.log(findPerimeter(20, 50)); // 140
console.log(findPerimeter(80, 30)); // 220
console.log(findPerimeter(10, 40)); // 100
```
Solution
```js
function findPerimeter(height, width){
let perimeter = 2*(height + width);
return (perimeter)
};
```
---
**[⬠Back to Top](#header)**
##### 13. Add up all the numbers from 1 to the number you passed to the function.
```js
function addUp(num){
//Write Your solution Here
};
console.log(addUp(10)); // 55
console.log(addUp(40)); // 820
console.log(addUp(15)); // 120
```
Solution
```js
function addUp(num) {
let sum = 0;
for (i = 0; i <= num; i++){
sum += i;
}
return(sum)
};
```
---
**[⬠Back to Top](#header)**
##### 14. Create a function that takes in three arguments (prob, prize, pay) and returns true if prob * prize > pay; otherwise return false.
```js
function profitableGamble(prob, prize, pay){
//Write Your solution Here
};
console.log(profitableGamble(2, 10, 20)); // false
console.log(profitableGamble(5, 10, 40)); // true
console.log(profitableGamble(6, 3, 30)); // false
```
Solution
```js
function profitableGamble(prob, prize, pay){
if (prob*prize > pay) {
return (true)
}
else {
return (false)
}
};
```
---
**[⬠Back to Top](#header)**
##### 15. Takes an array of numbers, returns both the minimum and maximum numbers, in that order.
```js
function minMax(arr){
//Write Your solution Here
};
console.log(minMax([2, -1, 5])); // [ -1, 5 ]
console.log(minMax([0, 5, 2])); // [ 0, 5 ]
console.log(minMax([2, -5, -1])); // [ -5, 2 ]
```
Solution
```js
function minMax(arr){
arr.sort(function(a, b){return(a - b)})
return [arr[0], arr[arr.length - 1]]
};
```
---
**[⬠Back to Top](#header)**
##### 16. Create a function that returns true if the first array can be nested inside the second.
###### arr1 can be nested inside arr2 if:
###### arr1's min is greater than arr2's min.
###### arr1's max is less than arr2's max.
```js
function canNest(arr1, arr2){
//Write Your solution Here
};
console.log(canNest([3, 1], [4, 0])); // true
console.log(canNest([9, 9, 8], [8, 9])); // false
console.log(canNest([1, 2, 3, 4], [0, 6])); // true
```
Solution
```js
function canNest(arr1, arr2) {
arr1.sort(function(a,b){return(a - b)});
arr2.sort(function(a,b){return(a - b)});
let arr1MinMax = [arr1[0], arr1[arr1.length -1]];
let arr2MinMax = [arr2[0], arr2[arr2.length -1]];
if (arr1MinMax[0] > arr2MinMax[0] && arr1MinMax[1] < arr2MinMax[1]){
return true
}
else{
return false
}
};
```
---
**[⬠Back to Top](#header)**
##### 17. Create a function that calculates the number of different squares in an n * n square grid.
```js
function numberSquares(n){
//Write Your solution Here
};
console.log(numberSquares(4)); // 30
console.log(numberSquares(5)); // 55
console.log(numberSquares(6)); // 91
```
Solution
```js
function numberSquares(n){
let num = n*(2*n + 1)*(n + 1)/6
return (num)
};
```
---
**[⬠Back to Top](#header)**
##### 18. Your function will be passed two functions, f and g, that don't take any parameters. Your function has to call them, and return a string which indicates which function returned the larger number.
###### If f returns the larger number, return the string f.
###### If g returns the larger number, return the string g.
###### If the functions return the same number, return the string neither.
```js
function whichIsLarger(f, g){
//Write Your solution Here
};
console.log(whichIsLarger(() => 25, () => 15)); // f
console.log(whichIsLarger(() => 25, () => 25)); // neither
console.log(whichIsLarger(() => 25, () => 50)); // g
```
Solution
```js
function whichIsLarger(f, g){
if (f() > g()) {
return ('f')
}
else if (g() > f()) {
return ('g')
}
else if (f() === g()) {
return ('neither')
}
};
```
---
**[⬠Back to Top](#header)**
##### 19. Christmas Eve is almost upon us, so naturally we need to prepare some milk and cookies for Santa! Create a function that accepts a Date object and returns true if it's Christmas Eve (December 24th) and false otherwise. Keep in mind JavaScript's Date month is 0 based, meaning December is the 11th month while January is 0.
```js
function timeForMilkAndCookies(date){
//Write Your solution Here
};
console.log(timeForMilkAndCookies(new Date(3000, 11, 24))); //true
console.log(timeForMilkAndCookies(new Date(2013, 0, 23))); //false
console.log(timeForMilkAndCookies(new Date(3000, 11, 24))); //true
```
Solution
```js
function timeForMilkAndCookies(date){
return date.getMonth() === 11 && date.getDate() === 24;
};
```
---
**[⬠Back to Top](#header)**
##### 20. function that takes a two-digit number and determines if it's the largest of two possible digit swaps.
```js
function largestSwap(num){
//Write Your solution Here
};
console.log(largestSwap(14)); //false
console.log(largestSwap(53)); //true
console.log(largestSwap(-27)); //false
```
Solution
```js
function largestSwap(num){
let num1 = num + "";
let num2 = num1.split("").reverse().join("");
if (num1 >= num2) {
return true;
}
if (num1 < num2) {
return false;
}
};
function largestSwap(num) {
let c = num.toString();
let a = [];
let b = 0;
for (let i = 0; i < c.length; i++) {
a.push(c[c.length - 1 - i]);
b += a[i];
}
let d = parseInt(b);
if (d > num) {
return false;
} else return true;
};
```
---
**[⬠Back to Top](#header)**
##### 21. function that takes two strings as arguments and returns the number of times the first string (the single character) is found in the second string.
```js
function charCount(myChar, str){
//Write Your solution Here
};
console.log(charCount("a", "largest")); //1
console.log(charCount("c", "Chamber of secrets")); // 2
console.log(charCount("b", "big fat bubble")); //4
```
Solution
```js
function charCount(myChar, str){
let a = 0;
for (let i = 0; i < str.length; i++) {
if (myChar.toLowerCase() === str.toLowerCase()[i]) {
a += 1;
}
}
return a
};
```
---
**[⬠Back to Top](#header)**
##### 22. function that takes two parameters and repeats the string n number of times.
```js
function repetition(txt, n){
//Write Your solution Here
};
console.log(repetition('zim', 5)); //zimzimzimzimzim
console.log(repetition('zoy', 2)); //zoyzoy
console.log(repetition('akib', 7)); //akibakibakibakibakibakibakib
```
Solution
```js
function repetition(txt, n){
let reptxt = ""
while (n > 0) {
reptxt += txt
n--;
}
return reptxt
};
```
---
**[⬠Back to Top](#header)**
##### 23. function that takes an array of non-negative integers and strings and return a new array without the strings.
```js
function filterArray(arr){
//Write Your solution Here
};
console.log(filterArray([1, 'z', 4, 5, 'i', 9, 'm'])); //[ 1, 4, 5, 9 ]
console.log(filterArray([8, 'z', 1, '8', 'i', 9, 'm'])); //[ 8, 1, 9 ]
console.log(filterArray([7, '1', 'z', 0, 'i', 9, 'm'])); //[ 7, 0, 9 ]
```
Solution
```js
function filterArray(arr){
let filteredArray = arr.filter(item => typeof item === "number");
return filteredArray
};
function filterArray(arr) {
let filteredArr = [];
for (let i = 0; i < arr.length; i++) {
if ( typeof arr[i] !== "string") {
filteredArr.push(arr[i])
}
} return filteredArr
};
```
---
**[⬠Back to Top](#header)**
##### 24. Write a function that take a string and write a regular expression inner function that returns the value that matches every red flag and blue flag in this string.
```js
function matchFlag(str){
//Write Your solution Here
};
console.log(matchFlag("yellow flag red flag blue flag green flag")); //[ 'red flag', 'blue flag' ]
console.log(matchFlag("yellow flag green flag orange flag white flag")); //null
console.log(matchFlag("yellow flag blue flag green flag")); //[ 'blue flag' ]
```
Solution
```js
function matchFlag(str){
let REGEXP = /red flag|blue flag/g;
return str.match(REGEXP);
};
```
---
**[⬠Back to Top](#header)**
##### 25. Write a function that take a string and write a RegExp to find ellipsis: 3 (or more?) dots in a row in this string.
```js
function matchEllipsis(str){
//Write Your solution Here
};
console.log(matchEllipsis("Hello!... How goes?.....")); //[ '...', '.....' ]
console.log(matchEllipsis("good morning!..... How goes?.")); // [ '.....' ]
console.log(matchEllipsis("good night!.......... How goes?...")); // [ '..........', '...' ]
```
Solution
```js
function matchEllipsis(str){
let REGEXP = /\.{3,}/g;
return str.match(REGEXP);
};
```
---
**[⬠Back to Top](#header)**
##### 26. Write a function that returns 0 if the input is 1, and returns 1 if the input is 0. Try completing this challenge without using any:
###### Conditionals
###### Ternary operators
###### Negations
###### Bit operators
```js
function flip(y){
//Write Your solution Here
};
console.log(flip(1)); // 0
console.log(flip(0)); // 1
```
Solution
```js
function flip(y){
let x = y - 1;
return (Math.abs(x))
};
```
---
**[⬠Back to Top](#header)**
##### 27. Create a function that takes a string and returns a string in which each character is repeated once.
```js
function doubleChar(str){
//Write Your solution Here
};
console.log(doubleChar('jahidul')); //jjaahhiidduull
console.log(doubleChar('islam')); //iissllaamm
console.log(doubleChar('zim')); //zziimm
```
Solution
```js
function doubleChar(str) {
let doubleString = '';
for(let i=0; i x.repeat(2));
let doubleString = array2.join("");
return doubleString
};
```
---
**[⬠Back to Top](#header)**
##### 28. Write a function that takes a positive integer and return its factorial.
```js
function factorial(num){
//Write Your solution Here
};
console.log(factorial(5)); //120
console.log(factorial(10)); //3628800
console.log(factorial(8)); //40320
```
Solution
```js
function factorial(num) {
let fact = 1;
for (let i = 0; i 1) {
num--;
result *= num;
}
return result;
};
function factorial(num){
let fact = num;
if (num === 0 || num === 1) return 1;
for (let i = num - 1; i >= 1; i--) {
fact *= i;
}
return fact;
};
```
---
**[⬠Back to Top](#header)**
##### 29. Take an array of integers (positive or negative or both) and return the sum of the absolute value of each element.
```js
function getAbsSum(arr){
//Write Your solution Here
};
console.log(getAbsSum([1, -4, 3, 8, 0])); // 16
console.log(getAbsSum([1, 3, 0, -8, 0])); // 12
console.log(getAbsSum([1, -4, -3, 8, 0])); //16
```
Solution
```js
function getAbsSum(arr){
let absSum = 0;
for (var i = 0; i < arr.length; i++) {
absSum += Math.abs(arr[i]);
}
return absSum;
};
```
---
**[⬠Back to Top](#header)**
##### 30. Write a function that take a string and write a REGEXP that matches any characters except letters, digits and spaces.
```js
function matchAny(str){
//Write Your solution Here
};
console.log(matchAny('Csxdzontains_underscore ')); //[ '_' ]
console.log(matchAny('Csxdzontains_underscore $ * P')); //[ '_', '$', '*' ]
```
Solution
```js
function matchAny(str){
const REGEXP = /[^a-z0-9 ]/gi;
return str.match(REGEXP)
};
```
---
**[⬠Back to Top](#header)**
##### 31. Create a function that takes a string and returns the number (count) of vowels contained within it.
```js
function countVowels(str){
//Write Your solution Here
};
console.log(countVowels('Jahidul Islam zim')); // 6
console.log(countVowels('returns the number of vowels')); // 8
console.log(countVowels('JavaScript Coding Challenges')); // 8
```
Solution
```js
function countVowels(str){
let count = 0;
let vowlStr = str.toLowerCase().match(/(a|e|i|o|u)/g);
for (let i = 0; i < vowlStr.length; i++) {
count += 1;
}
return count;
};
```
---
**[⬠Back to Top](#header)**
##### 32. Create a function that takes two vectors as arrays and checks if the two vectors are orthogonal or not. The return value is boolean. Two vectors a and b are orthogonal if their dot product is equal to zero.
```js
function isOrthogonal(arr1, arr2){
//Write Your solution Here
};
console.log(isOrthogonal([1, -2, 4], [2, 5, 2])); //true
console.log(isOrthogonal([1, -2, 5], [2, 5, 2])); //false
console.log(isOrthogonal([1, 2, 4], [-2, 5, -2])); //true
```
Solution
```js
function isOrthogonal(arr1, arr2){
let ortho = 0;
for (i = 0; i < arr1.length; i++){
ortho += arr1[i]*arr2[i]
}
if (ortho === 0) {
return true
}
return false
};
```
---
**[⬠Back to Top](#header)**
##### 33. Given an object of how many more pages each ink color can print, output the maximum number of pages the printer can print before any of the colors run out.
```js
function inkLevels(inks){
//Write Your solution Here
};
console.log(inkLevels({ cyan: 50, magenta: 12, yellow: 60 })); // 12
console.log(inkLevels({ cyan: 50, magenta: 120, yellow: 60 })); // 50
console.log(inkLevels({ cyan: 50, magenta: 12, yellow: 8 })); // 8
```
Solution
```js
function inkLevels(inks){
return Math.min(...Object.values(inks));
};
```
---
**[⬠Back to Top](#header)**
##### 34. Create a function that takes a string and returns a new string with all vowels removed.
```js
function removeVowels(str){
//Write Your solution Here
};
console.log(removeVowels('Jahidul Islam Zim')); //Jhdl slm Zm
console.log(removeVowels('a new string with all vowels')); // nw strng wth ll vwls
console.log(removeVowels('Create a function')); //Crt fnctn
```
Solution
```js
function removeVowels(str){
let newArr = str.match(/[^aeiouAEIOU]/g);
let newString = newArr.join('');
return newString
};
```
---
**[⬠Back to Top](#header)**
##### 35. Create a function that takes an array of arrays with numbers. Return a new (single) array with the largest numbers of each.
```js
function findLargestNums(arr){
//Write Your solution Here
};
console.log(findLargestNums([[3,6], [10, 20], [-1, 7]])); //[ 6, 20, 7 ]
console.log(findLargestNums([[8,6], [1, 0], [10, -7]])); //[ 8, 1, 10 ]
console.log(findLargestNums([[3,34], [10, 22], [-1, -7]])); //[ 34, 22, -1 ]
```
Solution
```js
function findLargestNums(arr){
let newArr = []
for (let i = 0; i < arr.length; i++) {
newArr.push(Math.max(...arr[i]));
}
return newArr
};
```
---
**[⬠Back to Top](#header)**
##### 36. Given an array of scrabble tiles, create a function that outputs the maximum possible score a player can achieve by summing up the total number of points for all the tiles in their hand. Each hand contains 7 scrabble tiles.
```js
function maximumScore(tileHand){
//Write Your solution Here
};
console.log(
maximumScore([
{ tile: "N", score: 1 },
{ tile: "K", score: 5 },
{ tile: "Z", score: 10 },
])
); //16
console.log(
maximumScore([
{ tile: "N", score: 9 },
{ tile: "K", score: 5 },
{ tile: "Z", score: 40 },
])
); //54
console.log(
maximumScore([
{ tile: "N", score: 1 },
{ tile: "K", score: 65 },
{ tile: "Z", score: 10 },
])
); //76
```
Solution
```js
function maximumScore(tileHand){
let score = 0;
for ( let i = 0; i < tileHand.length; i++) {
score += tileHand[i].score;
}
return score;
};
```
---
**[⬠Back to Top](#header)**
##### 37. Assume a program only reads .js or .jsx files. Write a function that accepts a file path and returns true if it can read the file and false if it can't.
```js
function isJS(path){
//Write Your solution Here
};
console.log(isJS('file.jsx')); //true
console.log(isJS('file.jsg')); //false
console.log(isJS('file.js')); //true
```
Solution
```js
function isJS(path){
let extension = path.match( /[^.]+$/g)[0]
if(extension === 'js' || extension==='jsx'){
return true;
}
return false;
};
```
---
**[⬠Back to Top](#header)**