The baseline is based on a simplified version of L*, by Dana Angluin. It is written in Java. You can download it below :
zuluBaselineSrc.jar contains the compiled .class files and the Java source files of the algorithm.
The class with the "main" is Lstar. You can also view the Javadoc for the Zulu client for more information about its structure.
You can read directly the source code here.
To use the baseline, create a project in your favorite integrated development environment and test and modify the baseline the way you want. A good way if you want to get rid of Lstar in your algorithm is to instanciate a "RemoteOracle" object as it is done in the Lstar class main function.
Some commented functions are useful if you want to see the automata as it is built by the implementation of L*. Do not hesitate to uncomment them and see what happens.
In order to RUN ONLY the baseline you need the Java runtime. If you want to modify it you need the Java Development Kit (JDK). Java SE Development Kit is enough, but if you need an IDE, choose the bundle JDK with NetBeans (click on the right on the first "Download" link). You need the Java Development Kit ("choose Java SE Development Kit (JDK)" in the second section, or any bundle) in order to rebuild and so to modify the algorithm.
where Task_Key is the 8 digits number given at the task generation or at the challenge creation.
- Lstar.java : the main file, with the algorithm itself (in the constructor).
- RemoteOracle.java : the communication interface with the server of the project. It is a child of the Oracle interface.
- Oracle.java : the interface class for an Oracle with membership queries, getting alphabet of a target, submit your result.
- Automaton.java : class, dedicated to the implementation of the Lstar algorithm, that produces an automaton from an observation table.
- WordAndClass.java : class associating a string and its classification (dedicated to Lstar).
- PrintOnScreen.java : debugging for Lstar.
Unjar archive and run:
javac zulu/baseline/Lstar.java
java Lstar Task_Key
Jar archives are also extractable with 7-zip and other common compression utility.
You can edit and easily run the package within an integrated development environment such as or , under various platforms. Both are free and open-source.
You can process the queries and get information directly from a wget command. The URLs you need to call are described below.
2-letters problems have ab as their alphabet. 3-letters problems have abc as their alphabet... and so on. If you don't want to fix it in your program you can ask for the alphabet at
Example: If you want to know if "0110101" belong to toy task 1 (key 00000001) :
At this time you can't ask more membership queries (the target is "locked").
Example: If you want to obtain the words to classify for toy task 1 (key 00000001) :
Example: If you want the query amount limit for toy task 1 (key 00000001) :
You can use wget in order to obtain the answers of membership queries and the 1800 strings.
You should be concerned by the following only if your environment is not correctly configured.
The proxy settings are given to the JVM via command line arguments:
-Dhttp.proxyPort=proxyPortNumber
-Dhttp.proxyUser=someUserName
-Dhttp.proxyPassword=somePassword javaClassToRun
Add the following lines in your Java code so that JVM uses the proxy to make HTTP calls. This would, of course, require you to recompile your Java source. (The other methods do not require any recompilation.):
System.getProperties().put("http.proxyPort", "someProxyPort");
System.getProperties().put("http.proxyUser", "someUserName");
System.getProperties().put("http.proxyPassword", "somePassword");
It provides a majority vote program written in PERL in order to provide an example of the use of the Zulu functions with a script language. Download.
The 5 functions provided :
zuluMQ makes a membership query
zuluLimit returns how many queries are allowed
zuluAlphabet returns the symbols allowed for the target
zuluIThinkIFound asks for the test set. No zuluMQ calls are allowed since therefore.
zuluSubmit sends your answers for the test set classification.