Skip to content

anvasi/labyrinth

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

(CL)S Solver for Labyrinths

Finds all ways from start (s) to goal (g) in a labyrinth such as

|x|g|x|
| | | | 
|s|x| |
| | | | 

where x-fields are blocked tiles. Uses (CL)S to compute the solution. The example is taken from:

Jan Bessai, Anna Vasileva: User Support for the Combinator Logic Synthesizer Framework. F-IDE@FLoC 2018: 16-25. Online here.

Results are served via MQTT.

Anna Vasilieva and Moritz Reudel created a video demonstration using the laser based visualization facilities of the test lab at FLW Dortmund. In the demo results are interpreted by Unity3D which then controlls the laser system to show computed movements.

The protocol is as follows: 0. Start an MQTT broker, e.g. Mosquitto via mosquitto -c mosquitto.conf with the provided config.

  1. Start an Agent using sbt run.
  2. Send a JSON-encoded Task to the broker under the taskTopic.
  3. Send a JSON-encoded request for solutions to the broker under the topicForRequests specified in your task.
  4. Receive maxCount JSON-encoded Solution replies under the topicForSolutions specified in your task.

The agent can be cleanly exited by pressing enter.

Solutions will be ordered by the number of necessary steps and 'wrap around' (be repeated) if more solutions are requested than possible. Protocol data is encoded and decoded using circe.

You can use sbt run to start a Demo client. To avoid trouble, make sure the agent is running before starting the demo client.

By default the log level is configured to DEBUG. This will print all JSON messages exchanged with the agent.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Scala 100.0%