r/learnjavascript • • Jun 15 '19

50 micro coding challenges for JavaScript learners

This is a list of 50 micro coding challenges intended for beginners that just learned the basis of JavaScript language. Solve them to improve or test your coding skills and language understanding.

Although the challenges are designed for codeguppy.com learners, the challenges are platform agnostic so any JavaScript beginner can have fun with them.

What coding environment to use?

We recommend using an online JavaScript coding environment that allows you to share your code with others if you decide so. codeguppy.com is one option, but any other online JavaScript playground will work just fine.

Coding challenges

  1. Print numbers from 1 to 10.Note: If you are using codeguppy.com, use can use the the println() function to print directly on the screen, otherwise use console.log() to output in the browser console.

  2. Print the odd numbers less than 100

  3. Print the multiplication table with 7

  4. Print all the multiplication tables with numbers from 1 to 10

  5. Calculate the sum of numbers from 1 to 10

  6. Calculate 10!

  7. Calculate the sum of even numbers greater than 10 and less than 30

  8. Calculate the sum of numbers in an array of numbers

  9. Calculate the average of the numbers in an array of numbers

  10. Create a function that receives an array of numbers as argument and returns an array containing only the positive numbers

  11. Find the maximum number in an array of numbers

  12. Print the first 10 Fibonacci numbers without recursion

  13. Create a function that will find the nth Fibonacci number using recursion

  14. Create a function that will return a boolean specifying if a number is prime

  15. Calculate the sum of digits of a positive integer number

  16. Print the first 100 prime numbers

  17. Create a function that will return in an array the first “p” prime numbers greater than “n”

  18. Rotate an array to the left 1 position

  19. Rotate an array to the right 1 position

  20. Create a function to reverse an array and return the result as a new array

  21. Create a function that will merge two arrays and return the result as a new array

  22. 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

  23. 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

  24. Create a function that will receive an array of numbers as argument and will return a new array with distinct elements

  25. Calculate the sum of first 100 prime numbers and return them in an array

  26. Print the distance between the first 100 prime numbers

  27. 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.

  28. Create a function that will return the number of words in a text

  29. Create a function that will capitalize the first letter of each word in a text

  30. Calculate the sum of numbers received in a comma delimited string

  31. Create a function that returns the number of occurrences of each word inside a text. The return will be an array with objects inside {word, count}

  32. Create a function to convert a CSV text to a “bi-dimensional” array

  33. Create a function that converts a string to an array of characters

  34. Create a function that will convert a string in an array containing the ASCII codes of each character

  35. Create a function that will convert an array containing ASCII codes in a string

  36. Implement the Caesar cypher as a single function encryptDecrypt(text, key);

  37. Implement the bubble sort algorithm for an array of numbers

  38. Create a function to calculate the distance between two points defined by their x, y coordinates

  39. Create a function that will return a Boolean value indicating if two circles defined by center coordinates and radius are intersecting

  40. 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

  41. Create a function that will convert a string containing a binary number into a number

  42. Create a function to calculate the sum of all the numbers in a jagged array (contains numbers or other arrays of numbers on an unlimited number of levels)

  43. Find the maximum number in a jagged array of numbers or array of numbers

  44. Deep copy a jagged array with numbers or other arrays in a new array

  45. Create a function to return the longest word in a string

  46. Shuffle an array of strings

  47. Create a function that will receive n as argument and return an array of n random numbers from 1 to n. The numbers should be unique inside the array.

  48. Find the frequency of letters inside a string. Return the result as an array of arrays. Each subarray has 2 elements: letter and number of occurrences.

  49. Calculate Fibonacci(500) with high precision (all decimals)

  50. Calculate 70! with high precision (all decimals)

Have fun… and don’t forget to share your solutions or comment about your progress. If you are a Twitter user, you can also tweet about your progress with hashtag #codeguppychallenge

231 Upvotes

15 comments sorted by

3

u/jkuhl_prog Jun 16 '19 edited Jun 16 '19

I don't understand the last two, is it expecting us to do Fib and Factorial with decimal numbers? I was unaware those calculations could take anything other than integers.

Also, to make things more interesting, #41 should forbid the use of parseInt

1

u/floodlitworld Jun 16 '19

parseInt will fail if the number isn't the very first character of the string. So it's a pretty simple replace(/[^0-9]/g,"") job before the parseInt, but not as simple as just chucking it into a parser.

1

u/jkuhl_prog Jun 16 '19

True, but actually manually moving across 1's and 0's will test one's knowledge of how the binary number system works and how it can be converted to decimal.

2

u/strayakant Jun 16 '19

Anyone got the solutions?

3

u/546794 Jun 16 '19

What question do you need help with

1

u/floodlitworld Jun 16 '19

Well, for #48, I did this:

function alphaCount(str) {
	let arr = [];
    while (str) {
    	let a = str.charAt(0).toLowerCase();
        let regex = new RegExp(a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'),"gi");
        let match = str.match(regex);
        str = str.replace(regex,"");
        arr.push([a,match.length])
    }
    return arr;
}

console.log(alphaCount("You don't understand! I coulda had class. I coulda been a contender. I coulda been somebody, instead of a bum, which is what I am."));

1

u/hpliferaft Jun 16 '19

Love it. I tried another approach:

console.log(
    Object.entries(
        "You don't understand! I coulda had class. I coulda been a contender. I coulda been somebody, instead of a bum, which is what I am."
        .split("")
        .filter(letter => RegExp(/^[A-Za-z]+$/).test(letter))
        .reduce( (allLetters, letter) => {
            if (letter in allLetters) {allLetters[letter]++}else {allLetters[letter] = 1;}
            return allLetters
        }, {})
    )
);

2

u/floodlitworld Jun 16 '19

I thought of another way too...

function alphaCount(str) {
    return [...new Set(str.toLowerCase().replace(/[^a-z]/gi,""))].sort().map(x => {
    	let regex = new RegExp(x.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'),"gi");
    	return [x,str.match(regex).length];
    })
}

console.log(alphaCount("You don't understand! I coulda had class. I coulda been a contender. I coulda been somebody, instead of a bum, which is what I am."));

2

u/catz342 Jun 15 '19

Thanks, I needed this!

1

u/Tamashe Jun 16 '19

Cool. Thanks!

1

u/[deleted] Jun 16 '19

Thank you !

1

u/Sebus059 Jun 16 '19 edited Jun 17 '19

Shortest way for #6 (ES6 syntax)

let factTen =(F=_=>!_?1:_*F(_-1))(10);

;-)

1

u/senocular Jun 17 '19

What is F?

1

u/Sebus059 Jun 17 '19

Oups ! Corrected !

1

u/legobreath Jun 17 '19

Thanks for this. I'm currently working through Head First JavaScript (really enjoying it), and this will help me expand on some of the topics.