Share Site Map Contact us Home Page

LMC2 Quick Overview

LMC2 General Information

LMC2 Official Rules

LMC2 SDK Specs

LMC2 Protocol Specs

LMC2 Testing Zone

Enter LMC2


To enter the Learning Machine Challenge, your program is required to conform to a simple API. This API allows your program to communicate with the judge program using standard input/output functions: exactly the kind of functions you'd use to read from and write to the console. (Example)
There are several advantages to doing things this way. It enables you to test your program directly, by running it in a stand-alone fashion and playing the role of judge yourself. Also, it gives you the opportunity to submit source code written in your programming language of choice. You can even submit a binary executable! Finally, it is platform-independent, meaning that we can support both Windows and Linux binaries.

We have provided you with example programs, written in a variety of programming languages, in the Testing Zone section. These example programs completely implement the API, and you may wish to base your entry on them. The Testing Zone contains an LMC2 SDK which completely hides the details of the underlying protocol and allows you to focus on implementing your programís logic. You will probably want to work directly with LMC2ís protocol only if you are writing a game or player in a programming language which is not supported by the SDK.

An LMC2 testing environment is composed of a Judge program, one Game program and one or two Player processes. The various simple protocols outlined in this document reflect this configuration.
There is a protocol that allows the judge to control game and player processes and facilitate communication between them. This protocol is called the Judge Protocol or Layer 0 protocol.
A higher level protocol allows for a game to communicate with a single player, supply it with input, receive its output and provide feedback. This protocol is called the Game Protocol or Layer 1 protocol. The Game protocol is almost identical to and is fully backward compatible with LMC1ís game protocol described in LMC1 Interface Specs.

As a result of important feedback received from LMC1 participants and since LMC2 focus on language games, it was decided to enhance the Game Protocol with some additional hints and semantic that will allow players to perform better in natural language acquisition scenarios. This additional layer is called Language Protocol or Layer 2 and sits on top of the Game Protocol.

The LMC2 Testing Zone contains the LMC2 SDK which enables game and player development without intimate knowledge of the underlying protocol. It also contains a Binary Download Package for each supported platform. You should use the sample Judge, player and game programs included in this package to build a testing environment for your program. See the Binary Download Readme file for more details.

General Protocol Considerations

Your program is a "black box" which communicates with the outside world via a number of predefined "channels". Each of these channels is implemented using standard input/output operations. This requires a special syntax to be used. The syntax is line-based, and specifies a channel, along with the data which is to be transmitted over that channel. The basic syntax is:

@channel data

Where channel is the name of the channel and data is channel-specific data. Note that a single space character separates the channel name from the channel data. The channel data is a list of words delimited by a single space character and is terminated by the end-of-line character.

Your program may also send comments to the judge program, and should be prepared to receive comments from the judge program. A comment is a line which begins with the # symbol, and all such lines should be ignored. The judge program will display any comments it receives in its interface, which may prove extremely useful for debugging purposes.

A word about compatibility: We have made a lot of effort to keep LMC