Skip to Content

<

Aller Anfang war NIKI

A cache by lazydays79 Send Message to Owner Message this owner
Hidden : 6/25/2013
Difficulty:
4.5 out of 5
Terrain:
1.5 out of 5

Size: Size: micro (micro)

Join now to view geocache location details. It's free!

Watch

How Geocaching Works

Related Web Page

Please note Use of geocaching.com services is subject to the terms and conditions in our disclaimer.

Geocache Description:

Dies ist ein kleines Rätsel, dass Euch an den Anfang vom Ende der Vernunft führt.




Eines haben alle vom Ende der Vernunft gemeinsam: sie erinnern sich gerne an alte Zeiten zurück. Insbesondere natürlich, wenn sie alt genug sind, an die 80er und 90er des letzten Jahrhunderts. Was waren das für Zeiten... VC20, C64, DOS, Windows for Workgroups, Spiele von LucasArts, Spiele von Sierra, Turbo Pascal... die Liste ist unendlich lang.


Apropos Turbo Pascal: für viele Mitmenschen vom Ende der Vernunft aus dieser Generation war dies die erste „echte“ Programmiersprache nach ersten Gehversuchen mit Commodore Basic.


Und so habe auch ich diese Sprache Anfang der 90er gelernt (inzwischen aber auch wieder verlernt). Den Einstieg in die prozedurale Programmierung erleichterte damals vielen Anfängern ein kleiner Roboter namens NIKI. Seinerzeit war NIKI so beliebt, dass er sogar eifrig im Schulunterricht genutzt wurde. Die Idee dahinter, die im Grunde von Richard E. Pattis stammt, hat sogar bis heute überlebt und wurde auch auf andere Programmiersprachen übertragen. Wer direkt mit Java eingestiegen ist, wird vielleicht schon einmal was von einem Hamster in einem Labyrinth gehört haben. ;)


Genug der Vorrede. Ich präsentiere NIKI:


>


Richtig gesehen: NIKI ist nicht mehr als ein kleines Dreieck, welches in diesem Fall nach rechts schaut (die Spitze ist also vorne). Er kann aber auch nach links, oben oder unten schauen.


NIKIs Welt ist eine Spielfläche, begrenzt durch Wände, also mehr oder weniger ein Labyrinth. Auf dieser Spielfläche sind ein paar Schrauben verteilt.


Anfangs kann NIKI noch sehr wenig:


  • Er kann ein Feld vorgehen

  • Er kann sich nach links drehen

  • Er kann eine Schraube aufnehmen

  • Er kann eine Schraube ablegen

  • Er weiß, ob vor ihm eine Wand ist

  • Er weiß, ob auf dem Feld, auf dem er steht, noch mindestens eine Schraube liegt

  • Er weiß, ob er selbst noch mindestens eine Schraube hat

Das war es schon. Und so beginnt man das Erlernen von höheren Programmiersprachen, in dem man NIKI komplexere Fähigkeiten verleiht. Man kann ihm z.B. beibringen, sich umzudrehen, was ja auch nicht mehr ist, als sich zwei mal nach links zu drehen. Unmögliche Befehle wie vorgehen, obwohl eine Wand im Weg steht, oder eine Schraube aufnehmen, obwohl keine auf dem Feld ist, sind übrigens nicht erlaubt und führen zum Abbruch des Programms.


Wer nähere Informationen möchte, kann hier ein wenig stöbern:


NIKI der Roboter


In diesem Wikipedia Artikel ist allerdings schon eine neuere Version von NIKI für Windows zu sehen. Ich selbst kenne NIKI noch aus DOS Zeiten, und somit nutze ich für dieses Rätsel auch die alte NIKO Optik. :)


Jetzt aber zum eigentlichen Rätsel. Gegeben sei das folgende Spielfeld:


10  4 · · · · 2 · · · · · · · · ·
· · · · · · · · 1 · 2 · · · ·
· · 1 · · 3 · · · · · · · · 3
· · · · · · · · · 2 3 · · · ·
· · · · · · · 3 · · 1 · 1 · ·
· 3 2 3 · · · · · · · · · · ·
· · · 1 · · 2 · · · · · · · 2
· · · · · · · · 2 · · 2 · · ·
· · · · · · · · · · · · · · 7
> · 2 · · · · 3 · · · 1 1 1 ·
  A B C D E F G H I J K L M N O

Schaut mal auf das Feld A1. Richtig, da ist NIKI! Da steht er, schaut nach rechts und hat selbst keine Schrauben dabei. Und schaut mal auf das Feld O2: Die Sieben hier bedeutet, dass auf diesem Feld sieben Schrauben liegen. Der Rest sollte selbsterklärend sein.


