Sign up
Log in
Home
Language tracks
Scheme track
Exercises
Exercises on the Scheme track
Join the Scheme Track
39 exercises to help you master Scheme
easy
Hello World
The classical introductory exercise. Just say "Hello, World!"
warmup
easy
Leap
Given a year, report if it is a leap year.
conditionals
control flow
easy
RNA Transcription
Given a DNA strand, return its RNA Complement Transcription.
string
easy
Hamming
Calculate the Hamming difference between two DNA strands.
list
easy
Grains
Calculate the number of grains of wheat on a chessboard given that the number on each square doubles.
math
medium
Anagram
Given a word and a list of possible anagrams, select the correct sublist.
string
list
easy
Difference Of Squares
Find the difference between the square of the sum and the sum of the squares of the first N natural numbers.
math
list
medium
Pascal's Triangle
Compute Pascal's triangle up to a given number of rows.
list
math
recursion
hard
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.
dynamic programming
optimization
search
medium
Bob
Bob is a lackadaisical teenager. In conversation, his responses are very limited.
string
medium
Raindrops
Convert a number to a string, the content of which depends on the number's factors.
misc
medium
Phone Number
Clean up user-entered phone numbers so that they can be sent SMS messages.
string
easy
Nucleotide Count
Given a DNA string, compute how many times each nucleotide occurs in the string.
hashtable
string
easy
Scrabble Score
Given a word, compute the Scrabble score for that word.
list
string
medium
Word Count
Given a phrase, count the occurrences of each word in that phrase.
hashtable
parsing
string
easy
Two Fer
Create a sentence of the form "One for X, one for me."
control flow
string
medium
Sieve
Use the Sieve of Eratosthenes to find all the primes from 2 up to a given number.
bits
math
vector
medium
Prime Factors
Compute the prime factors of a given natural number.
math
medium
Change
Correctly determine change to be given using the least number of coins
dynamic programming
graph
recursion
medium
Atbash Cipher
Create an implementation of the atbash cipher, an ancient encryption system created in the Middle East.
cipher
string
medium
Affine Cipher
Create an implementation of the Affine cipher, an ancient encryption algorithm from the Middle East.
cipher
math
string
medium
Transpose
Take input text and output it transposed.
list
easy
Rotational Cipher
Create an implementation of the rotational cipher, also sometimes called the Caesar cipher.
cipher
string
medium
Perfect Numbers
Determine if a number is perfect, abundant, or deficient based on Nicomachus' (60 - 120 CE) classification scheme for natural numbers.
math
easy
Binary Search
Implement a binary search algorithm.
search
vector
easy
Pangram
Determine if a sentence is a pangram.
string
medium
Matching Brackets
Make sure the brackets and braces all match.
fold
parsing
stack
string
easy
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.
chess
hard
Forth
Implement an evaluator for a very simple subset of Forth
interpreter
language
stack machine
easy
Collatz Conjecture
Calculate the number of steps to reach 1 using the Collatz conjecture
math
recursion
easy
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.
list
easy
Armstrong Numbers
Determine if a number is an Armstrong number
math
easy
Acronym
Convert a long phrase to its acronym
string
easy
Triangle
Determine if a triangle is equilateral, isosceles, or scalene.
conditionals
easy
Sum Of Multiples
Given a number, find the sum of all the multiples of particular numbers up to but not including that number.
math
easy
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.
conditionals
control flow
list
easy
Trinary
Convert a trinary number, represented as a string (e.g. '102012'), to its decimal equivalent using first principles.
conditionals
math
easy
Roman Numerals
Write a function to convert from normal numbers to Roman Numerals.
conditionals
loop
string
easy
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).
conditionals
loop
math
string