ECLiPSe Code Samples
Overview
This is a still somewhat random collection of ECLiPSe code and examples:
Simple Problems To Get Started
 Subsetsum Problem

A small program to solve the problem from this
xkcd cartoon:
 Cryptarithmetic
 Two versions of the famous SEND+MORE=MONEY puzzle, and a more general solver for this kind of puzzle.
 Magic Hexagon
 Another puzzle with numbers and how to avoid symmetric solutions.
 Magic Sequences
 Construct magic sequences.
 Magic Squares
 Construct magic squares.
 Golomb rulers
 Construction of optimal Golomb rulers.
 Zebra
 Lewis Carrol's classical zebra puzzle.
 Tomography
 Reconstructing a pattern from sampling data.
 Queens
 The unavoidable Nqueens problem, and a more scalable version with different search strategies.
 Liars
 Reasoning about the truth of statements.
 Sudoku
 Popular Japanese Puzzle. (standard model, unusual model)
 Binary sudoku
 Only zeros and ones, as described here
 Steiner triplets
 A problems with sets.
 NFractions Puzzle
 The nfractions puzzle, problem 41 in CSPLib.
 Crack the Code
 Mastermindstyle problem, set as Challenge Sep2019 by the Decision Management Community.
Puzzle Collections
 Logic Puzzles
 A collections of puzzles, the best known examples of which
are the Zebra or Einstein Puzzle
 Who owns the zebra?
 "At the farm", several solution variants: using constraints over symbolic domains, mixed with backtracking search, plain Prolog backtracking solution, and a pure Constraint Programming solution requiring no search
 "Epic RPG Adventure"
 "A New PC"
 "Street Mayhem"
 "Blues Band"
 "Expensive Coffee"
 Integer Programming Puzzles
 Martin Chlond's collections of puzzles, good for learning.
 Enigmas
 Solution to Enigmas from New Scientist magazine, mixed difficulties.
 Doug Edmunds' CLP Puzzles page
 Collection of zebrastyle puzzles.
Harder Puzzles
 Sandwich Sudoku
 The "Sandwich Sudoku" puzzle, featured in The Guardian, May 2019.
 Solitaire Battleships
 The Solitaire Battleships puzzle (1), also problem 114 in CSPLib.
 Shikaku
 Another tiling puzzle, also known as dividebybox (1, 2).
 Domino tiling problem
 An interesting modelling exercise.
 Nonograms
 Solving Nonograms ( 1, 3, 5, 6). Short solution using gfd (Gecode solver interface), and alternative solution using lib(ic) with a regular expression constraint based on lib(propia).
 Crowded chessboard
 Place 51 pieces on a chessboard (results)
 Nondominating Queens
 Using a boolean matrix model, and a version with symmetry breaking.
 SquareSum Chains
 Construct integer sequences where a certain condition must hold between consecutive numbers.
Planning and Scheduling
 TSP  Travelling Salesman Problem
 How to model the basic TSP and a simple TSP with time windows with finitedomain constraints.
 Bin Packing
 Solving binpacking problems using a global constraint.
 Knapsack Problem
 Different solutions to several variants of the knapsack problem.
 Assignment with Slots and Capacities
 We give four solutions: a linear programming solution, a finitedomain solution using the same model, a hybrid solution using both, and a finitedomain solution with a different model.
 Jobshop Scheduling
 Using propagation and heuristics to solve the Jobshop Scheduling Problem.
 Warehouse location
 The warehouse location problem from van Hentenryck's book.
 Transport, generic version using arrays
 A small transportation problem, solved with lib(eplex).
 Bridge
 The bridge scheduling problem from van Hentenryck's book.
 Square tiling
 Covering a square with smaller squares of different sizes.
 Golf
 Scheduling players for a golf tournament (uses sets).
 Rostering
 Computing a staff roster (problem statement).
 Crew
 Small airline crew scheduling example.
Other Collections
 ECLiPSe models at CSPLib
 CSPLib is a library of test problems for constraint solvers.
 Various ECLiPSe models
 ECLiPSe page maintained by Hakan Kjellerstrand.
 ECLiPSe at Stackoverflow
 ECLiPSerelated answers at Stackoverflow.
Programming Tricks and Techniques
 Sudoku with tracing
 How to use datadriven facilities to trace progress during search.
Running these examples
If you have a recent version of ECLiPSe, you can compile the examples directly from this web site as follows:? http_client:http_compile("http://eclipseclp.org/examples/sendmore.pl").