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

Exercism

Crystal

via Exercism

Overview

Coursera Flash Sale
40% Off Coursera Plus for 3 Months!
Grab it
Crystal is a compiled language that is currently in the alpha stages of development. These are some of the language's goals: Ruby-inspired syntax. Statically type-checked but without having to specify the type of variables or method arguments.

Syllabus

  • Hello World
    • Exercism's classic introductory exercise. Just say "Hello, World!".
  • Ary's Amazing Lasagna
    • Learn about the basics of Crystal by following a lasagna recipe.
  • Crystal Hunter
    • Learn about booleans by implementing the rules of the Crystal Hunter game.
  • Wellington's Weather Station
    • Learn about numbers by update Wellington's weather station temperature system
  • Navigation Computer
    • Learn about number types while building a navigation system for ESA (Exercism Space Agency).
  • Johannes' Juice Maker
    • Help Johannes with their juice maker while learning about classes
  • Party Robot
    • Learn about strings by programming a party robot.
  • Weighing Machine
    • Learn about getter and setters by implementing a weighing machine.
  • High School Sweetheart
    • Learn about strings by helping high school sweethearts profess their love on social media via ASCII art.
  • Meltdown Mitigation
    • Learn about conditionals and avoid a meltdown by developing a simple control system for a Nuclear Reactor.
  • Interest is Interesting
    • Learn about while loops by adding interest to savings accounts.
  • Chess Game
    • Learn about ranges while making a chess game.
  • Library of Luton
    • Help the library of Luton to automate some of their processes, while learning about Chars
  • Bellebrook Basket League
    • Learn about modules, while building a basketball league ticketing system.
  • Castle Dinner
    • Learn about Nil while making sure no food or drink includes poison.
  • Password Lock
    • Build a password lock system while learning about union types
  • Blackjack
    • Learn about cases while simulating blackjack
  • Language List
    • Learn about arrays by keeping track of the programming languages you're currently learning on Exercism.
  • Chaitanas Colossal Coaster
    • Learn useful array methods helping Chaitana manage the lines for her colossal roller coaster.
  • the-farm
    • Learn about error handling in Crystal while feeding cows on the farm.
  • Foto Fusionist
    • Help the your friend develop Foto Fusionist, while learning about Binary, Octal, and Hexadecimal
  • Secrets
    • Learn about bit manipulation by writing a program to decrypt a message.
  • Task Handler
    • Learn about Procs & blocks by implementing a simple task handler.
  • spellbound-steel
    • Learn about Iteration by implementing methods to aid in the game of Spellbound Steel.
  • Kitchen Calculator
    • Learn about tuples and symbols by converting common US baking measurements to the metric system.
  • Acronym
    • Convert a long phrase to its acronym.
  • Anagram
    • Given a word and a list of possible anagrams, select the correct sublist.
  • Armstrong Numbers
    • Determine if a number is an Armstrong number.
  • Atbash Cipher
    • Create an implementation of the Atbash cipher, an ancient encryption system created in the Middle East.
  • Bob
    • Bob is a lackadaisical teenager. In conversation, his responses are very limited.
  • Collatz Conjecture
    • Calculate the number of steps to reach 1 using the Collatz conjecture.
  • Difference of Squares
    • Find the difference between the square of the sum and the sum of the squares of the first N natural numbers.
  • ETL
    • Change the data format for scoring a game to more easily add other languages.
  • 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.
  • Hamming
    • Calculate the Hamming distance between two DNA strands.
  • Isogram
    • Determine if a word or phrase is an isogram.
  • Leap
    • Determine whether a given year is a leap year.
  • Matching Brackets
    • Make sure the brackets and braces all match.
  • Pangram
    • Determine if a sentence is a pangram.
  • Raindrops
    • Convert a number into its corresponding raindrop sounds - Pling, Plang and Plong.
  • Resistor Color
    • Convert a resistor band's color to its numeric representation.
  • Resistor Color Duo
    • Convert color codes, as used on resistors, to a numeric value.
  • Reverse String
    • Reverse a given string.
  • Rotational Cipher
    • Create an implementation of the rotational cipher, also sometimes called the Caesar cipher.
  • RNA Transcription
    • Given a DNA strand, return its RNA complement.
  • Run-Length Encoding
    • Implement run-length encoding and decoding.
  • Scrabble Score
    • Given a word, compute the Scrabble score for that word.
  • Triangle
    • Determine if a triangle is equilateral, isosceles, or scalene.
  • Darts
    • Calculate the points scored in a single toss of a Darts game.
  • Two Fer
    • Create a sentence of the form "One for X, one for me.".
  • Resistor Color Trio
    • Convert color codes, as used on resistors, to a human-readable label.
  • Space Age
    • Given an age in seconds, calculate how old someone is in terms of a given planet's solar years.
  • Resistor Color Expert
    • Convert color codes as used on resistors with different bands to a human-readable label.
  • ISBN Verifier
    • Check if a given string is a valid ISBN-10 number.
  • Luhn
    • Given a number determine whether or not it is valid per the Luhn formula.
  • Binary Search
    • Implement a binary search algorithm.
  • Phone Number
    • Clean up user-entered phone numbers so that they can be sent SMS messages.
  • Nucleotide Count
    • Given a DNA string, compute how many times each nucleotide occurs in the string.
  • Roman Numerals
    • Convert modern Arabic numbers into Roman numerals.
  • High Scores
    • Manage a player's High Score list.
  • Perfect Numbers
    • Determine if a number is perfect, abundant, or deficient based on Nicomachus' (60 - 120 CE) classification scheme for positive integers.
  • Grains
    • Calculate the number of grains of wheat on a chessboard given that the number on each square doubles.
  • Secret Handshake
    • Given a decimal number, convert it to the appropriate sequence of events for a secret handshake.
  • Bottle Song
    • Produce the lyrics to the popular children's repetitive song: Ten Green Bottles.
  • Clock
    • Implement a clock that handles times without dates.
  • All Your Base
    • Convert a number, represented as a sequence of digits in one base, to any other base.
  • Largest Series Product
    • Given a string of digits, calculate the largest product for a contiguous substring of digits of length n.
  • Pascal's Triangle
    • Compute Pascal's triangle up to a given number of rows.
  • Sieve
    • Use 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.
  • Saddle Points
    • Detect saddle points in a matrix.
  • Nth Prime
    • Given a number n, determine what the nth prime is.
  • Prime Factors
    • Compute the prime factors of a given natural number.
  • Protein Translation
    • Translate RNA sequences into proteins.
  • Series
    • Given a string of digits, output all the contiguous substrings of length `n` in that string.
  • Sublist
    • Write a function to determine if a list is a sublist of another list.
  • Word Count
    • Given a phrase, count the occurrences of each word in that phrase.
  • Matrix
    • Given a string representing a matrix of numbers, return the rows and columns of that matrix.
  • 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.
  • Affine Cipher
    • Create an implementation of the Affine cipher, an ancient encryption algorithm from the Middle East.
  • Kindergarten Garden
    • Given a diagram, determine which plants each child in the kindergarten class is responsible for.
  • 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.
  • Proverb
    • For want of a horseshoe nail, a kingdom was lost, or so the saying goes. Output the full text of this proverbial rhyme.
  • Tournament
    • Tally the results of a small football competition.
  • Circular Buffer
    • A data structure that uses a single, fixed-size buffer as if it were connected end-to-end.
  • Crypto Square
    • Implement the classic method for composing secret messages called a square code.
  • Transpose
    • Take input text and output it transposed.
  • Yacht
    • Score a single throw of dice in the game Yacht.
  • Spiral Matrix
    • Given the size, return a square matrix of numbers in spiral order.
  • Food Chain
    • Generate the lyrics of the song 'I Know an Old Lady Who Swallowed a Fly'.
  • Robot Simulator
    • Write a robot simulator.
  • Flower Field
    • Mark all the flowers in a garden.
  • Forth
    • Implement an evaluator for a very simple subset of Forth.
  • Grade School
    • Given students' names along with the grade that they are in, create a roster for the school.
  • Meetup
    • Calculate the date of meetups.
  • Killer Sudoku Helper
    • Write a tool that makes it easier to solve Killer Sudokus
  • Strain
    • Implement the `keep` and `discard` operation on collections.
  • Bank Account
    • Simulate a bank account supporting opening/closing, withdraws, and deposits of money. Watch out for concurrent transactions!
  • Palindrome Products
    • Detect palindrome products in a given range.
  • Linked List
    • Implement a doubly linked list.
  • Allergies
    • Given a person's allergy score, determine whether or not they're allergic to a given item, and their full list of allergies.
  • Pig Latin
    • Implement a program that translates from English to Pig Latin.
  • Diamond
    • Given a letter, print a diamond starting with 'A' with the supplied letter at the widest point.
  • Custom Set
    • Create a custom set type.
  • Rail Fence Cipher
    • Implement encoding and decoding for the rail fence cipher.
  • Rational Numbers
    • Implement rational numbers.
  • Bowling
    • Score a bowling game.
  • 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.
  • Variable Length Quantity
    • Implement variable length quantity encoding and decoding.
  • Rectangles
    • Count the rectangles in an ASCII diagram.
  • Complex Numbers
    • Implement complex numbers.
  • Word Search
    • Create a program to solve a word search puzzle.
  • Markdown
    • Refactor a Markdown parser.
  • Sum of Multiples
    • Given a number, find the sum of all the multiples of particular numbers up to but not including that number.
  • Pythagorean Triplet
    • Given an integer N, find all Pythagorean triplets for which a + b + c = N.
  • State of Tic-Tac-Toe
    • Determine the game state of a match of Tic-Tac-Toe.
  • Change
    • Correctly determine change to be given using the least number of coins.
  • Dominoes
    • Make a chain of dominoes.
  • OCR Numbers
    • Given a 3 x 4 grid of pipes, underscores, and spaces, determine which number is represented, or whether it is garbled.
  • Conway's Game of Life
    • Implement Conway's Game of Life.
  • Poker
    • Pick the best hand(s) from a list of poker hands.
  • Connect
    • Compute the result for a game of Hex / Polygon.
  • React
    • Implement a basic reactive system.
  • Say
    • Given a number from 0 to 999,999,999,999, spell out that number in English.
  • Two Bucket
    • Given two buckets of different size, demonstrate how to measure an exact number of liters.
  • Binary Search Tree
    • Insert and search for numbers in a binary tree.
  • Alphametics
    • Given an alphametics puzzle, find the correct solution.
  • Simple Cipher
    • Implement the Vigenère cipher, a simple substitution cipher.
  • 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.
  • List Ops
    • Implement basic list operations.
  • D&D Character
    • Randomly generate Dungeons & Dragons characters.
  • Zebra Puzzle
    • Solve the zebra puzzle.

Reviews

Start your review of Crystal

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.