# JavaScript

When you're logged in, you can say `exercism fetch javascript` to get the next available exercise on the track.

Every time you submit a solution to an exercise, you will get the next in line the next time you fetch.

If you want to try a specific exercise, you can always fetch it directly (commands are listed below).

The exercises are ordered roughly in order of difficulty.

### Available Exercises

• Hello World The classical introductory exercise. Just say "Hello, World!"
• Two Fer Create a sentence of the form "One for X, one for me."
• Leap Given a year, report if it is a leap year.
• Reverse String Reverse a string
• Rna Transcription Given a DNA strand, return its RNA Complement Transcription.
• Simple Cipher Implement a simple shift cipher like Caesar and a more secure substitution cipher
• Pangram Determine if a sentence is a pangram.
• Bob Bob is a lackadaisical teenager. In conversation, his responses are very limited.
• Gigasecond Calculate the moment when someone has lived for 10^9 seconds.
• Space Age Given an age in seconds, calculate how old someone is in terms of a given planet's solar years.
• Binary Convert a binary number, represented as a string (e.g. '101010'), to its decimal equivalent using first principles
• Prime Factors Compute the prime factors of a given natural number.
• Matrix Given a string representing a matrix of numbers, return the rows and columns of that matrix.
• Pascals Triangle Compute Pascal's triangle up to a given number of rows.
• Secret Handshake Given a decimal number, convert it to the appropriate sequence of events for a secret handshake.
• Rotational Cipher Create an implementation of the rotational cipher, also sometimes called the Caesar cipher.
• Grade School Given students' names along with the grade that they are in, create a roster for the school
• Robot Name Manage robot factory settings.
• Wordy Parse and evaluate simple math word problems returning the answer as an integer.
• List Ops Implement basic list operations
• Rational Numbers Implement rational numbers.
• Hamming Calculate the Hamming difference between two DNA strands.
• Run Length Encoding Implement run-length encoding and decoding.
• Isogram Determine if a word or phrase is an isogram.
• Beer Song Produce the lyrics to that beloved classic, that field-trip favorite: 99 Bottles of Beer on the Wall.
• Phone Number Clean up user-entered phone numbers so that they can be sent SMS messages.
• Anagram Given a word and a list of possible anagrams, select the correct sublist.
• Food Chain Generate the lyrics of the song 'I Know an Old Lady Who Swallowed a Fly'
• Etl We are going to do the `Transform` step of an Extract-Transform-Load.
• Sublist Write a function to determine if a list is a sublist of another list.
• Grains Calculate the number of grains of wheat on a chessboard given that the number on each square doubles.
• Triangle Determine if a triangle is equilateral, isosceles, or scalene.
• Clock Implement a clock that handles times without dates.
• Perfect Numbers Determine if a number is perfect, abundant, or deficient based on Nicomachus' (60 - 120 CE) classification scheme for natural numbers.
• Word Count Given a phrase, count the occurrences of each word in that phrase.
• Acronym Convert a long phrase to its acronym
• Scrabble Score Given a word, compute the scrabble score for that word.
• Roman Numerals Write a function to convert from normal numbers to Roman Numerals.
• Circular Buffer A data structure that uses a single, fixed-size buffer as if it were connected end-to-end.
• Raindrops Convert a number to a string, the contents of which depend on the number's factors.
• Allergies Given a person's allergy score, determine whether or not they're allergic to a given item, and their full list of allergies.
• Strain Implement the `keep` and `discard` operation on collections. Given a collection and a predicate on the collection's elements, `keep` returns a new collection containing those elements where the predicate is true, while `discard` returns a new collection containing those elements where the predicate is false.
• Atbash Cipher Create an implementation of the atbash cipher, an ancient encryption system created in the Middle East.
• Accumulate Implement the `accumulate` operation, which, given a collection and an operation to perform on each element of the collection, returns a new collection containing the result of applying that operation to each element of the input collection.
• Crypto Square Implement the classic method for composing secret messages called a square code.
• Trinary Convert a trinary number, represented as a string (e.g. '102012'), to its decimal equivalent using first principles.
• Sieve Use the Sieve of Eratosthenes to find all the primes from 2 up to a given number.
• Octal Convert a octal number, represented as a string (e.g. '1735263'), to its decimal equivalent using first principles (i.e. no, you may not use built-in or external libraries to accomplish the conversion).
• Luhn Given a number determine whether or not it is valid per the Luhn formula.
• Pig Latin Implement a program that translates from English to Pig Latin
• Pythagorean Triplet There exists exactly one Pythagorean triplet for which a + b + c = 1000. Find the product a * b * c.
• Series Given a string of digits, output all the contiguous substrings of length `n` in that string.
• Difference Of Squares Find the difference between the square of the sum and the sum of the squares of the first N natural numbers.
• Proverb For want of a horseshoe nail, a kingdom was lost, or so the saying goes. Output the full text of this proverbial rhyme.
• Flatten Array Take a nested list and return a single list with all values except nil/null
• Hexadecimal Convert a hexadecimal number, represented as a string (e.g. "10af8c"), to its decimal equivalent using first principles (i.e. no, you may not use built-in or external libraries to accomplish the conversion).
• Largest Series Product Given a string of digits, calculate the largest product for a contiguous substring of digits of length n.
• Kindergarten Garden Given a diagram, determine which plants each child in the kindergarten class is responsible for.
• Binary Search Implement a binary search algorithm.
• Binary Search Tree Insert and search for numbers in a binary tree.
• Robot Simulator Write a robot simulator.
• Nth Prime Given a number n, determine what the nth prime is.
• Palindrome Products Detect palindrome products in a given range.
• Say Given a number from 0 to 999,999,999,999, spell out that number in English.
• Custom Set Create a custom set type.
• Sum Of Multiples Given a number, find the sum of all the multiples of particular numbers up to but not including that number.
• Queen Attack Given the position of two queens on a chess board, indicate whether or not they are positioned so that they can attack each other.
• Ocr Numbers Given a 3 x 4 grid of pipes, underscores, and spaces, determine which number is represented, or whether it is garbled.
• Meetup Calculate the date of meetups.
• Bracket Push Make sure the brackets and braces all match.
• Two Bucket Given two buckets of different size, demonstrate how to measure an exact number of liters.
• Bowling Score a bowling game
• Diamond Given a letter, print a diamond starting with 'A' with the supplied letter at the widest point.
• All Your Base Convert a number, represented as a sequence of digits in one base, to any other base.
• Minesweeper Add the numbers to a minesweeper board
• Alphametics Write a function to solve alphametics puzzles.
• Simple Linked List Write a simple linked list implementation that uses Elements and a List
• Diffie Hellman Diffie-Hellman key exchange.
• Change Correctly determine change to be given using the least number of coins
• Connect Compute the result for a game of Hex / Polygon
• Collatz Conjecture Calculate the number of steps to reach 1 using the Collatz conjecture
• Twelve Days Output the lyrics to 'The Twelve Days of Christmas'
• Transpose Take input text and output it transposed.
• Protein Translation Translate RNA sequences into proteins.
• Zipper Creating a zipper for a binary tree.
• Isbn Verifier Check if a given string is a valid ISBN-10 number.
• Forth Implement an evaluator for a very simple subset of Forth
• Variable Length Quantity Implement variable length quantity encoding and decoding.
• Rectangles Count the rectangles in an ASCII diagram.
• Armstrong Numbers Determine if a number is an Armstrong number