Hello JavaScript code newbie! In this article I'm proposing you a series of coding challenges that will help you practice the basic language constructs and algorithms. These coding challenges are intended for beginners, therefore the proposed solutions are implemented using only simple and classical programming elements. Each solution is accompanied by an online link that helps you quickly run it in a code playground at codeguppy.com If you have time, we recommend you to solve the challenges on your own and then compare your solution to the provided solution. If time is limited, just browse through the solutions! Note: The code is making use of the codeguppy specific function println() to print the results. If you want to run these solutions outside , just replace println() with console.log() then run them using your browser console tool or node.js. codeguppy.com Coding challenge #1: Print numbers from 1 to 10 https://codeguppy.com/code.html?mrgCtLGA90Ozr0Otrs5Z ( i = ; i <= ; i++) { println(i); } for var 1 10 Coding challenge #2: Print the odd numbers less than 100 https://codeguppy.com/code.html?eDLA5XPp3bPxP79H2jKT ( i = ; i <= ; i += ) { println(i); } for var 1 100 2 Coding challenge #3: Print the multiplication table with 7 https://codeguppy.com/code.html?fpnQzIhnGUUmCUZy1fyQ ( i = ; i <= ; i++) { row = + i + + * i; println(row); } for var 1 10 var "7 * " " = " 7 Coding challenge #4: Print all the multiplication tables with numbers from 1 to 10 https://codeguppy.com/code.html?78aD4mWSCzoNEVxOQ8tI ( i = ; i <= ; i++) { printTable(i); println( ); } { ( i = ; i <= ; i++) { row = n + + i + + n * i; println(row); } } for var 1 10 "" ( ) function printTable n for var 1 10 var " * " " = " Coding challenge #5: Calculate the sum of numbers from 1 to 10 https://codeguppy.com/code.html?Vy6u9kki2hXM4YjsbpuN sum = ; ( i = ; i <= ; i++) { sum += i; } println(sum); var 0 for var 1 10 Coding challenge #6: Calculate 10! https://codeguppy.com/code.html?IIuJX4gnXOndNu0VrywA prod = ; ( i = ; i <= ; i++) { prod *= i; } println(prod); var 1 for var 1 10 Coding challenge #7: Calculate the sum of odd numbers greater than 10 and less than 30 https://codeguppy.com/code.html?DcOffOyoIArmNZHVNM2u sum = ; ( i = ; i <= ; i += ) { sum += i; } println(sum); var 0 for var 11 30 2 Coding challenge #8: Create a function that will convert from Celsius to Fahrenheit https://codeguppy.com/code.html?oI5mWm6QIMRjY1m9XAmI { n * + ; } r = celsiusToFahrenheit( ); println(r); ( ) function celsiusToFahrenheit n return 1.8 32 var 20 Coding challenge #9: Create a function that will convert from Fahrenheit to Celsius https://codeguppy.com/code.html?mhnf8DpPRqqgsBgbJNpz { (n - ) / ; } r = fahrenheitToCelsius( ); println(r); ( ) function fahrenheitToCelsius n return 32 1.8 var 68 Coding challenge #10: Calculate the sum of numbers in an array of numbers https://codeguppy.com/code.html?TteeVr0aj33ZyCLR685L { sum = ; ( i = ; i < ar.length; i++) { sum += ar[i]; } sum; } ar = [ , , , , , , , , ]; sum = sumArray(ar); println(sum); ( ) function sumArray ar var 0 for var 0 return var 2 3 -1 5 7 9 10 15 95 var Coding challenge #11: Calculate the average of the numbers in an array of numbers https://codeguppy.com/code.html?7i9sje6FuJsI44cuncLh { n = ar.length; sum = ; ( i = ; i < n; i++) { sum += ar[i]; } sum / n; } ar = [ , , , , ]; avg = averageArray(ar); println( , avg); ( ) function averageArray ar var var 0 for var 0 return var 1 3 9 15 90 var "Average: " Coding challenge #12: Create a function that receives an array of numbers and returns an array containing only the positive numbers Solution 1: https://codeguppy.com/code.html?0eztj1v6g7iQLzst3Id3 { ar2 = []; ( i = ; i < ar.length; i++) { el = ar[i]; (el >= ) { ar2.push(el); } } ar2; } ar = [ , , , , , , , , ]; ar2 = getPositives(ar); println(ar2); ( ) function getPositives ar var for var 0 var if 0 return var -5 10 -3 12 -9 5 90 0 1 var Coding challenge #12: Create a function that receives an array of numbers and returns an array containing only the positive numbers Solution 2 https://codeguppy.com/code.html?KefrPtrvJeMpQyrB8V2D { ar2 = []; ( el ar) { (el >= ) { ar2.push(el); } } ar2; } ar = [ , , , , , , , , ]; ar2 = getPositives(ar); println(ar2); ( ) function getPositives ar var for var of if 0 return var -5 10 -3 12 -9 5 90 0 1 var Coding challenge #12: Create a function that receives an array of numbers and returns an array containing only the positive numbers Solution 3 https://codeguppy.com/code.html?qJBQubNA7z10n6pjYmB8 { ar.filter( el >= ); } ar = [ , , , , , , , , ]; ar2 = getPositives(ar); println(ar2); ( ) function getPositives ar return => el 0 var -5 10 -3 12 -9 5 90 0 1 var Coding challenge #13: Find the maximum number in an array of numbers https://codeguppy.com/code.html?THmQGgOMRUj6PSvEV8HD { max = ar[ ]; ( i = ; i < ar.length; i++) { (ar[i] > max) { max = ar[i]; } } max; } ar = [ , , , , , , , , ]; max = findMax(ar); println( , max); ( ) function findMax ar var 0 for var 0 if return var -5 10 -3 12 -9 5 90 0 1 var "Max: " Coding challenge #14: Print the first 10 Fibonacci numbers without recursion https://codeguppy.com/code.html?rKOfPxHbVwxNWI2d8orH f0 = ; println(f0); f1 = ; println(f1); ( i = ; i < ; i++) { fi = f1 + f0; println(fi); f0 = f1; f1 = fi; } var 0 var 1 for var 2 10 var Coding challenge #15: Create a function that will find the nth Fibonacci number using recursion https://codeguppy.com/code.html?IneuIg9O0rRV8V76omBk { (n == ) ; (n == ) ; findFibonacci(n - ) + findFibonacci(n - ); } n = findFibonacci( ); println(n); ( ) function findFibonacci n if 0 return 0 if 1 return 1 return 1 2 var 10 Coding challenge #16: Create a function that will return a Boolean specifying if a number is prime https://codeguppy.com/code.html?fRYsPEc2vcZTbIU8MKku { (n < ) ; (n == ) ; maxDiv = .sqrt(n); ( i = ; i <= maxDiv; i++) { (n % i == ) { ; } } ; } println( , , isPrime( )); println( , , isPrime( )); println( , , isPrime( )); println( , , isPrime( )); println( , , isPrime( )); ( ) function isPrime n if 2 return false if 2 return true var Math for var 2 if 0 return false return true 2 " is prime? " 2 3 " is prime? " 3 4 " is prime? " 4 5 " is prime? " 5 9 " is prime? " 9 Coding challenge #17: Calculate the sum of digits of a positive integer number https://codeguppy.com/code.html?RHA714FYio8gWgmjWYPz { s = n.toString(); sum = ; ( char s) { digit = (char); sum += digit; } sum; } sum = sumDigits( ); println( , sum); ( ) function sumDigits n var var 0 for var of var parseInt return var 1235231 "Sum: " Coding challenge #18: Print the first 100 prime numbers https://codeguppy.com/code.html?gnMVeOZXN6VhLekyvui8 printPrimes( ); { n = ; i = ; (n < nPrimes) { (isPrime(i)) { println(n, , i); n++; } i++; } } { (n < ) ; (n == ) ; maxDiv = .sqrt(n); ( i = ; i <= maxDiv; i++) { (n % i == ) { ; } } ; } 100 // Function prints the first nPrimes numbers ( ) function printPrimes nPrimes var 0 var 2 while if " --> " // Returns true if a number is prime ( ) function isPrime n if 2 return false if 2 return true var Math for var 2 if 0 return false return true Coding challenge #19: Create a function that will return in an array the first "nPrimes" prime numbers greater than a particular number "startAt" https://codeguppy.com/code.html?mTi7EdKrviwIn4bfrmM7 println(getPrimes( , )); { ar = []; i = startAt; (ar.length < nPrimes) { (isPrime(i)) { ar.push(i); } i++; } ar; } { (n < ) ; (n == ) ; maxDiv = .sqrt(n); ( i = ; i <= maxDiv; i++) { (n % i == ) { ; } } ; } 10 100 ( ) function getPrimes nPrimes, startAt var var while if return // Returns true if a number is prime ( ) function isPrime n if 2 return false if 2 return true var Math for var 2 if 0 return false return true Coding challenge #20: Rotate an array to the left 1 position https://codeguppy.com/code.html?MRmfvuQdZpHn0k03hITn ar = [ , , ]; rotateLeft(ar); println(ar); { first = ar.shift(); ar.push(first); } var 1 2 3 ( ) function rotateLeft ar var Coding challenge #21: Rotate an array to the right 1 position https://codeguppy.com/code.html?fHfZqUmkAVUXKtRupmzZ ar = [ , , ]; rotateRight(ar); println(ar); { last = ar.pop(); ar.unshift(last); } var 1 2 3 ( ) function rotateRight ar var Coding challenge #22: Reverse an array https://codeguppy.com/code.html?GZddBqBVFlqYrsxi3Vbu ar = [ , , ]; ar2 = reverseArray(ar); println(ar2); { ar2 = []; ( i = ar.length - ; i >= ; i--) { ar2.push(ar[i]); } ar2; } var 1 2 3 var ( ) function reverseArray ar var for var 1 0 return Coding challenge #23: Reverse a string https://codeguppy.com/code.html?pGpyBz0dWlsj7KR3WnFF s = reverseString( ); println(s); { s2 = ; ( i = s.length - ; i >= ; i--) { char = s[i]; s2 += char; } s2; } var "JavaScript" ( ) function reverseString s var "" for var 1 0 var return Coding challenge #24: Create a function that will merge two arrays and return the result as a new array https://codeguppy.com/code.html?vcTkLxYTAbIflqdUKivc ar1 = [ , , ]; ar2 = [ , , ]; ar = mergeArrays(ar1, ar2); println(ar); { ar = []; ( el ar1) { ar.push(el); } ( el ar2) { ar.push(el); } ar; } var 1 2 3 var 4 5 6 var ( ) function mergeArrays ar1, ar2 var for let of for let of return Coding challenge #25: Create a function that will receive two arrays of numbers as arguments and return an array composed of all the numbers that are either in the first array or second array but not in both https://codeguppy.com/code.html?Y9gRdgrl6PPt4QxVs7vf ar1 = [ , , , , , , ]; ar2 = [ , , , , ]; ar = mergeExclusive(ar1, ar2); println(ar); { ar = []; ( el ar1) { (!ar2.includes(el)) { ar.push(el); } } ( el ar2) { (!ar1.includes(el)) { ar.push(el); } } ar; } var 1 2 3 10 5 3 14 var 1 4 5 6 14 var ( ) function mergeExclusive ar1, ar2 var for let of if for let of if return Coding challenge #26: Create a function that will receive two arrays and will return an array with elements that are in the first array but not in the second https://codeguppy.com/code.html?bUduoyY6FfwV5nQGdXzH ar1 = [ , , , , , , ]; ar2 = [ , , , , ]; ar = mergeLeft(ar1, ar2); println(ar); { ar = []; ( el ar1) { (!ar2.includes(el)) { ar.push(el); } } ar; } var 1 2 3 10 5 3 14 var -1 4 5 6 14 var ( ) function mergeLeft ar1, ar2 var for let of if return Coding challenge #27: Create a function that will receive an array of numbers as argument and will return a new array with distinct elements Solution 1 https://codeguppy.com/code.html?OkbtP1ZksGHXwqk7Jh3i ar = getDistinctElements([ , , , , , , , , , , ]); println(ar); { ar2 = []; ( i = ; i < ar.length; i++) { (!isInArray(ar[i], ar2)) { ar2.push(ar[i]); } } ar2; } { ( i = ; i < ar.length; i++) { (ar[i] === n) ; } ; } var 1 2 3 6 -1 2 9 7 10 -1 100 ( ) function getDistinctElements ar var for let 0 if return ( ) function isInArray n, ar for let 0 if return true return false Coding challenge #27: Create a function that will receive an array of numbers as argument and will return a new array with distinct elements Solution 2 https://codeguppy.com/code.html?NjGtyQdMP49QiaAkmwpU ar = getDistinctElements([ , , , , , , , , , , ]); println(ar); { ar2 = []; lastIndex = ar.length - ; ( i = ; i <= lastIndex; i++) { (!isInArray(ar[i], ar, i + , lastIndex)) { ar2.push(ar[i]); } } ar2; } { ( i = fromIndex; i <= toIndex; i++) { (ar[i] === n) ; } ; } var 1 2 3 6 -1 2 9 7 10 -1 100 ( ) function getDistinctElements ar var var 1 for let 0 if 1 return ( ) function isInArray n, ar, fromIndex, toIndex for var if return true return false Coding challenge #28: Calculate the sum of first 100 prime numbers https://codeguppy.com/code.html?v0O9sBfnHbCi1StE2TxA n = ; println( , n, , sumPrimes( )); { foundPrimes = ; i = ; sum = ; (foundPrimes < n) { (isPrime(i)) { foundPrimes++; sum += i; } i++; } sum; } { (n < ) ; (n == ) ; maxDiv = .sqrt(n); ( i = ; i <= maxDiv; i++) { (n % i === ) { ; } } ; } var 10 "Sum of first " " primes is " 10 ( ) function sumPrimes n var 0 var 2 var 0 while if return // Returns true if number n is prime ( ) function isPrime n if 2 return false if 2 return true var Math for var 2 if 0 return false return true Coding challenge #29: Print the distance between the first 100 prime numbers https://codeguppy.com/code.html?xKQEeKYF1LxZhDhwOH7V printDistances( ); { lastPrime = ; i = lastPrime + ; foundPrimes = ; (foundPrimes < n) { (isPrime(i)) { println(i - lastPrime, , i, , lastPrime); foundPrimes++; lastPrime = i; } i++; } } { (n < ) ; (n == ) ; maxDiv = .sqrt(n); ( i = ; i <= maxDiv; i++) { (n % i === ) { ; } } ; } 100 // Print distances between the first n prime numbers ( ) function printDistances n var 2 var 1 var 1 while if "\t" " - " // Returns true if number n is prime ( ) function isPrime n if 2 return false if 2 return true var Math for var 2 if 0 return false return true Coding challenge #30-a: Create a function that will add two positive numbers of indefinite size. The numbers are received as strings and the result should be also provided as string. Solution 1 https://codeguppy.com/code.html?v5A0QBsdHaiAVA2CPN5y n1 = ; n2 = ; sum = add(n1, n2); println(n1, , n2, , sum); { s = ; carry = ; maxSize = .max(sNumber1.length, sNumber2.length); ( i = ; i < maxSize; i++) { digit1 = digitFromRight(sNumber1, i); digit2 = digitFromRight(sNumber2, i); sum = digit1 + digit2 + carry; digitSum = sum % ; carry = sum >= ? : ; s = digitSum.toString() + s; } (carry > ) s = carry + s; s; } { (digitNo >= s.length) ; char = s[ s.length - - digitNo ]; (char); } var "2909034221912398942349" var "1290923909029309499" var "\n" "\n" ( ) function add sNumber1, sNumber2 var "" var 0 var Math for var 0 var var var var 10 10 1 0 if 0 return ( ) function digitFromRight s, digitNo if return 0 var 1 return parseInt Coding challenge #30-b: Create a function that will add two positive numbers of indefinite size. The numbers are received as strings and the result should be also provided as string. Solution 2 https://codeguppy.com/code.html?yMQXcPgfrYxuaIxqQmZc n1 = ; n2 = ; sum = add(n1, n2); println(n1); println(n2); println(sum); { maxSize = .max(sNumber1.length, sNumber2.length); s1 = sNumber1.padStart(maxSize, ); s2 = sNumber2.padStart(maxSize, ); s = ; carry = ; ( i = maxSize - ; i >= ; i--) { digit1 = (s1[i]); digit2 = (s2[i]); sum = digit1 + digit2 + carry; digitSum = sum % ; carry = sum >= ? : ; s = digitSum.toString() + s; } (carry > ) s = carry + s; s; } var "2909034221912398942349" var "1290923909029309499" var ( ) function add sNumber1, sNumber2 var Math var "0" var "0" var "" var 0 for var 1 0 var parseInt var parseInt var var 10 10 1 0 if 0 return Coding challenge #31a. Create a function that will return the number of words in a text https://codeguppy.com/code.html?r4kwkcWiHfzQZkM1qrX4 { wasSeparator = ; words = ; ( c text) { (isSeparator(c)) { wasSeparator = ; ; } (wasSeparator) { words++; wasSeparator = ; } } words; } { separators = [ , , , , , , , , ]; separators.includes(c); } println(countWords( )); println(countWords( )); println(countWords( )); println(countWords( )); println(countWords( )); println(countWords( )); // Solution 1 ( ) function countWords text var true var 0 for var of // if current character is separator then advance and // set that the previous character was separator if true continue // if current character is not separator // ... but if previous was separator... if false return ( ) function isSeparator c var " " "\t" "\n" "\r" "," ";" "." "!" "?" return "" " " "JavaScript!!! " " JavaScript" " JavaScript is cool " "I like to learn JavaScript with codeguppy" Coding challenge #31b. Create a function that will return the number of words in a text https://codeguppy.com/code.html?8pdZSfchSXNxBK1f7r7s { words = ; (text.length > && !isSeparator(text[ ])) words++; ( i = ; i < text.length; i++) { currChr = text[i]; prevChr = text[i - ]; (!isSeparator(currChr) && isSeparator(prevChr)) { words++; } } words; } { separators = [ , , , , , , , , ]; separators.includes(c); } println(countWords( )); println(countWords( )); println(countWords( )); println(countWords( )); println(countWords( )); println(countWords( )); // Solution 2 ( ) function countWords text var 0 if 0 0 for var 1 var var 1 if return ( ) function isSeparator c var " " "\t" "\n" "\r" "," ";" "." "!" "?" return "" " " "JavaScript!!! " " JavaScript" " JavaScript is cool " "I like to learn JavaScript with codeguppy" Coding challenge #32. Create a function that will capitalize the first letter of each word in a text https://codeguppy.com/code.html?OJoMXT4GKasSfNeX4hjH println(captializeWords( )); { text2 = ; ( i = ; i < text.length; i++) { currChr = text[i]; prevChr = i > ? text[i - ] : ; (!isSeparator(currChr) && isSeparator(prevChr)) { currChr = currChr.toUpperCase(); } text2 += currChr; } text2; } { separators = [ , , , , , , , , ]; separators.includes(c); } "Create a function that will capitalize the first letter of each word in a text" ( ) function captializeWords text var "" for var 0 var var 0 1 " " if return ( ) function isSeparator c var " " "\t" "\n" "\r" "," ";" "." "!" "?" return Coding challenge #33. Calculate the sum of numbers received in a comma delimited string https://codeguppy.com/code.html?QL6H38rpqjGarwCfsbO3 println(sumCSV( )); { ar = s.split( ); sum = ; ( n ar) { sum += (n); } sum; } "1.5, 2.3, 3.1, 4, 5.5, 6, 7, 8, 9, 10.9" ( ) function sumCSV s var "," var 0 for var of parseFloat return Coding challenge #34. Create a function that will return an array with words inside a text https://codeguppy.com/code.html?IJI0E4OGnkyTZnoszAzf text = ; println(getWords(text)); { startWord = ; ar = []; ( i = ; i <= text.length; i++) { c = i < text.length ? text[i] : ; (!isSeparator(c) && startWord < ) { startWord = i; } (isSeparator(c) && startWord >= ) { word = text.substring(startWord, i); ar.push(word); startWord = ; } } ar; } { separators = [ , , , , , , , , , , ]; separators.includes(c); } var "Create a function, that will return an array (of string), with the words inside the text" ( ) function getWords text let -1 let for let 0 let " " if 0 if 0 let -1 return ( ) function isSeparator c var " " "\t" "\n" "\r" "," ";" "." "!" "?" "(" ")" return Coding challenge #35. Create a function to convert a CSV text to a “bi-dimensional” array https://codeguppy.com/code.html?5Hqv93WXQ6OOjAYApLGw data = ; ar = csvToArray(data); println( .stringify(ar)); { arLines = data.split( ); ( i = ; i < arLines.length; i++) { arLine = arLines[i].split( ); arLines[i] = arLine; } arLines; } var "John;Smith;954-000-0000\nMich;Tiger;305-000-0000\nMonique;Vasquez;103-000-0000" var JSON ( ) function csvToArray data var "\n" for var 0 var ";" return Coding challenge #36. Create a function that converts a string to an array of characters https://codeguppy.com/code.html?XCD9vmSQ34HrascysDBL Coding challenge # Create a 36. :// . / . ? function that converts a string to an array of characters https codeguppy com code html XCD9vmSQ34HrascysDBL Coding challenge #37. Create a function that will convert a string in an array containing the ASCII codes of each character https://codeguppy.com/code.html?suDlTrNYYmCpNJhZpPdB println(getCharCodes( )); { ar = []; ( i = ; i < s.length; i++) { code = s.charCodeAt(i); ar.push(code); } ar; } "I like JavaScript" ( ) function getCharCodes s var for var 0 var return Coding challenge #38. Create a function that will convert an array containing ASCII codes in a string https://codeguppy.com/code.html?QGWEPdBEVk4RFGn6UVhP println(codesToString([ , , , , , , , , , , , , , , , , ])); { .fromCharCode(...ar); } 73 32 108 105 107 101 32 74 97 118 97 83 99 114 105 112 116 ( ) function codesToString ar return String Coding challenge #39. Implement the Caesar cypher https://codeguppy.com/code.html?kextwiVVb9VwhKajJriG text = ; textEnc = encrypt(text, ); textDec = decrypt(textEnc, ); println(text); println(textEnc); println(textDec); { encrypt(msg, key * ); } { encMsg = ; ( i = ; i < msg.length; i++) { code = msg.charCodeAt(i); (code >= && code <= + - ) { code -= ; code = mod(code + key, ); code += ; } encMsg += .fromCharCode(code); } encMsg; } { ( n < ) n = p - .abs(n) % p; n % p; } var "I LOVE JAVASCRIPT" var 13 var 13 // Decrypt a message by using the same encrypt function // ... but using the inverse of the key (e.g. rotate in the other direction) ( ) function decrypt msg, key return -1 // Function will implement Caesar Cipher to // encrypt / decrypt the msg by shifting the letters // of the message acording to the key ( ) function encrypt msg, key var "" for var 0 var // Encrypt only letters in 'A' ... 'Z' interval if 65 65 26 1 65 26 65 String return // Modulo function: n mod p ( ) function mod n, p if 0 Math return Coding challenge #40. Implement the bubble sort algorithm for an array of numbers https://codeguppy.com/code.html?6bPnKHLhArSPdUPK2mqm ar = [ , , , , , ]; println(ar); bubbleSort(ar); println(ar); { shouldSort = ; length = ar.length; (shouldSort) { shouldSort = ; length--; ( i = ; i < length; i++) { a = ar[i]; ( a > ar[i+ ] ) { ar[i] = ar[i+ ]; ar[i+ ] = a; shouldSort = ; } } } } var 23 1000 1 -1 8 3 ( ) function bubbleSort ar var true var while false for var 0 var if 1 1 1 true Coding challenge #41. Create a function to calculate the distance between two points defined by their x, y coordinates https://codeguppy.com/code.html?mnAuF3BjhDaFwBtDUnI4 println(getDistance( , , , )); { l1 = x2 - x1; l2 = y2 - y1; .sqrt(l1 * l1 + l2 * l2); } 100 100 400 300 ( ) function getDistance x1, y1, x2, y2 var var return Math Coding challenge #42. Create a function that will return a Boolean value indicating if two circles defined by center coordinates and radius are intersecting https://codeguppy.com/code.html?cTZiewHGAErNUjYRCE6f println(collisionCircleCircle( , , , , , )); { getDistance(circle1X, circle1Y, circle2X, circle2Y) <= circle1R + circle2R; } { l1 = x2 - x1; l2 = y2 - y1; .sqrt(l1 * l1 + l2 * l2); } 200 200 100 300 300 50 ( ) function collisionCircleCircle circle1X, circle1Y, circle1R, circle2X, circle2Y, circle2R return // Calculate the distance between the two specified points ( ) function getDistance x1, y1, x2, y2 var var return Math Coding challenge 43. Create a function that will receive a bi-dimensional array as argument and a number and will extract as a unidimensional array the column specified by the number https://codeguppy.com/code.html?b22i9I5CUkFTdHF4Bod8 ar = [ [ , ], [ , ], [ , ], [ , ], [ , ] ]; numbers = extractCol(ar, ); println(numbers); { arCol = []; ( i = ; i < ar.length; i++) { arCol.push(ar[i][colNo]); } arCol; } var "John" 120 "Jane" 115 "Thomas" 123 "Mel" 112 "Charley" 122 var 1 ( ) function extractCol ar, colNo var for var 0 return Coding challenge #44. Create a function that will convert a string containing a binary number into a number https://codeguppy.com/code.html?iDykr8pqeuTPgZjVAvWv println(binaryToNumber( )); { (sBinary, ); } "11111111" ( ) function binaryToNumber sBinary return parseInt 2 Coding challenge #45. Create a function to calculate the sum of all the numbers in a jagged array (array contains numbers or other arrays of numbers on an unlimited number of levels) https://codeguppy.com/code.html?3gu4jcQRpBQWu2EsJrv0 ar = [ , , [ , [ ], [ , ]], [ ]]; println(sumArray(ar)); { sum = ; ( el ar) { ( .isArray(el)) { el = sumArray(el); } sum += el; } sum; } var 1 2 15 23 5 12 100 ( ) function sumArray ar var 0 for var of if Array return Coding challenge #46-a. Find the maximum number in a jagged array of numbers or array of numbers https://codeguppy.com/code.html?oT5nrxux2yAgIRsuXBSK ar = [ , , , [ , , [ , ], ], [ , , ], ]; max = findMax(ar); println( , max); { max = - ; ( i = ; i < ar.length; i++) { el = ar[i]; ( .isArray(el) ) { el = findMax( el ); } ( el > max ) { max = el; } } max; } // Solution 1 var 2 4 10 12 4 100 99 4 3 2 99 0 var "Max = " // Use recursion to find the maximum numeric value in an array of arrays ( ) function findMax ar var Infinity // Cycle through all the elements of the array for var 0 var // If an element is of type array then invoke the same function // to find out the maximum element of that subarray if Array if return Coding challenge #46-b. Find the maximum number in a jagged array of numbers or array of numbers https://codeguppy.com/code.html?VvLiW0W3lwnMrbwC9epp ar = [ , , , [ , , [ , ], ], [ , , ], ]; max = findMax(ar); println( , max); { max = - ; arrays = []; arrays.push(arElements); (arrays.length > ) { ar = arrays.pop(); ( i = ; i < ar.length; i++) { el = ar[i]; ( .isArray(el) ) { arrays.push(el); ; } ( el > max ) { max = el; } } } max; } // Solution 2 var 2 4 10 12 4 100 99 4 3 2 99 0 var "Max = " // Use a stack to find the maximum numeric value in an array of arrays ( ) function findMax arElements var Infinity // This is the stack on which will put the first array and then // all the other sub-arrays that we find as we traverse an array var // Loop as long as are arrays added to the stack for processing while 0 // Extract an array from the stack // ... and loop through its elements for var 0 var // If an element is of type array, we'll add it to stack // to be processed later if Array continue if return Coding challenge #47. Deep copy a jagged array with numbers or other arrays in a new array https://codeguppy.com/code.html?4eRqha7h7kjOLnDTyf00 ar1 = [ , , , [ , , [ , ], ], [ , , ], ]; ar2 = copyArray(ar1); println(ar2); { ar2 = []; ( el ar) { ( .isArray(el)) { el = copyArray(el); } ar2.push(el); } ar2; } var 2 4 10 12 4 100 99 4 3 2 99 0 var ( ) function copyArray ar var for var of if Array return Coding challenge #48. Create a function to return the longest word(s) in a string https://codeguppy.com/code.html?6O219iv12e5UaC30fcbG text = ; println(getLongestWords(text)); { words = getWords(text); maxSize = ; maxPositions = []; ( i = ; i < words.length; i++) { currWordSize = words[i].length; (currWordSize > maxSize) { maxSize = currWordSize; maxPositions = [ i ]; } (currWordSize === maxSize) { maxPositions.push(i); } } getElements(words, maxPositions); } { arNew = []; ( pos arPositions) { arNew.push(ar[pos]); } arNew; } { startWord = ; ar = []; ( i = ; i <= text.length; i++) { c = i < text.length ? text[i] : ; (!isSeparator(c) && startWord < ) { startWord = i; } (isSeparator(c) && startWord >= ) { word = text.substring(startWord, i); ar.push(word); startWord = ; } } ar; } { separators = [ , , , , , , , , , , ]; separators.includes(c); } var "Create a function to return the longest word(s) in a sentance." ( ) function getLongestWords text var var 0 var for var 0 var if else if return // Get only the elements from specified positions from the array ( ) function getElements ar, arPositions var for var of return // Returns an array with the words from specified text ( ) function getWords text let -1 let for let 0 let " " if 0 if 0 let -1 return ( ) function isSeparator c var " " "\t" "\n" "\r" "," ";" "." "!" "?" "(" ")" return Coding challenge #49. Shuffle an array of strings https://codeguppy.com/code.html?EHvbHKy5uPvSKxsaeqWv ar = [ , , , , ]; println(shuffleArray(ar)); { ( i = ar.length - ; i > ; i--) { j = randomInt( , i - ); t = ar[i]; ar[i] = ar[j]; ar[j] = t; } ar; } { .floor( .random() * (max - min + ) ) + min; } var "Shuffle" "an" "array" "of" "strings" // Shuffle array implemented using Fisher–Yates shuffle algorithm ( ) function shuffleArray ar for var 1 0 var 0 1 var return // Get a random int between min and max (both included) ( ) function randomInt min, max return Math Math 1 Coding challenge #50. Create a function that will receive n as argument and return an array of n unique random numbers from 1 to n. https://codeguppy.com/code.html?GfCrzPkGSPKbvLuf6KyA println(getRandomNumbers( )); { ar = []; ( i = ; i <= n; i++) { ar.push(i); } shuffleArray(ar); ar; } { ( i = ar.length - ; i > ; i--) { j = randomInt( , i - ); t = ar[i]; ar[i] = ar[j]; ar[j] = t; } ar; } { .floor( .random() * (max - min + ) ) + min; } 10 ( ) function getRandomNumbers n var for var 1 return // Shuffle array implemented using Fisher–Yates shuffle algorithm ( ) function shuffleArray ar for var 1 0 var 0 1 var return // Get a random int between min and max (both included) ( ) function randomInt min, max return Math Math 1 Coding challenge #51. Find the frequency of characters inside a string. Return the result as an array of objects. Each object has 2 fields: character and number of occurrences. https://codeguppy.com/code.html?e8wHQuJmeYCDKml5k07d ar = getCharFrequency( ); println( .stringify(ar)); { ar = []; ( chr text) { updateFrequency(ar, chr); } ar; } { ( el ar) { (el.chr === chr) { el.count++; } } ar.push({ : chr, : }); } var "Find the frequency of characters inside a string" JSON ( ) function getCharFrequency text var for var of return ( ) function updateFrequency ar, chr for var of if chr count 1 Coding challenge #52. Calculate Fibonacci(500) with high precision (all decimals) https://codeguppy.com/code.html?OD5GDYyCVo4wgTRCXzRU println(fibonacci( )); { (n === ) ; (n === ) ; n1 = ; n2 = ; ( i = ; i <= n; i++) { sum = add(n1, n2); n1 = n2; n2 = sum; } n2; } { maxSize = .max(sNumber1.length, sNumber2.length); s1 = sNumber1.padStart(maxSize, ); s2 = sNumber2.padStart(maxSize, ); s = ; carry = ; ( i = maxSize - ; i >= ; i--) { digit1 = (s1[i]); digit2 = (s2[i]); sum = digit1 + digit2 + carry; digitSum = sum % ; carry = sum >= ? : ; s = digitSum.toString() + s; } (carry > ) s = carry + s; s; } 500 ( ) function fibonacci n if 0 return "0" if 1 return "1" var "0" var "1" for var 2 var return ( ) function add sNumber1, sNumber2 var Math var "0" var "0" var "" var 0 for var 1 0 var parseInt var parseInt var var 10 10 1 0 if 0 return Coding challenge #53. Calculate 70! with high precision (all digits) https://codeguppy.com/code.html?m4AfgJmCABGNEvKlUNtM println(factorial( )); { prod = ; ( i = ; i <= n; i++) { prod = mult(prod, i.toString()); } prod; } { partialResults = []; ( i = sNumber2.length - ; i >= ; i--) { digit = (sNumber2[i]); partialResult = multDigit(sNumber1, digit); partialResult += .repeat(partialResults.length); partialResults.push(partialResult); } sum = ; ( r partialResults) { sum = add(sum, r); } sum; } { p = ; carry = ; ( i = sNumber.length - ; i >= ; i--) { numberDigit = (sNumber[i]); prod = digit * numberDigit + carry; prodDigit = prod % ; carry = .floor(prod / ); p = prodDigit.toString() + p; } (carry > ) p = carry + p; p; } { maxSize = .max(sNumber1.length, sNumber2.length); s1 = sNumber1.padStart(maxSize, ); s2 = sNumber2.padStart(maxSize, ); s = ; carry = ; ( i = maxSize - ; i >= ; i--) { digit1 = (s1[i]); digit2 = (s2[i]); sum = digit1 + digit2 + carry; digitSum = sum % ; carry = sum >= ? : ; s = digitSum.toString() + s; } (carry > ) s = carry + s; s; } 70 // Calculate factorial(n) ... using big number calculations ( ) function factorial n var "1" for var 2 return // Multiplies sNumber1 * sNumber2 // Each number is provided as string ( ) function mult sNumber1, sNumber2 // Calculate partial results according to multiplication algorithm var for var 1 0 var parseInt var "0" // Sum partial results to obtain the product var "" for var of return // Multiplies number sNumber (as string) with a single digit number ( ) function multDigit sNumber, digit var "" var 0 for var 1 0 var parseInt var var 10 Math 10 if 0 return ( ) function add sNumber1, sNumber2 var Math var "0" var "0" var "" var 0 for var 1 0 var parseInt var parseInt var var 10 10 1 0 if 0 return If you have a github account you can fork the entire repository with these challenges from I hope you had fun browsing through these coding challenges. If you like them, and you want more coding challenges for beginners please leave a comment or send a tweet to . https://github.com/CodeGuppyPrograms/CodingChallenges @codeguppy Happy coding! Previously published at https://github.com/CodeGuppyPrograms/CodingChallenges