Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Exercism

Elixir

via Exercism

Overview

Coursera Flash Sale
40% Off Coursera Plus for 3 Months!
Grab it
Elixir, initially released in 2012, extends upon the already robust features of Erlang while also being easier for beginners to access, read, test, and write. José Valim, the creator of Elixir, explains in his 2012 conference talk how he built the language for applications to be: Distributed

Syllabus

  • Hello World
    • Exercism's classic introductory exercise. Just say "Hello, World!".
  • Lasagna
    • Learn about the basics of Elixir by following a lasagna recipe.
  • Pacman Rules
    • Learn about booleans by implementing the rules of the Pac-Man game.
  • Freelancer Rates
    • Learn about integers and floating point numbers by helping a freelancer communicate with a project manager about billing.
  • Secrets
    • Learn about bit manipulation and anonymous functions by writing the software for an encryption device.
  • Log Level
    • Learn about atoms and the cond conditional expression by aggregating application logs.
  • Language List
    • Learn about lists by keeping track of the programming languages you're currently learning on Exercism.
  • Guessing Game
    • Learn about multiple clause functions, guards, and default arguments by implementing a simple game in which the player needs to guess a secret number.
  • Kitchen Calculator
    • Learn about tuples and pattern matching by converting common US baking measurements to the metric system.
  • High School Sweetheart
    • Learn about strings and the pipe operator by helping high school sweethearts profess their love on social media via ASCII art.
  • Bird Count
    • Learn about recursion by keeping track of how many birds visit your garden each day.
  • High Score
    • Learn about maps by keeping track of the high scores in your local arcade hall.
  • City Office
    • Learn about writing documentation and typespecs by getting your code ready for the arrival of a new colleague at the city office.
  • German Sysadmin
    • Learn about charlists and the case conditional expression by sanitizing usernames of employees in a German company.
  • RPG Character Sheet
    • Learn about IO (input/output) by guiding your friends through the character creation process for your pen-and-paper role-playing game.
  • Name Badge
    • Learn about nil and the if conditional expression by printing name badges for factory employees.
  • Take-A-Number
    • Learn about processes and process identifiers by writing an embedded system for a Take-A-Number machine.
  • Wine Cellar
    • Learn about keyword lists by providing wine suggestions to the customers in your restaurant.
  • Paint By Number
    • Learn about bitstrings by creating binary files with pictures for a paint-by-number app.
  • DNA Encoding
    • Learn about bitstrings and tail call recursion by encoding DNA sequences as binary data.
  • Library Fees
    • Learn about dates and time by calculating late fees for the local library.
  • Basketball Website
    • Learn about Access Behaviour by helping extract deeply nested data for the basketball team's website.
  • Boutique Inventory
    • Learn about the Enum module by preparing your fashion boutique for the big annual sale.
  • File Sniffer
    • Learn about binaries by verifying the mime type of files uploaded to your server.
  • Newsletter
    • Learn about working with files by sending out a newsletter.
  • Chessboard
    • Learn about ranges by generating a chessboard.
  • Remote Control Car
    • Learn about structs by playing around with a remote controlled car.
  • Boutique Suggestions
    • Learn about list comprehensions by generating outfit suggestions for the clients of your fashion boutique.
  • Community Garden
    • Learn about the Agent module by helping your local community handle community garden registrations.
  • Bread And Potions
    • Learn about protocols by developing your own role-playing video game.
  • Captain's Log
    • Learn about randomness and using Erlang libraries from Elixir by helping Mary generate stardates and starship registry numbers for her Star Trek themed pen-and-paper role playing sessions.
  • Need For Speed
    • Learn about reusing code with alias and import by racing remote controlled cars.
  • RPN Calculator
    • Learn about errors and rescuing them by working on an experimental Reverse Polish Notation calculator.
  • Stack Underflow
    • Learn about defining custom exceptions by continuing work on your experimental Reverse Polish Notation calculator.
  • RPN Calculator Inspection
    • Learn about tasks and links by inspecting a working prototype of your experimental Reverse Polish Notation calculator.
  • Lucas Numbers
    • Learn about streams by generating the Lucas number sequence.
  • New Passport
    • Learn about `with` to concentrate on the happy path and manage a stressful day of facing bureaucracy.
  • Top Secret
    • Learn about the Abstract Syntax Tree (AST) by helping decode secret messages from Agent Ex.
  • Dancing Dots
    • Learn about behaviours by writing animations for dot-based generative art.
  • Take-A-Number Deluxe
    • Learn about GenServers by writing an embedded system for a Take-A-Number machine.
  • Log Parser
    • Learn about regular expressions by parsing logs.
  • Gotta Snatch'Em All
    • Learn to use sets by playing a vintage trading card game
  • Resistor Color
    • Convert a resistor band's color to its numeric representation.
  • Two Fer
    • Create a sentence of the form "One for X, one for me.".
  • Acronym
    • Convert a long phrase to its acronym.
  • All Your Base
    • Convert a number, represented as a sequence of digits in one base, to any other base.
  • Anagram
    • Given a word and a list of possible anagrams, select the correct sublist.
  • Armstrong Numbers
    • Determine if a number is an Armstrong number.
  • Collatz Conjecture
    • Calculate the number of steps to reach 1 using the Collatz conjecture.
  • Darts
    • Calculate the points scored in a single toss of a Darts game.
  • ETL
    • Change the data format for scoring a game to more easily add other languages.
  • Hamming
    • Calculate the Hamming distance between two DNA strands.
  • Line Up
    • Help lining up customers at YaÊ»qÅ«b's Deli.
  • Nth Prime
    • Given a number n, determine what the nth prime is.
  • Nucleotide Count
    • Given a DNA string, compute how many times each nucleotide occurs in the string.
  • Pangram
    • Determine if a sentence is a pangram.
  • Pig Latin
    • Implement a program that translates from English to Pig Latin.
  • Protein Translation
    • Translate RNA sequences into proteins.
  • Raindrops
    • Convert a number into its corresponding raindrop sounds - Pling, Plang and Plong.
  • Resistor Color Duo
    • Convert color codes, as used on resistors, to a numeric value.
  • RNA Transcription
    • Given a DNA strand, return its RNA complement.
  • Roman Numerals
    • Convert modern Arabic numbers into Roman numerals.
  • Rotational Cipher
    • Create an implementation of the rotational cipher, also sometimes called the Caesar cipher.
  • Run-Length Encoding
    • Implement run-length encoding and decoding.
  • Scrabble Score
    • Given a word, compute the Scrabble score for that word.
  • Secret Handshake
    • Given a decimal number, convert it to the appropriate sequence of events for a secret handshake.
  • Series
    • Given a string of digits, output all the contiguous substrings of length `n` in that string.
  • Space Age
    • Given an age in seconds, calculate how old someone is in terms of a given planet's solar years.
  • Strain
    • Implement the `keep` and `discard` operation on collections.
  • Sublist
    • Write a function to determine if a list is a sublist of another list.
  • Sum of Multiples
    • Given a number, find the sum of all the multiples of particular numbers up to but not including that number.
  • Triangle
    • Determine if a triangle is equilateral, isosceles, or scalene.
  • Atbash Cipher
    • Create an implementation of the Atbash cipher, an ancient encryption system created in the Middle East.
  • Binary Search
    • Implement a binary search algorithm.
  • Binary Search Tree
    • Insert and search for numbers in a binary tree.
  • Bob
    • Bob is a lackadaisical teenager. In conversation, his responses are very limited.
  • Bottle Song
    • Produce the lyrics to the popular children's repetitive song: Ten Green Bottles.
  • D&D Character
    • Randomly generate Dungeons & Dragons characters.
  • Eliud's Eggs
    • Help Eliud count the number of eggs in her chicken coop by counting the number of 1 bits in a binary representation.
  • Flatten Array
    • Take a nested list and return a single list with all values except nil/null.
  • Gigasecond
    • Given a moment, determine the moment that would be after a gigasecond has passed.
  • Grade School
    • Given students' names along with the grade that they are in, create a roster for the school.
  • Grains
    • Calculate the number of grains of wheat on a chessboard given that the number on each square doubles.
  • House
    • Output the nursery rhyme 'This is the House that Jack Built'.
  • ISBN Verifier
    • Check if a given string is a valid ISBN-10 number.
  • Isogram
    • Determine if a word or phrase is an isogram.
  • Kindergarten Garden
    • Given a diagram, determine which plants each child in the kindergarten class is responsible for.
  • Leap
    • Determine whether a given year is a leap year.
  • Matching Brackets
    • Make sure the brackets and braces all match.
  • Matrix
    • Given a string representing a matrix of numbers, return the rows and columns of that matrix.
  • Pascal's Triangle
    • Compute Pascal's triangle up to a given number of rows.
  • Perfect Numbers
    • Determine if a number is perfect, abundant, or deficient based on Nicomachus' (60 - 120 CE) classification scheme for positive integers.
  • Prime Factors
    • Compute the prime factors of a given natural number.
  • Proverb
    • For want of a horseshoe nail, a kingdom was lost, or so the saying goes. Output the full text of this proverbial rhyme.
  • Resistor Color Trio
    • Convert color codes, as used on resistors, to a human-readable label.
  • Say
    • Given a number from 0 to 999,999,999,999, spell out that number in English.
  • Simple Cipher
    • Implement the Vigenère cipher, a simple substitution cipher.
  • Twelve Days
    • Output the lyrics to 'The Twelve Days of Christmas'.
  • Word Count
    • Given a phrase, count the occurrences of each word in that phrase.
  • Allergies
    • Given a person's allergy score, determine whether or not they're allergic to a given item, and their full list of allergies.
  • Complex Numbers
    • Implement complex numbers.
  • Crypto Square
    • Implement the classic method for composing secret messages called a square code.
  • Difference of Squares
    • Find the difference between the square of the sum and the sum of the squares of the first N natural numbers.
  • Dominoes
    • Make a chain of dominoes.
  • Grep
    • Search a file for lines matching a regular expression pattern. Return the line number and contents of each matching line.
  • Killer Sudoku Helper
    • Write a tool that makes it easier to solve Killer Sudokus
  • Largest Series Product
    • Given a string of digits, calculate the largest product for a contiguous substring of digits of length n.
  • Meetup
    • Calculate the date of meetups.
  • Parallel Letter Frequency
    • Count the frequency of letters in texts using parallel computation.
  • Phone Number
    • Clean up user-entered phone numbers so that they can be sent SMS messages.
  • Rational Numbers
    • Implement rational numbers.
  • Simple Linked List
    • Write a simple linked list implementation that uses Elements and a List.
  • Spiral Matrix
    • Given the size, return a square matrix of numbers in spiral order.
  • Tournament
    • Tally the results of a small football competition.
  • Affine Cipher
    • Create an implementation of the Affine cipher, an ancient encryption algorithm from the Middle East.
  • Bank Account
    • Simulate a bank account supporting opening/closing, withdraws, and deposits of money. Watch out for concurrent transactions!
  • Clock
    • Implement a clock that handles times without dates.
  • Custom Set
    • Create a custom set type.
  • Diamond
    • Given a letter, print a diamond starting with 'A' with the supplied letter at the widest point.
  • Food Chain
    • Generate the lyrics of the song 'I Know an Old Lady Who Swallowed a Fly'.
  • Intergalactic Transmission
    • Add parity bits to a message for transmission
  • Luhn
    • Given a number determine whether or not it is valid per the Luhn formula.
  • Palindrome Products
    • Detect palindrome products in a given range.
  • Pythagorean Triplet
    • Given an integer N, find all Pythagorean triplets for which a + b + c = N.
  • Saddle Points
    • Detect saddle points in a matrix.
  • Sieve
    • Use the Sieve of Eratosthenes to find all the primes from 2 up to a given number.
  • Split-Second Stopwatch
    • Keep track of time through a digital stopwatch.
  • Square Root
    • Given a natural radicand, return its square root.
  • Transpose
    • Take input text and output it transposed.
  • Yacht
    • Score a single throw of dice in the game Yacht.
  • Baffling Birthdays
    • Estimate the birthday paradox's probabilities.
  • Camicia
    • Simulate the card game and determine whether the match ends or enters an infinite loop.
  • Game of Life
    • Implement Conway's Game of Life.
  • Knapsack
    • 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.
  • Ledger
    • Refactor a ledger printer.
  • List Ops
    • Implement basic list operations.
  • Markdown
    • Refactor a Markdown parser.
  • OCR Numbers
    • Given a 3 x 4 grid of pipes, underscores, and spaces, determine which number is represented, or whether it is garbled.
  • Prism
    • Calculate the path of a laser through refractive prisms.
  • Rail Fence Cipher
    • Implement encoding and decoding for the rail fence cipher.
  • Relative Distance
    • Given a family tree, calculate the degree of separation.
  • Robot Simulator
    • Write a robot simulator.
  • Satellite
    • Rebuild binary trees from pre-order and in-order traversals.
  • State of Tic-Tac-Toe
    • Determine the game state of a match of Tic-Tac-Toe.
  • Swift Scheduling
    • Convert delivery date descriptions to actual delivery dates.
  • Variable Length Quantity
    • Implement variable length quantity encoding and decoding.
  • Alphametics
    • Given an alphametics puzzle, find the correct solution.
  • Change
    • Correctly determine change to be given using the least number of coins.
  • Connect
    • Compute the result for a game of Hex / Polygon.
  • Flower Field
    • Mark all the flowers in a garden.
  • Piecing It Together
    • Fill in missing jigsaw puzzle details from partial data
  • 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.
  • Rectangles
    • Count the rectangles in an ASCII diagram.
  • Two Bucket
    • Given two buckets of different size, demonstrate how to measure an exact number of liters.
  • Word Search
    • Create a program to solve a word search puzzle.
  • Wordy
    • Parse and evaluate simple math word problems returning the answer as an integer.
  • Book Store
    • 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.
  • Bowling
    • Score a bowling game.
  • Circular Buffer
    • A data structure that uses a single, fixed-size buffer as if it were connected end-to-end.
  • DOT DSL
    • Write a Domain Specific Language similar to the Graphviz dot language.
  • Poker
    • Pick the best hand(s) from a list of poker hands.
  • React
    • Implement a basic reactive system.
  • SGF Parsing
    • Parsing a Smart Game Format string.
  • Zipper
    • Creating a zipper for a binary tree.
  • Go Counting
    • Count the scored points on a Go board.
  • POV
    • Reparent a graph on a selected node.
  • Zebra Puzzle
    • Solve the zebra puzzle.
  • Forth
    • Implement an evaluator for a very simple subset of Forth.

Reviews

Start your review of Elixir

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.