Außer dem Spielfeld habe ich noch ein wenig Pascal Code für Euch vorbereitet:


Program Aller_Anfang_War_NIKI;

Procedure drehe_um;
Begin
  drehe_links;
  drehe_links
End;

Procedure drehe_rechts;
Begin
  drehe_um;
  drehe_links
End;

Procedure nimm_alles;
Begin
  While Platz_belegt Do
    nimm_auf
End;

Begin
  While vorne_frei Do
  Begin
    vor;
    nimm_alles
  End;

  drehe_um;

  vor; vor; vor; vor;

  drehe_rechts; nimm_alles;

  vor; vor;

  drehe_rechts;

  While vorne_frei Do
  Begin
    vor;
    If hat_Vorrat Then
    Begin
      gib_ab
    End
  End;

  drehe_rechts; vor;

  nimm_alles;

  drehe_um;

  vor; vor; vor; vor; vor;

  drehe_links;

  vor; vor; vor; vor; vor; vor;

  drehe_links;

  gib_ab; vor;

  gib_ab; vor;

  gib_ab; vor;

  gib_ab; vor;

  drehe_rechts;

  while vorne_frei Do
  Begin
    vor;
    nimm_alles;
    If hat_Vorrat Then gib_ab;
  End;

  drehe_rechts;

  while vorne_frei Do
  Begin
    vor;
    nimm_alles;
  End;

  drehe_links;

  while vorne_frei Do
  Begin
    nimm_alles;
    If hat_Vorrat Then gib_ab;
    vor;
  End;

  drehe_um; vor; vor;

  drehe_links;

  While vorne_frei Do
  Begin
    If hat_Vorrat Then gib_ab;
    vor;
  End;

  While hat_Vorrat Do gib_ab;

  drehe_links; vor;
End.

Mit diesem Code erfüllt NIKI keine wirkliche Aufgabe. Er wird nicht alle Schrauben aufsammeln, das ganze Labyrinth ablaufen oder sonst etwas von den sinnvollen Aufgaben erledigen, die man ihm einst im Unterricht beigebracht hat. Aber er wird einen Teil des Labyrinths erkunden und auch einige Schrauben aufsammeln oder ablegen. Teile des Codes sind aber auch überflüssig, lasst Euch also nicht verwirren. :)


Was genau er tut, sollt Ihr nun heraus bekommen. Das könnt Ihr entweder, in dem Ihr das Spielfeld ausdruckt und den Code Schritt für Schritt nachvollzieht, oder Ihr verfolgt NIKI einfach am Monitor Eures PCs und schaut ihm zu. Lest dafür noch mal in den oben erwähnten Wikipedia Artikel genau nach.


Hier nun die Werte, die Ihr braucht, um die finalen Koordinaten zu errechnen. Dabei bezieht sich alles auf das Spielfeld nach Ablauf des Codes:


  • A = Anzahl der Schrauben auf Feld D3
  • B = Anzahl der Schrauben auf Feld O2
  • C = Anzahl der Schrauben auf Feld C5
  • D = Gesamtanzahl der Schrauben auf den Feldern C7 und C8
  • E = Gesamtanzahl der Schrauben in Reihe 6
  • F = Gesamtanzahl der Schrauben in Spalte I

Der Cache liegt dann hier:


N 52° 41.ABC E 007° 14.DEF


Hier noch ein kleiner Checker:
 


Und nun viel Spaß drinnen beim Rätseln und draußen beim Suchen!

Additional Hints (Decrypt)

Süe qnf Eägfry:
Jraa Vue nyyrf evpugvt trznpug unog, fgrug AVXV nz Raqr nhs qrz Sryq O8 haq fpunhg anpu yvaxf.

Süe qnf Irefgrpx:
Ubuyrf Fgüpx Ovexr

Decryption Key

A|B|C|D|E|F|G|H|I|J|K|L|M
-------------------------
N|O|P|Q|R|S|T|U|V|W|X|Y|Z

(letter above equals below, and vice versa)



 

Find...

181 Logged Visits

Found it 170     Write note 10     Publish Listing 1     

View Logbook | View the Image Gallery

**Warning! Spoilers may be included in the descriptions or links.

Current Time:
Last Updated:
Rendered From:Unknown
Coordinates are in the WGS84 datum

Return to the Top of the Page

Reviewer notes

Use this space to describe your geocache location, container, and how it's hidden to your reviewer. If you've made changes, tell the reviewer what changes you made. The more they know, the easier it is for them to publish your geocache. This note will not be visible to the public when your geocache is published.