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

Exercism

Prolog

via Exercism

Overview

Coursera Flash Sale
40% Off Coursera Plus for 3 Months!
Grab it
Prolog (short for "Programming Logic") is a declarative and logic based programming language developed in 1972 by Alain Colmerauer and Philippe Roussel. It has many applications, most notably in Artificial Intelligence for its pattern matching abilities over natural language parse trees.

Syllabus

  • Hello World
    • Exercism's classic introductory exercise. Just say "Hello, World!".
  • Resistor Color
    • Convert a resistor band's color to its numeric representation.
  • Reverse String
    • Reverse a given string.
  • Wedding Woes
    • Infer family relations from some basic facts.
  • Difference of Squares
    • Find the difference between the square of the sum and the sum of the squares of the first N natural numbers.
  • Gigasecond
    • Given a moment, determine the moment that would be after a gigasecond has passed.
  • Leap
    • Determine whether a given year is a leap year.
  • Resistor Color Duo
    • Convert color codes, as used on resistors, to a numeric value.
  • RNA Transcription
    • Given a DNA strand, return its RNA complement.
  • Scrabble Score
    • Given a word, compute the Scrabble score for that word.
  • Darts
    • Calculate the points scored in a single toss of a Darts game.
  • Grains
    • Calculate the number of grains of wheat on a chessboard given that the number on each square doubles.
  • Hamming
    • Calculate the Hamming distance between two DNA strands.
  • High Scores
    • Manage a player's High Score list.
  • Pangram
    • Determine if a sentence is a pangram.
  • Space Age
    • Given an age in seconds, calculate how old someone is in terms of a given planet's solar years.
  • Square Root
    • Given a natural radicand, return its square root.
  • Triangle
    • Determine if a triangle is equilateral, isosceles, or scalene.
  • Two-Fer
    • Create a sentence of the form "One for X, one for me.".
  • Allergies
    • Given a person's allergy score, determine whether or not they're allergic to a given item, and their full list of allergies.
  • Anagram
    • Given a word and a list of possible anagrams, select the correct sublist.
  • Armstrong Numbers
    • Determine if a number is an Armstrong number.
  • Bank Account
    • Simulate a bank account supporting opening/closing, withdraws, and deposits of money. Watch out for concurrent transactions!
  • Binary
    • Convert a binary number, represented as a string (e.g. '101010'), to its decimal equivalent using first principles.
  • Binary Search
    • Implement a binary search algorithm.
  • Collatz Conjecture
    • Calculate the number of steps to reach 1 using the Collatz conjecture.
  • Custom Set
    • Create a custom set type.
  • 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.
  • 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.
  • Global Positioning System
    • Parse GPS coordinates into their individual components
  • Grade School
    • Given students' names along with the grade that they are in, create a roster for the school.
  • Isogram
    • Determine if a word or phrase is an isogram.
  • Matrix
    • Given a string representing a matrix of numbers, return the rows and columns of that matrix.
  • Nucleotide Count
    • Given a DNA string, compute how many times each nucleotide occurs in the string.
  • Perfect Numbers
    • Determine if a number is perfect, abundant, or deficient based on Nicomachus' (60 - 120 CE) classification scheme for positive integers.
  • 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.
  • Roman Numerals
    • Convert modern Arabic numbers into Roman numerals.
  • Rotational Cipher
    • Create an implementation of the rotational cipher, also sometimes called the Caesar cipher.
  • Series
    • Given a string of digits, output all the contiguous substrings of length `n` in that string.
  • 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.
  • Acronym
    • Convert a long phrase to its acronym.
  • 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.
  • Clock
    • Implement a clock that handles times without dates.
  • Complex Numbers
    • Implement complex numbers.
  • D&D Character
    • Randomly generate Dungeons & Dragons characters.
  • 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.
  • Kindergarten Garden
    • Given a diagram, determine which plants each child in the kindergarten class is responsible for.
  • Largest Series Product
    • Given a string of digits, calculate the largest product for a contiguous substring of digits of length n.
  • List Ops
    • Implement basic list operations.
  • Luhn
    • Given a number determine whether or not it is valid per the Luhn formula.
  • Phone Number
    • Clean up user-entered phone numbers so that they can be sent SMS messages.
  • Prime Factors
    • Compute the prime factors of a given natural number.
  • Protein Translation
    • Translate RNA sequences into proteins.
  • 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.
  • Rational Numbers
    • Implement rational numbers.
  • Robot Name
    • Manage robot factory settings.
  • Robot Simulator
    • Write a robot simulator.
  • Secret Handshake
    • Given a decimal number, convert it to the appropriate sequence of events for a secret handshake.
  • Sieve
    • Use the Sieve of Eratosthenes to find all the primes from 2 up to a given number.
  • Simple Cipher
    • Implement the Vigenère cipher, a simple substitution cipher.
  • State of Tic-Tac-Toe
    • Determine the game state of a match of Tic-Tac-Toe.
  • Twelve Days
    • Output the lyrics to 'The Twelve Days of Christmas'.
  • Yacht
    • Score a single throw of dice in the game Yacht.
  • All Your Base
    • Convert a number, represented as a sequence of digits in one base, to any other base.
  • Atbash Cipher
    • Create an implementation of the Atbash cipher, an ancient encryption system created in the Middle East.
  • Conway's Game of Life
    • Implement Conway's Game of Life.
  • Dominoes
    • Make a chain of dominoes.
  • Floored
    • Find out who lives on what floor
  • Food Chain
    • Generate the lyrics of the song 'I Know an Old Lady Who Swallowed a Fly'.
  • Killer Sudoku Helper
    • Write a tool that makes it easier to solve Killer Sudokus
  • Magic Square
    • Check if a square is a magic square
  • Matching Brackets
    • Make sure the brackets and braces all match.
  • Meetup
    • Calculate the date of meetups.
  • Nth Prime
    • Given a number n, determine what the nth prime is.
  • OCR Numbers
    • Given a 3 x 4 grid of pipes, underscores, and spaces, determine which number is represented, or whether it is garbled.
  • Palindrome Products
    • Detect palindrome products in a given range.
  • Parallel Letter Frequency
    • Count the frequency of letters in texts using parallel computation.
  • Pascal's Triangle
    • Compute Pascal's triangle up to a given number of rows.
  • Pythagorean Triplet
    • Given an integer N, find all Pythagorean triplets for which a + b + c = N.
  • Resistor Color Trio
    • Convert color codes, as used on resistors, to a human-readable label.
  • Saddle Points
    • Detect saddle points in a matrix.
  • Affine Cipher
    • Create an implementation of the Affine cipher, an ancient encryption algorithm from the Middle East.
  • Binary Puzzle
    • Solve a binary puzzle
  • Cheryl's Birthday
    • Figure out Cheryl's Birthday
  • 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.
  • Flower Field
    • Mark all the flowers in a garden.
  • Garden Party
    • Figure out who brought what dish and what beverage to a garden party
  • 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.
  • Satellite
    • Rebuild binary trees from pre-order and in-order traversals.
  • Word Count
    • Given a phrase, count the occurrences of each word in that phrase.
  • 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.
  • Change
    • Correctly determine change to be given using the least number of coins.
  • Pig Latin
    • Implement a program that translates from English to Pig Latin.
  • Run-Length Encoding
    • Implement run-length encoding and decoding.
  • Say
    • Given a number from 0 to 999,999,999,999, spell out that number in English.
  • SGF Parsing
    • Parsing a Smart Game Format string.
  • Spiral Matrix
    • Given the size, return a square matrix of numbers in spiral order.
  • Two Bucket
    • Given two buckets of different size, demonstrate how to measure an exact number of liters.
  • Zebra Puzzle
    • Solve the zebra puzzle.
  • Alphametics
    • Given an alphametics puzzle, find the correct solution.

Reviews

Start your review of Prolog

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.