Winning Snake: Design Choices in Multi-Shot ASP
This work provides incremental, hands-on examples for developers and users in the answer set programming community to reuse logic program parts.
The paper tackles the problem of demonstrating multi-shot answer set programming techniques by implementing five different approaches to solve the Snake game, which involves an NP-hard Hamiltonian cycle problem, and empirically compares their performance.
Answer set programming is a well-understood and established problem-solving and knowledge representation paradigm. It has become more prominent amongst a wider audience due to its multiple applications in science and industry. The constant development of advanced programming and modeling techniques extends the toolset for developers and users regularly. This paper demonstrates different techniques to reuse logic program parts (multi-shot) by solving the arcade game snake. This game is particularly interesting because a victory can be assured by solving the underlying NP-hard problem of Hamiltonian Cycles. We will demonstrate five hands-on implementations in clingo and compare their performance in an empirical evaluation. In addition, our implementation utilizes clingraph to generate a simple yet informative image representation of the game's progress.