Explore the JavaScript exercises on Exercism
Unlock more exercises as you progress. They’re great practice and fun to do!
Hello World
Tutorial Exercise
Exercism's classic introductory exercise. Just say "Hello, World!".
Lucian's Luscious Lasagna
Learn the basics of JavaScript cooking a brilliant lasagna from your favorite cooking book.
Annalyn's Infiltration
Help Annalyn free her best friend using boolean logic in JavaScript
Freelancer Rates
Learn about numbers whilst helping a freelancer communicate with a project manager about day- and month rates.
Poetry Club Door Policy
Learn about strings using poems to get into the poetry club.
Elyses Enchantments
Help Elyse with her Enchantments and learn about arrays in the process.
Vehicle Purchase
Learn about comparison and conditionals while preparing for your next vehicle purchase
Bird Watcher
Professionalize counting the birds in your garden with for loops and increment/decrement operators
Mixed Juices
Help your friend Li Mei run her juice bar with your knowledge of while loops and switch statements.
Lucky Numbers
Practice type conversion while helping your friend Kojo with his website www.fun-with-numbers.com.
Elyses Analytic Enchantments
Elyse's magic training continues, teaching you about useful built-in methods to analyse arrays.
Elyses Destructured Enchantments
Elyse's magic training continues, teaching you about array destructing and the rest/spread operator.
Elyses Looping Enchantments
Sift through Elyse's array of cards using various looping methods.
Amusement Park
Learn about undefined and null by managing visitors and tickets at an amusement park.
Pizza Order
Allow customers to calculate the cost of their order
Coordinate Transformation
Practice your knowledge of closures by implementing various coordinate transformations.
Fruit Picker
Learn about callbacks ordering fruit from the grocer
Translation Service
Connect to the Klingon Translation Service and learn about promises.
High Score Board
Practice JavaScript objects by tracking high scores of an arcade game.
Ozan's Playlist
Use sets to avoid repeating tracks in a playlist
Lasagna Master
Dive deeper into JavaScript functions while preparing to cook the perfect lasagna.
Factory Sensors
Learn how to handle errors by creating a piece of software for a newspaper factory.
Elyses Transformative Enchantments
Elyse has grown her magical powers and attempts some really cool tricks now while you learn about transforming arrays.
Custom Signs
Learn about template strings and the ternary operator ...
Windowing System
Learn about prototypes and classes by developing a windowing system.
Regular Chatbot
Learn the basics of regular expressions with JavaScript by helping a chatbot understand humans.
Two Fer
Easy
Create a sentence of the form "One for X, one for me.".
Resistor Color
Easy
Convert a resistor band's color to its numeric representation.
Resistor Color Duo
Easy
Convert color codes, as used on resistors, to a numeric value.
Gigasecond
Easy
Given a moment, determine the moment that would be after a gigasecond has passed.
RNA Transcription
Easy
Given a DNA strand, return its RNA Complement Transcription.
Space Age
Easy
Given an age in seconds, calculate how old someone is in terms of a given planet's solar years.
Pangram
Easy
Determine if a sentence is a pangram.
Matrix
Easy
Given a string representing a matrix of numbers, return the rows and columns of that matrix.
Bob
Medium
Bob is a lackadaisical teenager. In conversation, his responses are very limited.
Book Store
Medium
To try and encourage more sales of different books from a popular 5 book series, a bookshop has decided to offer discounts of multiple-book purchases.
Pascal's Triangle
Medium
Compute Pascal's triangle up to a given number of rows.
Linked List
Medium
Implement a doubly linked list.
Grade School
Medium
Given students' names along with the grade that they are in, create a roster for the school.
List Ops
Medium
Implement basic list operations.
Robot Name
Medium
Manage robot factory settings.
Simple Cipher
Medium
Implement a simple shift cipher like Caesar and a more secure substitution cipher.
Wordy
Medium
Parse and evaluate simple math word problems returning the answer as an integer.
Secret Handshake
Medium
Given a decimal number, convert it to the appropriate sequence of events for a secret handshake.
Leap
Easy
Determine whether a given year is a leap year.
Reverse String
Easy
Reverse a given string.
Collatz Conjecture
Easy
Calculate the number of steps to reach 1 using the Collatz conjecture.
Triangle
Easy
Determine if a triangle is equilateral, isosceles, or scalene.
Clock
Medium
Implement a clock that handles times without dates.
Meetup
Medium
Calculate the date of meetups.
ETL
Easy
Change the data format for scoring a game to more easily add other languages.
Hamming
Easy
Calculate the Hamming distance between two DNA strands.
Raindrops
Easy
Convert a number into its corresponding raindrop sounds - Pling, Plang and Plong.
Nucleotide Count
Medium
Given a DNA string, compute how many times each nucleotide occurs in the string.
Scrabble Score
Medium
Given a word, compute the Scrabble score for that word.
Allergies
Medium
Given a person's allergy score, determine whether or not they're allergic to a given item, and their full list of allergies.
Word Count
Medium
Given a phrase, count the occurrences of each word in that phrase.
Bank Account
Easy
Simulate a bank account supporting opening/closing, withdraws, and deposits of money. Watch out for concurrent transactions!
Difference of Squares
Easy
Find the difference between the square of the sum and the sum of the squares of the first N natural numbers.
Perfect Numbers
Easy
Determine if a number is perfect, abundant, or deficient based on Nicomachus' (60 - 120 CE) classification scheme for positive integers.
Complex Numbers
Medium
Implement complex numbers.
Luhn
Medium
Given a number determine whether or not it is valid per the Luhn formula.
Prime Factors
Medium
Compute the prime factors of a given natural number.
Grains
Medium
Calculate the number of grains of wheat on a chessboard given that the number on each square doubles.
Pythagorean Triplet
Medium
Given an integer N, find all Pythagorean triplets for which a + b + c = N.
Palindrome Products
Medium
Detect palindrome products in a given range.
Anagram
Easy
Given a word and a list of possible anagrams, select the correct sublist.
Acronym
Easy
Convert a long phrase to its acronym.
High Scores
Easy
Manage a player's High Score list.
Isogram
Easy
Determine if a word or phrase is an isogram.
Matching Brackets
Easy
Make sure the brackets and braces all match.
Phone Number
Easy
Clean up user-entered phone numbers so that they can be sent SMS messages.
Scale Generator
Easy
Generate musical scales, given a starting note and a set of intervals.
Series
Easy
Given a string of digits, output all the contiguous substrings of length `n` in that string.
Largest Series Product
Medium
Given a string of digits, calculate the largest product for a contiguous substring of digits of length n.
Transpose
Easy
Take input text and output it transposed.
Grep
Medium
Search a file for lines matching a regular expression pattern. Return the line number and contents of each matching line.
Rectangles
Medium
Count the rectangles in an ASCII diagram.
Spiral Matrix
Medium
Given the size, return a square matrix of numbers in spiral order.
OCR Numbers
Medium
Given a 3 x 4 grid of pipes, underscores, and spaces, determine which number is represented, or whether it is garbled.
Saddle Points
Medium
Detect saddle points in a matrix.
Forth
Hard
Implement an evaluator for a very simple subset of Forth.
Food Chain
Medium
Generate the lyrics of the song 'I Know an Old Lady Who Swallowed a Fly'.
House
Medium
Output the nursery rhyme 'This is the House that Jack Built'.
ISBN Verifier
Medium
Check if a given string is a valid ISBN-10 number.
Pig Latin
Medium
Implement a program that translates from English to Pig Latin.
Proverb
Medium
For want of a horseshoe nail, a kingdom was lost, or so the saying goes. Output the full text of this proverbial rhyme.
Twelve Days
Medium
Output the lyrics to 'The Twelve Days of Christmas'.
Promises
Medium
Practice promises by implementing some common promise functions.
Yacht
Medium
Score a single throw of dice in the game Yacht.
Resistor Color Trio
Medium
Convert color codes, as used on resistors, to a human-readable label.
Dominoes
Medium
Make a chain of dominoes.
Say
Medium
Given a number from 0 to 999,999,999,999, spell out that number in English.
Diamond
Medium
Given a letter, print a diamond starting with 'A' with the supplied letter at the widest point.
Rational Numbers
Medium
Implement rational numbers.
Sublist
Medium
Write a function to determine if a list is a sublist of another list.
Binary Search Tree
Medium
Insert and search for numbers in a binary tree.
Custom Set
Medium
Create a custom set type.
Binary Search
Medium
Implement a binary search algorithm.
Circular Buffer
Hard
A data structure that uses a single, fixed-size buffer as if it were connected end-to-end.
Simple Linked List
Hard
Write a simple linked list implementation that uses Elements and a List.
Word Search
Hard
Create a program to solve a word search puzzle.
Variable Length Quantity
Medium
Implement variable length quantity encoding and decoding.
Two Bucket
Medium
Given two buckets of different size, demonstrate how to measure an exact number of liters.
Alphametics
Medium
Given an alphametics puzzle, find the correct solution.
Connect
Medium
Compute the result for a game of Hex / Polygon.
Bowling
Hard
Score a bowling game.
Strain
Medium
Implement the `keep` and `discard` operation on collections.
Flatten Array
Medium
Take a nested list and return a single list with all values except nil/null.
Nth Prime
Medium
Given a number n, determine what the nth prime is.
Sieve
Medium
Use the Sieve of Eratosthenes to find all the primes from 2 up to a given number.
Rotational Cipher
Easy
Create an implementation of the rotational cipher, also sometimes called the Caesar cipher.
Diffie-Hellman
Easy
Diffie-Hellman key exchange.
Affine Cipher
Medium
Create an implementation of the Affine cipher, an ancient encryption algorithm from the Middle East.
Atbash Cipher
Medium
Create an implementation of the Atbash cipher, an ancient encryption system created in the Middle East.
Crypto Square
Hard
Implement the classic method for composing secret messages called a square code.
Robot Simulator
Medium
Write a robot simulator.
Kindergarten Garden
Medium
Given a diagram, determine which plants each child in the kindergarten class is responsible for.
Sum of Multiples
Medium
Given a number, find the sum of all the multiples of particular numbers up to but not including that number.
Change
Hard
Correctly determine change to be given using the least number of coins.
Protein Translation
Easy
Translate RNA sequences into proteins.
Armstrong Numbers
Easy
Determine if a number is an Armstrong number.
D&D Character
Easy
Randomly generate Dungeons & Dragons characters.
Run-Length Encoding
Easy
Implement run-length encoding and decoding.
Darts
Easy
Calculate the points scored in a single toss of a Darts game.
Roman Numerals
Easy
Convert modern Arabic numbers into Roman numerals.
Square Root
Medium
Given a natural radicand, return its square root.
All Your Base
Medium
Convert a number, represented as a sequence of digits in one base, to any other base.
Minesweeper
Medium
Add the numbers to a minesweeper board.
Queen Attack
Hard
Given the position of two queens on a chess board, indicate whether or not they are positioned so that they can attack each other.
React
Hard
Implement a basic reactive system.
Zipper
Hard
Creating a zipper for a binary tree.
Zebra Puzzle
Medium
Solve the zebra puzzle.
Tournament
Easy
Tally the results of a small football competition.
Rail Fence Cipher
Easy
Implement encoding and decoding for the rail fence cipher.
REST API
Medium
Implement a RESTful API for tracking IOUs.
Go Counting
Medium
Count the scored points on a Go board.
Knapsack
Medium
Given a knapsack that can only carry a certain weight, determine which items to put in the knapsack in order to maximize their combined value.
Satellite
Medium
Rebuild binary trees from pre-order and in-order traversals.
Poker
Medium
Pick the best hand(s) from a list of poker hands.
Eliud's Eggs
Easy
Help Eliud count the number of eggs in her chicken coop by counting the number of 1 bits in a binary representation.
Parallel Letter Frequency
Medium
Count the frequency of letters in texts using parallel computation.
Bottle Song
Medium
Produce the lyrics to the popular children's repetitive song: Ten Green Bottles.
Markdown
Medium
Refactor a Markdown parser.
Micro Blog
Easy
Given an input string, truncate it to 5 characters.
Ledger
Medium
Refactor a ledger printer.
State of Tic-Tac-Toe
Medium
Determine the game state of a match of Tic-Tac-Toe.
Lens Person
Medium
Use lenses to update nested records (specific to languages with immutable data).
Killer Sudoku Helper
Medium
Write a tool that makes it easier to solve Killer Sudokus