Dokumentation zu den Katzenpuzzles

Inhalt

Konstanten

  Farben

  Muster/ Formen

  Objekte

  Himmelsrichtungen

Funktionen zur Bewegung

  move(direction)

  turn(direction)

Funktionen für Formen, Farben und Zahlen

  color()

  paint(color)

  setShape(color, shape)

  read()

  readNumber()

  write(val)

Funktionen für Bewegen von Objekten

  take()

  drop()

  push()

Diverse andere Funktionen

  seeing()

Berechnung des Scores

  Energieverbrauch

  Programmlänge

  Anweisungsanzahl

Konstanten

Farben

Muster/ Formen

Objekte

Himmelsrichtungen

Ein Feld kann enthalten:

Felder mit dem Objekt Wall können nichts anderes enthalten.

Funktionen zur Bewegung

move(direction)

Die Katze wird ein Feld vorwärts bewegt, in die Richtung, die der Parameter direction angibt. Fehlt der Parameter, bewegt sich die Katze vorwärts in die Richtung, in die sie schaut.

Für direction kann eine der Himmelsrichtungen eingesetzt werden.

Energieverbrauch

Der Energieverbrauch hängt von von der Bewegungsrichtung ab und davon, ob die Katze ein Objekt trägt oder nicht.

Richtung ohne Objekt mit Objekt
Vorwärts 1 2
Seitwärts 2 4
Rückwärts 4 6

turn(direction)

Dreht die Katze, sodass sie in eine neue Richtung blickt.

Der Parameter direction muss einen der folgenden Werte annehmen:

Funktionen für Formen, Farben und Zahlen

color()

Gibt die Farbe des Feldes, auf dem sich die Katze befindet, zurück. Enthält das Feld keine Farbe, so wird die Zeichenkette "None" zurückgegeben.

Der Rückgabewert ist eine der Farbkonstanten.

Beispiel

if (color()=="Red")
{
  // tue etwas, wenn das Feld rot ist
}

paint(color)

Färbt die Form auf dem Feld, auf dem sich die Katze befindet mit der Farbe color ein.

Erlaubte Werte für color sind die Farbkonstanten.

Energieverbrauch

1, wenn die Katze kein Objekt trägt, sonst 2.

setShape(color, shape)

Zeichnet auf das Feld, auf dem sich die Katze befindet die Form shape in der Farbe color.

Beispiel

setShape("Blue","Circle"); // zeichnet einen Blauen Kreis
setShape("None","None"); // entfernt eine farbige Form von dem Feld

Energieverbrauch

2, wenn die Katze kein Objekt trägt, sonst 4.

read()

Liest den Wert ein, der auf dem Feld direkt vor der Katze in Blickrichtung steht. Der Wert bleibt danach auf dem Feld stehen und kann mit weiteren read-Aufrufen erneut eingelesen werden.

Die Funktion gibt den eingelesenen Wert als string zurück, auch wenn es sich um eine Zahl handelt. Zum Einlesen von Zahlen benutzt man die Funktion readNumber.

Beispiel

var wert = read();

Befindet sich kein Wert auf dem einzulesenden Feld, gibt die Funktion eine leere Zeichenkette zurück.

Energieverbrauch

Das Lesen verbraucht 1 Energie.

readNumber()

Liest den Wert ein, der auf dem Feld direkt vor der Katze in Blickrichtung steht. Der Wert bleibt danach auf dem Feld und kann mit weiteren readNumber-Aufrufen erneut eingelesen werden.

Die Funktion wandelt den eingelesenen Wert in eine Zahl um.

Die Funktion readNumber kann in allen Puzzles verwendet werden, wo auch read verwendet werden darf.

Beispiel

var zahl = readNumber();

Befindet sich kein Wert auf dem einzulesenden Feld oder handelt es sich nicht um eine Zahl, so löst die Funktion eine Fehlermeldung aus.

Energieverbrauch

Das Lesen verbraucht 1 Energie.

write(val)

Schreibt den Wert val auf das Feld direkt vor der Katze, oder löscht das Feld, falls val den Wert nil hat. Bei einem Rätsel ohne Katze werden die Ausgabefelder von oben nach unten beschrieben, jeder read-Aufruf liest ein Feld ein.

Bei val kann es sich um einen beliebigen Typ handeln. Dieser wird auf dem Feld als Zeichenkette gespeichert. Wenn er wieder eingelesen wird, muss er in den passenden Datentyp zurückverwandelt werden.

Energieverbrauch

Das Schreiben eines Wertes verbraucht 2 Energie, jedoch nil nur 1 Energie.

Funktionen für Bewegen von Objekten

take()

Die Katze nimmt das Objekt auf, das in Blickrichtung direkt vor der Katze liegt.

Erzeugt eine Fehlermeldung, wenn kein Objekt auf dem Feld davor liegt, oder die Katze bereits einen Gegenstand trägt.

Es kann nur maximal ein Gegenstand getragen werden werden.

Energieverbrauch

Das Aufnehmen von Objekten verbraucht 5 Energie.

drop()

Legt das getragene Objekt auf dem Feld direkt vor der Katze ab.

Erzeugt eine Fehlermeldung, wenn die Katze kein Objekt trägt, oder der Gegenstand auf dem betreffenden Feld nicht abgelegt werden kann.

Energieverbrauch

Das Ablegen von Objekten verbraucht 2 Energie.

push()

Schiebt das Objekt direkt vor der Katze um ein Feld nach vorne. Die Katze bewegt sich dabei ebenfalls ein Feld nach vorne.

Wenn sich vor der Katze ein leeres Feld befindet, verhält sie sich so, als ob sie den Befehl move() erhalten hätte.

Fehlerbedingungen

Energieverbrauch

Das Schieben verbraucht 6 Energie bzw. 8 Energie, wenn die Katze ein Objekt trägt.

Diverse andere Funktionen

seeing()

Gibt das Objekt zurück, das sich in Blickrichtung direkt vor der Katze befindet. Mögliche Rückgabewerte: siehe Objekte.

Beispiel

if (seeing()=="Mouse")
{
  // tue etwas
}

Berechnung des Scores

Der Score setzt sich aus drei Komponenten zusammen:

Die Summe dieser drei Werte wird von der Schwierigkeit des Puzzles (normalerweise 1000) abgezogen und ergibt den Score.

Um also einen möglichst hohen Score zu erreichen muss die Katze das Puzzle möglichst energiearm (Katzen machen am liebsten ein Nickerchen!) mit einem möglichst kurzen Programm, das möglichst wenig Schritte benötigt, lösen.

Energieverbrauch

Die Katze verbraucht für jede Aktion etwas Energie. Wie viel ist bei den einzelnen Funktionen beschrieben.

Programmlänge

Anzahl der Programmanweisungen. Gezählt wird alles bis auf Klammern und Satzzeichen.

Anweisungsanzahl

Die Anzahl der Anweisungen, die das Programm beim Durchlauf abgearbeitet hat.