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

Exercism

Lua

via Exercism

Overview

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

Lua (pronounced LOO-ah, which means Moon in Portuguese) is a simple yet powerful, lightweight, fast, portable and embeddable scripting language. It is designed, implemented, and maintained by a team at PUC-Rio and is housed at LabLua.

Lua supports procedural, object-oriented, functional, data-driven programming and data description. It combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. Lua is dynamically typed, runs by interpreting bytecode with a register-based virtual machine and has automatic memory management with incremental garbage collection, making it ideal for configuration, scripting and rapid prototyping.

Lua has been used in many industrial applications with an emphasis on embedded systems and games.

The home page for Lua is Lua.org. Enjoy!

(Taken from https://www.lua.org/about.html)

Syllabus

  • Hello World
    • Exercism's classic introductory exercise. Just say "Hello, World!".
  • Leap
    • Determine whether a given year is a leap year.
  • 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.
  • Armstrong Numbers
    • Determine if a number is an Armstrong number.
  • Darts
    • Calculate the points scored in a single toss of a Darts game.
  • Difference of Squares
    • Find the difference between the square of the sum and the sum of the squares of the first N natural numbers.
  • 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.
  • Gigasecond
    • Given a moment, determine the moment that would be after a gigasecond has passed.
  • 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.
  • Isogram
    • Determine if a word or phrase is an isogram.
  • Rotational Cipher
    • Create an implementation of the rotational cipher, also sometimes called the Caesar cipher.
  • 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.
  • Sum of Multiples
    • Given a number, find the sum of all the multiples of particular numbers up to but not including that number.
  • Two-Fer
    • Create a sentence of the form "One for X, one for me.".
  • Atbash Cipher
    • Create an implementation of the Atbash cipher, an ancient encryption system created in the Middle East.
  • Bank Account
    • Simulate a bank account supporting opening/closing, withdraws, and deposits of money. Watch out for concurrent transactions!
  • 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.
  • Collatz Conjecture
    • Calculate the number of steps to reach 1 using the Collatz conjecture.
  • D&D Character
    • Randomly generate Dungeons & Dragons characters.
  • ETL
    • Change the data format for scoring a game to more easily add other languages.
  • Food Chain
    • Generate the lyrics of the song 'I Know an Old Lady Who Swallowed a Fly'.
  • 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.
  • Line Up
    • Help lining up customers at YaÊ»qÅ«b's Deli.
  • 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.
  • Pangram
    • Determine if a sentence is a pangram.
  • 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.
  • 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.
  • Pythagorean Triplet
    • Given an integer N, find all Pythagorean triplets for which a + b + c = N.
  • 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.
  • Reverse String
    • Reverse a given string.
  • RNA Transcription
    • Given a DNA strand, return its RNA complement.
  • Robot Simulator
    • Write a robot simulator.
  • Saddle Points
    • Detect saddle points in a matrix.
  • Scrabble Score
    • Given a word, compute the Scrabble score for that word.
  • Secret Handshake
    • Given a decimal number, convert it to the appropriate sequence of events for a secret handshake.
  • Triangle
    • Determine if a triangle is equilateral, isosceles, or scalene.
  • Twelve Days
    • Output the lyrics to 'The Twelve Days of Christmas'.
  • Word Count
    • Given a phrase, count the occurrences of each word in that phrase.
  • 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.
  • Binary Search
    • Implement a binary search algorithm.
  • Bowling
    • Score a bowling game.
  • Change
    • Correctly determine change to be given using the least number of coins.
  • Circular Buffer
    • A data structure that uses a single, fixed-size buffer as if it were connected end-to-end.
  • Diamond
    • Given a letter, print a diamond starting with 'A' with the supplied letter at the widest point.
  • Dominoes
    • Make a chain of dominoes.
  • Grade School
    • Given students' names along with the grade that they are in, create a roster for the school.
  • High Scores
    • Manage a player's High Score list.
  • Killer Sudoku Helper
    • Write a tool that makes it easier to solve Killer Sudokus
  • Linked List
    • Implement a doubly linked list.
  • List Ops
    • Implement basic list operations.
  • Luhn
    • Given a number determine whether or not it is valid per the Luhn formula.
  • Nth Prime
    • Given a number n, determine what the nth prime is.
  • Prime Factors
    • Compute the prime factors of a given natural number.
  • Prism
    • Calculate the path of a laser through refractive prisms.
  • Robot Name
    • Manage robot factory settings.
  • Roman Numerals
    • Convert modern Arabic numbers into Roman numerals.
  • 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.
  • Spiral Matrix
    • Given the size, return a square matrix of numbers in spiral order.
  • Strain
    • Implement the `keep` and `discard` operation on collections.
  • Sublist
    • Write a function to determine if a list is a sublist of another list.
  • Wordy
    • Parse and evaluate simple math word problems returning the answer as an integer.
  • Yacht
    • Score a single throw of dice in the game Yacht.
  • Affine Cipher
    • Create an implementation of the Affine cipher, an ancient encryption algorithm from the Middle East.
  • Binary Search Tree
    • Insert and search for numbers in a binary tree.
  • Camicia
    • Simulate the card game and determine whether the match ends or enters an infinite loop.
  • Connect
    • Compute the result for a game of Hex / Polygon.
  • Conway's Game of Life
    • Implement Conway's Game of Life.
  • Crypto Square
    • Implement the classic method for composing secret messages called a square code.
  • Flatten Array
    • Take a nested list and return a single list with all values except nil/null.
  • Grep
    • Search a file for lines matching a regular expression pattern. Return the line number and contents of each matching line.
  • 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.
  • Matching Brackets
    • Make sure the brackets and braces all match.
  • Palindrome Products
    • Detect palindrome products in a given range.
  • Pascal's Triangle
    • Compute Pascal's triangle up to a given number of rows.
  • Pig Latin
    • Implement a program that translates from English to Pig Latin.
  • Rational Numbers
    • Implement rational numbers.
  • Run-Length Encoding
    • Implement run-length encoding and decoding.
  • State of Tic-Tac-Toe
    • Determine the game state of a match of Tic-Tac-Toe.
  • Tournament
    • Tally the results of a small football competition.
  • Anagram
    • Given a word and a list of possible anagrams, select the correct sublist.
  • 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.
  • Complex Numbers
    • Implement complex numbers.
  • Custom Set
    • Create a custom set type.
  • Forth
    • Implement an evaluator for a very simple subset of Forth.
  • 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.
  • Meetup
    • Calculate the date of meetups.
  • 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.
  • Flower Field
    • Mark all the flowers in a garden.
  • OCR Numbers
    • Given a 3 x 4 grid of pipes, underscores, and spaces, determine which number is represented, or whether it is garbled.
  • Rail Fence Cipher
    • Implement encoding and decoding for the rail fence cipher.
  • Say
    • Given a number from 0 to 999,999,999,999, spell out that number in English.
  • Transpose
    • Take input text and output it transposed.
  • Word Search
    • Create a program to solve a word search puzzle.
  • Alphametics
    • Given an alphametics puzzle, find the correct solution.
  • React
    • Implement a basic reactive system.
  • Rectangles
    • Count the rectangles in an ASCII diagram.
  • POV
    • Reparent a graph on a selected node.

Reviews

1.0 rating, based on 1 Class Central review

Start your review of Lua

  • Anonymous
    Problem is given but no guidance on how to solve with code. If you need help, it's $9.99 month. :/ Apparently this review must be at least 100 characters, so hopefully this fills the space enough to allow me to submit my review.

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.