<?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=Solution_format</id>
	<title>Solution format - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://sokobano.de/wiki/index.php?action=history&amp;feed=atom&amp;title=Solution_format"/>
	<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Solution_format&amp;action=history"/>
	<updated>2026-04-17T14:32:55Z</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=Solution_format&amp;diff=2723&amp;oldid=prev</id>
		<title>Sokobano at 16:02, 22 August 2006</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Solution_format&amp;diff=2723&amp;oldid=prev"/>
		<updated>2006-08-22T16:02:23Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Abspeicherung der Lösung eines Sokobanlevels==&lt;br /&gt;
&lt;br /&gt;
Im Sokobanspiel ist es bei komfortablen Programmen möglich, eine gefundene Lösung auch abzuspeichern und diese zu einem späteren Zeitpunkt erneut abzuspielen. Da dient vor allem als Nachweis der Lösbarkeit eines Levels, aber natürlich auch als Nachweis einer besonders guten Lösung.&lt;br /&gt;
&lt;br /&gt;
Im Allgemeinen werden in einer Lösung die Schritte des Sokobanmannes dokumentiert, die er von seinem Ausgangspunkt bei Levelstart bis zur endgültigen Lösung, wenn alle Kisten auf den Zielfeldern stehen, zurücklegt.&lt;br /&gt;
&lt;br /&gt;
Als Standard-Format für Sokobanlösungen hat sich das sogenannte LURD-Format durchgesetzt. In diesem Format werden die Schritte unverschlüsselt, also im Klartext, aufgezeichnet.&lt;br /&gt;
Jeder Schritt wird als ein neues Zeichen abgespeichert und entspricht der Richtung, in die sich der Sokobanmann bewegt. Es werden zunächst diese vier Zeichen verwendet:&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;l&amp;quot; für links,&lt;br /&gt;
: &amp;quot;u&amp;quot; für hoch,&lt;br /&gt;
: &amp;quot;r&amp;quot; für rechts und&lt;br /&gt;
: &amp;quot;d&amp;quot; für runter.&lt;br /&gt;
&lt;br /&gt;
Wird bei einem Schritt gleichzeitig eine Kiste bewegt, so werden die Schritte als Großbuchstaben dargestellt: L, U, R, D.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Primary values==&lt;br /&gt;
&lt;br /&gt;
===Moves===&lt;br /&gt;
Moves sind alle Schritte des Sokobanmannes, vom Beginn eines Levels bis zur endgültigen Lösung, bei der alle Kisten auf den Zielfeldern stehen. Dabei werden alle einfachen Schritte und alle Schritte, bei denen zugleich eine Kiste bewegt wird, gleichsam gezählt.&lt;br /&gt;
&lt;br /&gt;
===Pushes===&lt;br /&gt;
Pushes sind alle Schritte des Sokobanmannes, bei denen eine Kiste bewegt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Secondary values==&lt;br /&gt;
&lt;br /&gt;
===BoxLines===&lt;br /&gt;
&lt;br /&gt;
Eine BoxLine bezeichnet die Bewegung, in der eine Kiste ununterbrochen in einer Linie geschoben wird. Sie beginnt mit dem ersten Push und endet entweder vor einem Move oder vor dem Push einer anderen Kiste.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;eine Kiste wird ununterbrochen geschoben (Linie) -&amp;gt; KLAR ZÄHLBAR!&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
===BoxChanges===&lt;br /&gt;
Jede neue Zuwendung zu einer Kiste wird als BoxChange bezeichnet. In der Phase zwischen zwei BoxChanges wird also immer nur eine Kiste bewegt. Es bezeichnet also aneinander gereihte BoxLines &amp;#039;&amp;#039;&amp;#039;einer&amp;#039;&amp;#039;&amp;#039; Kiste, auch mit einfachen Moves zwischen den BoxLines, mit denen sich der Sokobanmann eine neue Position verschafft.&lt;br /&gt;
&lt;br /&gt;
Achtung Programmierer! Schon der erste Push innerhalb einer Lösung, also die erste Zuwendung zu einer Kiste, gilt als BoxChange!&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;mehrere BoxLines EINER Kiste hintereinander, bevor eine andere angefasst wird (auch Moves dazwischen), also z.B. um die Ecke rum, auch mit Umwegen des Players -&amp;gt; Konzentration auf die BOX&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
===PushingSessions===&lt;br /&gt;
PushingSessions sind - genau betrachtet - aneinander gereihte BoxLines, die nicht durch einfache Schritte unterbrochen sind. Eine PushingSession ist also beendet, sobald ein einfacher Move folgt, bzw. am Ende einer Lösung.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Wechsel von PUSH in move, also weniger, wenn zwischen BoxLines unterschiedlicher Kisten keine Moves sind (eigentlich also auch nur BoxLines, die zusammengezählt werden, wenn eine weiter Kiste gleich anschließend geschoben wird (ohne Moves dazwischen) (also relativ unwichtig) -&amp;gt; Konzentration auf die PUSHES (ununterbrochen)&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Bewertung der Sekundärwerte einer Lösung ==&lt;br /&gt;
&lt;br /&gt;
Die Gewichtung bei der Bewertung der Sekundärwerte einer Lösung gestaltet sich entsprechend der üblichen Reihenfolge, also wie folgt:&amp;lt;br /&amp;gt;BoxLines &amp;gt;= BoxChanges &amp;gt;= PushingSessions&amp;lt;br /&amp;gt;&lt;br /&gt;
Jede Verringerung der Boxlines ist höher zu bewerten als jede Veränderung der nachfolgenden Werte, jede Verringerung der Boxchanges wiederum höher als die der PushingSessions.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Grundlage dieser Festlegung ist der physikalische Hintergrund in der Realität&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Berechnung der Sekundärwerte einer Lösung ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;wenn&amp;#039;&amp;#039;&amp;#039; der aktuelle Schritt ein Push war&amp;lt;br /&amp;gt;{&lt;br /&gt;
: &amp;#039;&amp;#039;&amp;#039;wenn&amp;#039;&amp;#039;&amp;#039; der vorige und der aktuelle Schritt ungleich sind&lt;br /&gt;
: ( voriger Schritt entweder kein Push oder in andere Richtung )&amp;lt;br /&amp;gt;{&lt;br /&gt;
:: BoxLines = BoxLines + 1;&lt;br /&gt;
:: &amp;#039;&amp;#039;&amp;#039;wenn&amp;#039;&amp;#039;&amp;#039; aktuelle Spielerposition != mit voriger Position der aktuell verschobenen Kiste&lt;br /&gt;
:: ( kein Kistenwechsel! )&amp;lt;br /&amp;gt;{&lt;br /&gt;
::: BoxChanges = BoxChanges + 1;&lt;br /&gt;
:: }&lt;br /&gt;
:: &amp;#039;&amp;#039;&amp;#039;wenn&amp;#039;&amp;#039;&amp;#039; der vorige Schritt kein Push war&amp;lt;br /&amp;gt;{&lt;br /&gt;
::: PushingSessions = PushingSessions + 1;&lt;br /&gt;
:: }&lt;br /&gt;
: }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
</feed>