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

Exercism

Rust

via Exercism

Overview

Coursera Flash Sale
40% Off Coursera Plus for 3 Months!
Grab it

Rust is a systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety. It aims to bring modern language design and an advanced type system to systems programming. Rust does not use a garbage collector, using advanced static analysis to provide deterministic drops instead. It accomplishes this via the concept of ownership.

Rust's core and the standard library are intentionally minimal; batteries are not included. Rustaceans are instead encouraged to add libraries, called crates, to the language by sharing them on crates.io.

Rust is most frequently used for applications where speed, performance and stability are essential. The Awesome Rust list collects examples of Rust projects, which include CLI tools, ORMs, operating systems and games. Regardless of what you build in Rust, it will be fast and memory safe!

The home page for Rust is rust-lang.org. Rust has excellent documentation at rust-lang.org/documentation.html. Newcomers should start with "The Book" located at doc.rust-lang.org/book/.

Syllabus

  • Hello World
    • Exercism's classic introductory exercise. Just say "Hello, World!".
  • Reverse String
    • Reverse a given string.
  • Gigasecond
    • Given a moment, determine the moment that would be after a gigasecond has passed.
  • Clock
    • Implement a clock that handles times without dates.
  • Anagram
    • Given a word and a list of possible anagrams, select the correct sublist.
  • Space Age
    • Given an age in seconds, calculate how old someone is in terms of a given planet's solar years.
  • Sublist
    • Write a function to determine if a list is a sublist of another list.
  • Flower Field
    • Mark all the flowers in a garden.
  • Luhn
    • Given a number determine whether or not it is valid per the Luhn formula.
  • Armstrong Numbers
    • Determine if a number is an Armstrong number.
  • Bottle Song
    • Produce the lyrics to the popular children's repetitive song: Ten Green Bottles.
  • Difference of Squares
    • Find the difference between the square of the sum and the sum of the squares of the first N natural numbers.
  • Grains
    • Calculate the number of grains of wheat on a chessboard given that the number on each square doubles.
  • Leap
    • Determine whether a given year is a leap year.
  • Nth Prime
    • Given a number n, determine what the nth prime is.
  • 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.
  • Raindrops
    • Convert a number into its corresponding raindrop sounds - Pling, Plang and Plong.
  • Sum of Multiples
    • Given a number, find the sum of all the multiples of particular numbers up to but not including that number.
  • Bob
    • Bob is a lackadaisical teenager. In conversation, his responses are very limited.
  • High Scores
    • Manage a player's High Score list.
  • Matching Brackets
    • Make sure the brackets and braces all match.
  • Collatz Conjecture
    • Calculate the number of steps to reach 1 using the Collatz conjecture.
  • Series
    • Given a string of digits, output all the contiguous substrings of length `n` in that string.
  • 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.
  • 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.
  • Allergies
    • Given a person's allergy score, determine whether or not they're allergic to a given item, and their full list of allergies.
  • Alphametics
    • Given an alphametics puzzle, find the correct solution.
  • Binary Search
    • Implement a binary search algorithm.
  • Bowling
    • Score a bowling game.
  • DOT DSL
    • Write a Domain Specific Language similar to the Graphviz dot language.
  • ETL
    • Change the data format for scoring a game to more easily add other languages.
  • Grade School
    • Given students' names along with the grade that they are in, create a roster for the school.
  • Hamming
    • Calculate the Hamming distance between two DNA strands.
  • ISBN Verifier
    • Check if a given string is a valid ISBN-10 number.
  • Isogram
    • Determine if a word or phrase is an isogram.
  • Nucleotide Count
    • Given a DNA string, compute how many times each nucleotide occurs in the string.
  • PaaS I/O
    • Report network IO statistics.
  • Palindrome Products
    • Detect palindrome products in a given range.
  • Pangram
    • Determine if a sentence is a pangram.
  • 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.
  • Pig Latin
    • Implement a program that translates from English to Pig Latin.
  • 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.
  • RNA Transcription
    • Given a DNA strand, return its RNA complement.
  • Run-Length Encoding
    • Implement run-length encoding and decoding.
  • Saddle Points
    • Detect saddle points in a matrix.
  • Say
    • Given a number from 0 to 999,999,999,999, spell out that number in English.
  • Scrabble Score
    • Given a word, compute the Scrabble score for that word.
  • Sieve
    • Use the Sieve of Eratosthenes to find all the primes from 2 up to a given number.
  • 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.
  • Triangle
    • Determine if a triangle is equilateral, isosceles, or scalene.
  • Two Bucket
    • Given two buckets of different size, demonstrate how to measure an exact number of liters.
  • Variable Length Quantity
    • Implement variable length quantity encoding and decoding.
  • Robot Simulator
    • Write a robot simulator.
  • Robot Name
    • Manage robot factory settings.
  • Protein Translation
    • Translate RNA sequences into proteins.
  • Wordy
    • Parse and evaluate simple math word problems returning the answer as an integer.
  • Custom Set
    • Create a custom set type.
  • 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.
  • Affine Cipher
    • Create an implementation of the Affine cipher, an ancient encryption algorithm from the Middle East.
  • Atbash Cipher
    • Create an implementation of the Atbash cipher, an ancient encryption system created in the Middle East.
  • Crypto Square
    • Implement the classic method for composing secret messages called a square code.
  • Diamond
    • Given a letter, print a diamond starting with 'A' with the supplied letter at the widest point.
  • Largest Series Product
    • Given a string of digits, calculate the largest product for a contiguous substring of digits of length n.
  • Luhn From
    • Luhn: Using the From Trait
  • Luhn Trait
    • Luhn: Using a Custom Trait
  • List Ops
    • Implement basic list operations.
  • Phone Number
    • Clean up user-entered phone numbers so that they can be sent SMS messages.
  • Rail Fence Cipher
    • Implement encoding and decoding for the rail fence cipher.
  • Roman Numerals
    • Convert modern Arabic numbers into Roman numerals.
  • Rotational Cipher
    • Create an implementation of the rotational cipher, also sometimes called the Caesar cipher.
  • Simple Cipher
    • Implement the Vigenère cipher, a simple substitution cipher.
  • Word Count
    • Given a phrase, count the occurrences of each word in that phrase.
  • Secret Handshake
    • Given a decimal number, convert it to the appropriate sequence of events for a secret handshake.
  • 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.
  • Yacht
    • Score a single throw of dice in the game Yacht.
  • Matrix
    • Given a string representing a matrix of numbers, return the rows and columns of that matrix.
  • Fizzy
    • Implement FizzBuzz using advanced generics
  • Pythagorean Triplet
    • Given an integer N, find all Pythagorean triplets for which a + b + c = N.
  • Parallel Letter Frequency
    • Count the frequency of letters in texts using parallel computation.
  • Macros
    • Implement a macro using macros-by-example
  • POV
    • Reparent a graph on a selected node.
  • Poker
    • Pick the best hand(s) from a list of poker hands.
  • Forth
    • Implement an evaluator for a very simple subset of Forth.
  • OCR Numbers
    • Given a 3 x 4 grid of pipes, underscores, and spaces, determine which number is represented, or whether it is garbled.
  • React
    • Implement a basic reactive system.
  • Circular Buffer
    • A data structure that uses a single, fixed-size buffer as if it were connected end-to-end.
  • Rectangles
    • Count the rectangles in an ASCII diagram.
  • Xorcism
    • Implement zero-copy streaming adaptors
  • 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.
  • Decimal
    • Implement a Decimal type
  • Grep
    • Search a file for lines matching a regular expression pattern. Return the line number and contents of each matching line.
  • Dominoes
    • Make a chain of dominoes.
  • Doubly Linked List
    • Write a more advanced doubly linked list implementation with cursors and iteration.

Reviews

Start your review of Rust

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.