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

Exercism

Nim

via Exercism

Overview

Coursera Flash Sale
40% Off Coursera Plus for 3 Months!
Grab it
Nim is a general-purpose language designed and developed by Andreas Rumpf and first appearing in 2008. Designed to be efficient, expressive, and elegant. Nim is statically typed and compiled but lets you write elegant code that runs efficiently. Nim lets you target many platforms by compiling code to C, C++, JavaScript, or Objective-C. Nim syntax is similar to Python and shares many of Python's characteristics but draws inspiration from a number of languages, such as C, C++, C#, Lisp, Ada, Go, Oberon, and others.

Syllabus

  • Hello World
    • Exercism's classic introductory exercise. Just say "Hello, World!".
  • Two Fer
    • Create a sentence of the form "One for X, one for me.".
  • Leap
    • Determine whether a given year is a leap year.
  • Bob
    • Bob is a lackadaisical teenager. In conversation, his responses are very limited.
  • Allergies
    • Given a person's allergy score, determine whether or not they're allergic to a given item, and their full list of allergies.
  • Sum of Multiples
    • Given a number, find the sum of all the multiples of particular numbers up to but not including that number.
  • Grade School
    • Given students' names along with the grade that they are in, create a roster for the school.
  • Hamming
    • Calculate the Hamming difference between two DNA strands.
  • Pangram
    • Determine if a sentence is a pangram.
  • Acronym
    • Convert a long phrase to its acronym.
  • Isogram
    • Determine if a word or phrase is an isogram.
  • Difference of Squares
    • Find the difference between the square of the sum and the sum of the squares of the first N natural numbers.
  • Triangle
    • Determine if a triangle is equilateral, isosceles, or scalene.
  • Anagram
    • Given a word and a list of possible anagrams, select the correct sublist.
  • Matching Brackets
    • Make sure the brackets and braces all match.
  • Word Count
    • Given a phrase, count the occurrences of each word in that phrase.
  • Armstrong Numbers
    • Determine if a number is an Armstrong number.
  • Collatz Conjecture
    • Calculate the number of steps to reach 1 using the Collatz conjecture.
  • Scrabble Score
    • Given a word, compute the Scrabble score for that word.
  • Grains
    • Calculate the number of grains of wheat on a chessboard given that the number on each square doubles.
  • Atbash Cipher
    • Create an implementation of the atbash cipher, an ancient encryption system created in the Middle East.
  • All Your Base
    • Convert a number, represented as a sequence of digits in one base, to any other base.
  • Binary Search
    • Implement a binary search algorithm.
  • Clock
    • Implement a clock that handles times without dates.
  • Crypto Square
    • Implement the classic method for composing secret messages called a square code.
  • Darts
    • Calculate the points scored in a single toss of a Darts game.
  • Diamond
    • Given a letter, print a diamond starting with 'A' with the supplied letter at the widest point.
  • Diffie-Hellman
    • Diffie-Hellman key exchange.
  • D&D Character
    • Randomly generate Dungeons & Dragons characters.
  • ETL
    • Change the data format for scoring a game to more easily add other languages.
  • Gigasecond
    • Given a moment, determine the moment that would be after a gigasecond has passed.
  • High Scores
    • Manage a player's High Score list.
  • 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.
  • Luhn
    • Given a number determine whether or not it is valid per the Luhn formula.
  • Matrix
    • Given a string representing a matrix of numbers, return the rows and columns of that matrix.
  • Meetup
    • Calculate the date of meetups.
  • 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.
  • 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.
  • 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.
  • Proverb
    • For want of a horseshoe nail, a kingdom was lost, or so the saying goes. Output the full text of this proverbial rhyme.
  • 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.
  • 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.
  • Resistor Color Trio
    • Convert color codes, as used on resistors, to a human-readable label.
  • Reverse String
    • Reverse a given string.
  • RNA Transcription
    • Given a DNA strand, return its RNA Complement Transcription.
  • Robot Name
    • Manage robot factory settings.
  • 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.
  • 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.
  • 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.
  • Sieve
    • Use the Sieve of Eratosthenes to find all the primes from 2 up to a given number.
  • Space Age
    • Given an age in seconds, calculate how old someone is in terms of a given planet's solar years.
  • Spiral Matrix
    • Given the size, return a square matrix of numbers in spiral order.
  • Sublist
    • Write a function to determine if a list is a sublist of another list.
  • Twelve Days
    • Output the lyrics to 'The Twelve Days of Christmas'.
  • Yacht
    • Score a single throw of dice in the game Yacht.
  • Linked List
    • Implement a doubly linked list.
  • Zebra Puzzle
    • Solve the zebra puzzle.
  • React
    • Implement a basic reactive system.

Reviews

Start your review of Nim

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.