NAME

lm-solve - A Computerized Solver for Logic Mazes

SYNOPSIS

lm-solve [options] Input File

DESCRIPTION

This program is a front end for the LM-Solve Perl modules that can be used to solve any of the number of Logic Mazes present on the Logic Mazes site (http://www.logicmazes.com/) and similar sites.

To use this program you should create a text file describing the layout of the game and your current position (most probably the initial one). Then invoke lm-solve with its path as input. Alternatively, by specifiying - as the filename, then lm-solve will read the layout from the standard input.

One can find an archive containing some written-down layouts for some of the puzzles on the web on the LM-Solve homepage. The format of the layouts for the various puzzle types is described below.

OPTIONS

--help -h -?

Display a help message on the screen.

--man

Invoke the UNIX man command to display the man-page of this program.

-g variant | --game variant

Specify the variant to use for the game. Currently available variants are:

alice - Alice Mazes

minotaur - Theseus and the Minotaur Mazes

numbers - Number Mazes

plank - Planks in the Swamp Puzzles

tilt_single - Tilt Mazes with one goal

tilt_multi - Tilt Mazes with multiple goals

tilt_rb - A Red-Blue Tilt Puzzle

--rle --norle

This options toggle run-length encoding of the moves displayed on and off. What it means is that several identical consecutive moves will be displayed as "move * number".

The default is --rle.

--output-states --nooutput-states

--output-states will precede each line with the state of the game up to the move displayed on it. The default is --nooutput-states

--method scan

Specifies the scan to use for solving the game:

brfs - Breadth-First Search. Finds minimal solutions, but possibly slower than other scans.

dfs - Depth-First Search.

--rtd --nortd

--rtd stands for "Run-Time Display". This option will print the states of the scan that were arrived to, as the scan encounters them. The default is --nortd.

Generic Board Format

The format of the board is that of a file containing keys and values on each line, in the format "key=value". A value can be an integer (e.g: "x=6"), an (x,y) integral pair (e.g: "dims=(3,6)"), an array of pairs (e.g: "goals="[(5,6), (3,8), (0, 3)]"), an array of start and end pairs (e.g: "Planks = [ ((0,2) -> (3,2)) , ((6,5) -> (7,5)) ]") or a layout specification. The latter begins with "<<EOF" where EOF is a terminator and extends from the next line down to the first line containing the terminator.

Whitespace and newlines are generally ignored and the keys are case-insensitive.

Alice Mazes Board Format

Dims is an (x,y) value that specifies the dimensions of the board. layout is the layout of the board. The cells are specified row by row, from top to bottom and from left to right. Newlines and whitespace between each cell are ignored as well as lines beginning with a sharp-sign ("#").

Each cell is surrounded by square brackets and contains several flags separated by commas. The flags are:

N,S,E,W

Specifies North, South, East and West arrows respectively.

NE,NW,SE,SW

Likewise for North-East, North-West, South-East and South-West

ADD

Specifies that this cell increases the step by 1.

SUB

Specifies that this cell decreases the step by 1.

GOAL

The goal cell.

START

The start cell.

BLANK

A blank cell that may not be stepped on.

Examples can be found in the layouts archive.

Theseus and the Minotaur Mazes Board Format

The keys and values required for this format are:

Dims

An (x,y) pair that specifies the (x,y) dimensions of the board.

Exit

An (x,y) pair that specifies the (x,y) coordinates of the exit. (starting at (0,0) for the top-left corner.)

Thes

(x,y) - The initial coordinates of Theseus.

Mino

(x,y) - The initial coordinates of the Minotaur.

layout

This is a layout in the following format: The first line contains width characters that are either whitespace (" ") or a "-" or a "_" depending if there is a horizontal wall at that position. The second line contains width+1 characters that are either whitespace or a "|" sign depending if there is a vertical wall at that position.

The horizontal-walls and vertical-wall lines intermingle this way until the bottom line which specifies horizontal walls.

Examples can be found in the layouts archive.

Number Mazes Board Format

Dims is an (x,y) key that specifies the dimensions of the board. Start is an (x,y) key that specifies the starting position (starting from (0,0) at the top-left corner). The key layout is a layout key that contains the layout of the board.

The layout contains a line for every row, and every cell is represented as a character. It contains a digit for its number or an asterisk ("*") if it is the goal cell.

Examples can be found in the layouts archive.

Single Goal Tilt Mazes

Dims is an (x,y) key that speciifes the dimensions of the board. Start is an (x,y) pair that specifies the coordinates of the start (starting from 0). Goal is an (x,y) pair that determines the location of the single goal.

layout contains a scheme of horizontal and vertical walls similar to the Minotaur's mazes.

Multiple Goals Tilt Mazes

Dims is an (x,y) key that speciifes the dimensions of the board. Start is an (x,y) pair that specifies the coordinates of the start (starting from 0). Goals is an (x,y) array that determines the locations of the goals.

layout contains a scheme of horizontal and vertical walls similar to the Minotaur's mazes.

Red-Blue Tilt Puzzles

Dims is an (x,y) key that specifies the dimensions of the board. Blue_Start and Red_Start are two (x,y) keys which specify the starting positiones of the red and blue markers. Red_Goal and Blue_Goal are their respective goals.

layout contains a scheme of horizontal and vertical walls similar to the Minotaur's mazes.

Planks in the Swamp Puzzles

Dims is an (x,y) key that specifies the dimensions of the board. Planks is an array of start and end pairs specifying the start and end coordinates of the planks. layout is a layout that matches the size specified by Dims that has an X where a stump is present, G where the goal is and any other character (preferably a whitespace) where nothing is present.

The first plank in "Planks" is the active plank.

SEE ALSO

LM-Solve's Homepage:

http://vipe.technion.ac.il/~shlomif/lm-solve/

The Logic Mazes Homepage:

http://www.logicmazes.com/

Click Mazes:

http://www.gjnem.demon.co.uk/

AUTHOR

Shlomi Fish <shlomif@vipe.technion.ac.il>