<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://sokobano.de/wiki/index.php?action=history&amp;feed=atom&amp;title=Rolling_Stone_solver</id>
	<title>Rolling Stone solver - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://sokobano.de/wiki/index.php?action=history&amp;feed=atom&amp;title=Rolling_Stone_solver"/>
	<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Rolling_Stone_solver&amp;action=history"/>
	<updated>2026-04-17T18:41:46Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Rolling_Stone_solver&amp;diff=8109&amp;oldid=prev</id>
		<title>Matthias Meger: /* Main menu */ Description how to start the solver</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Rolling_Stone_solver&amp;diff=8109&amp;oldid=prev"/>
		<updated>2024-03-21T15:16:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Main menu: &lt;/span&gt; Description how to start the solver&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The Rolling Stone Sokoban solver is a significant milestone in the field of automated Sokoban puzzle solving. Developed at the University of Alberta by Andreas Junghanns and Jonathan Schaeffer, it laid the groundwork for many modern solvers.&lt;br /&gt;
&lt;br /&gt;
Here&amp;#039;s a breakdown of Rolling Stone&amp;#039;s key aspects:&lt;br /&gt;
&lt;br /&gt;
= Algorithm =&lt;br /&gt;
&lt;br /&gt;
Rolling Stone utilizes the Iterative Deepening A* (IDA*) algorithm as its core search strategy.&lt;br /&gt;
&lt;br /&gt;
IDA* is an iterative deepening search algorithm that combines the efficiency of depth-first search with the optimality guarantees of A* search.&lt;br /&gt;
&lt;br /&gt;
It starts by searching for a solution with a limited depth and gradually increases the depth limit until a solution is found or it&amp;#039;s proven that no solution exists within that depth.&lt;br /&gt;
&lt;br /&gt;
To improve search efficiency, Rolling Stone incorporates several enhancements described in various [https://scholar.google.com/scholar?hl=de&amp;amp;as_sdt=0%2C5&amp;amp;q=rolling+stone+sokoban&amp;amp;btnG= papers].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rolling Stone&amp;#039;s approach paved the way for further advancements in Sokoban solver design. Many modern solvers build upon its core principles.&lt;br /&gt;
&lt;br /&gt;
It demonstrated the effectiveness of combining general search algorithms with domain-specific enhancements for efficiently solving Sokoban puzzles.&lt;br /&gt;
&lt;br /&gt;
Further information can be found in the [https://scholar.google.com/scholar?hl=de&amp;amp;as_sdt=0%2C5&amp;amp;q=rolling+stone+sokoban&amp;amp;btnG= papers] or on the [https://webdocs.cs.ualberta.ca/~games/Sokoban/ website of Rolling Stone].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= How to compile Rolling Stone =&lt;br /&gt;
&lt;br /&gt;
Carlos Montiers has published a source code that has been adapted so that it can also be compiled with modern operating systems and compilers. In this way, Rolling Stone can still be used today.&lt;br /&gt;
&lt;br /&gt;
This is the link to his repository: [https://github.com/carlos-montiers/rolling-stone Carlos Montiers Rolling Stone]&lt;br /&gt;
&lt;br /&gt;
= Screenshot Rolling Stone =&lt;br /&gt;
&lt;br /&gt;
Rolling Stone can only be used from the console. &lt;br /&gt;
&lt;br /&gt;
This is an example output of the solver when solving puzzle &amp;quot;XSokoban 1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[File:Rolling Stone XSokoban1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Menu structure =&lt;br /&gt;
&lt;br /&gt;
== Main menu ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
!Command           || Function&lt;br /&gt;
|-&lt;br /&gt;
|S nam\num kind    || Solve Maze&lt;br /&gt;
|-&lt;br /&gt;
|A                 || Set Abort Node Count&lt;br /&gt;
|-&lt;br /&gt;
|T sec [REAL\VIRT] || Set Abort time&lt;br /&gt;
|-&lt;br /&gt;
|C a b kind        || Test a to b in screen&lt;br /&gt;
|-&lt;br /&gt;
|P nam\num kind    || Print Maze&lt;br /&gt;
|-&lt;br /&gt;
|L a b kind        ||  All 90 Lower Bounds&lt;br /&gt;
|-&lt;br /&gt;
|N num             || Set PosNr with num&lt;br /&gt;
|-&lt;br /&gt;
|M num-num\XX-YY   || move from num to num&lt;br /&gt;
|-&lt;br /&gt;
|X [lrud]*         || move center for xdist&lt;br /&gt;
|-&lt;br /&gt;
|Z                 || Show Menu&lt;br /&gt;
|-&lt;br /&gt;
|O                 || Options Menu&lt;br /&gt;
|-&lt;br /&gt;
|Q                 || Quit Program&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The command &amp;quot;&amp;#039;&amp;#039;&amp;#039;S 1&amp;#039;&amp;#039;&amp;#039;&amp;quot; loads the puzzle &amp;quot;./screens/screen.1&amp;quot; and tries to solve it.&lt;br /&gt;
&lt;br /&gt;
The command &amp;quot;&amp;#039;&amp;#039;&amp;#039;S 1 test&amp;#039;&amp;#039;&amp;#039;&amp;quot; loads the puzzle &amp;quot;./screens/test.1&amp;quot; and tries to solve it.&lt;br /&gt;
&lt;br /&gt;
The command &amp;quot;&amp;#039;&amp;#039;&amp;#039;S test.sok&amp;#039;&amp;#039;&amp;#039;&amp;quot; loads the puzzle &amp;quot;./test.sok&amp;quot; and tries to solve it.&lt;br /&gt;
&lt;br /&gt;
== Show menu ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
!Command  || Function&lt;br /&gt;
|-&lt;br /&gt;
|D        || Hist of man-distances&lt;br /&gt;
|-&lt;br /&gt;
|S        ||  Hist of stone-distances&lt;br /&gt;
|-&lt;br /&gt;
|X        || Hist of X-distances&lt;br /&gt;
|-&lt;br /&gt;
|C        || Print Conflicts prev search&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Options menu ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
!Command     || Function&lt;br /&gt;
|-&lt;br /&gt;
|E           || Examine all settings&lt;br /&gt;
|-&lt;br /&gt;
|H [on/off]  ||  HashTable on/off&lt;br /&gt;
|-&lt;br /&gt;
|D [on/off]  || deadlock det. movegen on/off&lt;br /&gt;
|-&lt;br /&gt;
|Z [on/off]  || deadlock2 det. movegen on/off&lt;br /&gt;
|-&lt;br /&gt;
|R [on/off]  || areasearch on/off&lt;br /&gt;
|-&lt;br /&gt;
|S [on/off]  || deadsearch on/off&lt;br /&gt;
|-&lt;br /&gt;
|N [on/off]  || pensearch on/off&lt;br /&gt;
|-&lt;br /&gt;
|W [on/off]  || scan search on/off&lt;br /&gt;
|-&lt;br /&gt;
|J number    || node limit for pattern searches&lt;br /&gt;
|-&lt;br /&gt;
|K [on/off] || minimization on/off&lt;br /&gt;
|-&lt;br /&gt;
|Y [on/off]  || limit patterns on/off&lt;br /&gt;
|-&lt;br /&gt;
|m [on/off]  || lazy maximization on/off&lt;br /&gt;
|-&lt;br /&gt;
|X [on/off]  || store tested on/off&lt;br /&gt;
|-&lt;br /&gt;
|P number    || Switch Pattern DBs on/off (0-7)&lt;br /&gt;
|-&lt;br /&gt;
|M [on/off]  || LB manpos on/off&lt;br /&gt;
|-&lt;br /&gt;
|C [on/off]  || LB conflict on/off&lt;br /&gt;
|-&lt;br /&gt;
|d [on/off]  || Dynamic distances on/off&lt;br /&gt;
|-&lt;br /&gt;
|T [on/off]  || Tunnel Macro on/of&lt;br /&gt;
|-&lt;br /&gt;
|G [on/off]  ||  Goal Macro on/off&lt;br /&gt;
|-&lt;br /&gt;
|U [on/off]  || Cut Goal Macro on/off&lt;br /&gt;
|-&lt;br /&gt;
|A [on/off   || eXtended Distance on/off&lt;br /&gt;
|-&lt;br /&gt;
|L k m d     || Local Cut (k,m,d), -1 -1 turns off&lt;br /&gt;
|-&lt;br /&gt;
|B [on/off   || Auto Set Local Cut Parameter&lt;br /&gt;
|-&lt;br /&gt;
|V [s] [h]   || Overestimation scaling factor and h-scaling&lt;br /&gt;
|-&lt;br /&gt;
|F [on/off]  || Assume dead on/off&lt;br /&gt;
|-&lt;br /&gt;
|O number    || Set Move order index (0-off)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General command ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
!Command  || Function&lt;br /&gt;
|-&lt;br /&gt;
|?        || Help command.  Displays availible menu options&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;        || Back (quit)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
</feed>