When you're logged in, you can say exercism fetch elixir 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, but it's a bit haphazard.

Available Exercises

  • Hello World Write a function that greets the user by name, or by saying "Hello, World!" if no name is given.
  • Nucleotide Count Given a DNA string, compute how many times each nucleotide occurs in the string.
  • Space Age Write a program that, given an age in seconds, calculates how old someone is in terms of a given planet's solar years.
  • Bob Bob is a lackadaisical teenager. In conversation, his responses are very limited.
  • Word Count Write a program that given a phrase can count the occurrences of each word in that phrase.
  • 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.
  • Acronym Convert a long phrase to its acronym
  • Raindrops Write a program that converts a number to a string, the contents of which depend on the number's factors.
  • Run Length Encoding Implement run-length encoding and decoding.
  • Sublist Write a function to determine if a list is a sublist of another list.
  • Scrabble Score Write a program that, given a word, computes the scrabble score for that word.
  • Sum Of Multiples Write a program that, given a number, can find the sum of all the multiples of particular numbers up to but not including that number.
  • Pangram Determine if a sentence is a pangram.
  • Anagram Write a program that, given a word and a list of possible anagrams, selects the correct sublist.
  • Bracket Push Make sure the brackets and braces all match.
  • Rna Transcription Write a program that, given a DNA strand, returns its RNA complement (per RNA transcription).
  • Phone Number Write a program that cleans up user-entered phone numbers so that they can be sent SMS messages.
  • Nth Prime Write a program that can tell you what the nth prime is.
  • Roman Numerals Write a function to convert from normal numbers to Roman Numerals.
  • Hamming Write a program that can calculate the Hamming difference between two DNA strands.
  • Triangle Write a program that can tell you if a triangle is equilateral, isosceles, or scalene.
  • Beer Song Write a program which produces the lyrics to that beloved classic, that field-trip favorite: 99 Bottles of Beer on the Wall.
  • Isogram Determine if a word or phrase is an isogram.
  • Grade School Write a small archiving program that stores students' names along with the grade that they are in.
  • List Ops Implement basic list operations
  • Flatten Array Write a program that will take a nested list and returns a single list with all values except nil/null
  • Leap Write a program that will take a year and report if it is a leap year.
  • Kindergarten Garden Write a program that, given a diagram, can tell you which plants each child in the kindergarten class is responsible for.
  • Etl We are going to do the `Transform` step of an Extract-Transform-Load.
  • Meetup Calculate the date of meetups.
  • Grains Write a program that calculates the number of grains of wheat on a chessboard given that the number on each square doubles.
  • Change Write a program that will correctly determine change to be given using the least number of coins
  • Parallel Letter Frequency Write a program that counts the frequency of letters in texts using parallel computation.
  • Binary Write a program that will convert a binary number, represented as a string (e.g. '101010'), to its decimal equivalent using first principles
  • Luhn Write a program that can take a number and determine whether or not it is valid per the Luhn formula.
  • Markdown Refactor a Markdown parser
  • Gigasecond Write a program that calculates the moment when someone has lived for 10^9 seconds.
  • Queen Attack Write a program that positions two queens on a chess board and indicates whether or not they are positioned so that they can attack each other.
  • Pascals Triangle Write a program that computes Pascal's triangle up to a given number of rows.
  • Saddle Points Write a program that detects saddle points in a matrix.
  • Hexadecimal Write a program that will 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).
  • Diamond Given a letter, print a diamond starting with 'A' with the supplied letter at the widest point.
  • Binary Search Write a program that implements a binary search algorithm.
  • Prime Factors Compute the prime factors of a given natural number.
  • Sieve Write a program that uses the Sieve of Eratosthenes to find all the primes from 2 up to a given number.
  • Wordy Parse and evaluate simple math word problems returning the answer as an integer.
  • Robot Simulator Write a robot simulator.
  • Atbash Cipher Create an implementation of the atbash cipher, an ancient encryption system created in the Middle East.
  • Bank Account Bank accounts can be accessed in different ways at the same time.
  • Largest Series Product Write a program that, when given a string of digits, can calculate the largest product for a contiguous substring of digits of length n.
  • Crypto Square Implement the classic method for composing secret messages called a square code.
  • Pythagorean Triplet There exists exactly one Pythagorean triplet for which a + b + c = 1000. Find the product a * b * c.
  • Allergies Write a program that, given a person's allergy score, can tell them whether or not they're allergic to a given item, and their full list of allergies.
  • Palindrome Products Write a program that can detect palindrome products in a given range.
  • Rail Fence Cipher Implement encoding and decoding for the rail fence cipher.
  • Zipper Creating a zipper for a binary tree.
  • Minesweeper Write a program that adds the numbers to a minesweeper board
  • Connect Compute the result for a game of Hex / Polygon
  • Difference Of Squares Find the difference between the sum of the squares and the square of the sum of the first N natural numbers.
  • Bowling Score a bowling game
  • Dot Dsl Write a Domain Specific Language similar to the Graphviz dot language
  • Custom Set Create a custom set type.
  • Forth Implement an evaluator for a very simple subset of Forth
  • Clock Implement a clock that handles times without dates.
  • Grep Search a file for lines matching a regular expression pattern. Return the line number and contents of each matching line.