Skip to content

Braingolf Mystery Cache

This cache is temporarily unavailable.

PattuX: Die Dose ist leider weg.
In Kürze geht es weiter, eventuell ein paar Meter weiter.

More
Hidden : 4/15/2018
Difficulty:
4.5 out of 5
Terrain:
1 out of 5

Size: Size:   micro (micro)

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

Watch

How Geocaching Works

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

Geocache Description:


Heute Golfen wir mal. Allerdings nicht mit Ball und Schläger, sondern, wie man vielleicht am Gebäude neben den Listingkoordinaten erkennen kann, mit Computer und Tastatur. Das Ganze nennt sich dann Codegolf.
 

Was ist Codegolf?

 


Wie beim normalen Golfen, geht es darum ein Ziel mit möglichst wenig Ressourcen zu erreichen. Für Codegolf bedeutet das: Schreibt ein Programm, welches eine bestimmte Funktion erfüllt in möglichst wenigen Zeichen.

 

 

 

Was soll die Funktion denn machen?

 


Ganz einfach: Die Listingkoordinaten ausgeben. Die Funktion hat keinen Input.
Konkret sieht die Ausgabe dann zeichengenau so aus: N 51° 01.525' E 013° 43.430'
Dabei solltet ihr von ISO 8859-1 ausgehen - das spielt bei der Ausgabe des Gradzeichens eine Rolle. Für dieses gilt damit der ASCII-Wert 176.
Der "Par"-Wert, also die maximal erlaubte Zeichenanzahl eures Codes ist 165.
Das ist übrigens auch nur mit Nachdenken und ohne spezielle Tools möglich. Ansonsten käme man auch durchaus bis 129 runter, eventuell noch weiter.

 

 

 

 

Und in welcher Programmiersprache soll das passieren?

 


Wie man vielleicht am Titel erahnen kann, muss euer Programm in Brainfuck geschrieben sein.

 

 

 

 

Was ist Brainfuck?

 


Von vielen Cachern hört man, Brainfuck sei eine Verschlüsselung. Das ist jedoch falsch, denn Brainfuck ist in Wirklichkeit eine Programmiersprache. Sie ist sogar Turing-vollständig, das heißt, jede Funktion, die man berechnen kann, kann man mit Brainfuck berechnen.
Die Grundidee ist folgende: Ihr habt ein unendliches Band mit unendlich vielen Zellen. Jede Zelle hat also zwei Nachbarn, jeweils einen links und einen rechts. Dazu habt ihr einen Zeiger, der auf eine Zelle zeigt. Anfangs steht in allen Zellen eine Null. Nun beginnt ihr euren Code Zeichen für Zeichen abzuarbeiten. Die acht Befehlssymbole (+ - < > , . [ ]) machen dabei folgendes:

 

 

 

 

  • "+": Erhöhe den Wert der Zelle, auf die der Zeiger zeigt um 1
  • "-": Vermindere den Wert der Zelle, auf die der Zeiger zeigt um 1
  • "<": Bewege den Zeiger eine Zelle nach links
  • ">": Bewege den Zeiger eine Zelle nach rechts
  • ".": Wandele den Wert der Zelle, auf die der Zeiger zeigt in ein ASCII-Zeichen um und gib dieses aus. Der Wert der Zelle bleibt unverändert.
  • "[": Wenn der Wert der aktuellen Zelle Null ist, springe vor zur zugehörigen ] und mache dort mit der Codeausführung weiter.
  • "]": Wenn der Wert der aktuellen Zelle nicht Null ist, springe zurück zur zugehörigen [ und mache dort mit der Codeausführung weiter.

Das Komma realisiert Input, der uns ja aber nicht interessieren soll.
Die Zuordnung der "zugehörigen Klammer" funktioniert genau wie in der Mathematik. Beispielsweise gehören in "[+[+]-].[-]" jeweils die erste/vierte, die zweite/dritte und fünfte/sechste Klammer zusammen.
Weiterhin ist das sogenannte "Wrapping" zu beachten. Die Zellen können nur Werte von 0 bis 255 halten. Führt ihr auf einer 255 ein + aus, wird der Inhalt der Zelle zu 0. Andersherum, wenn ihr auf einer Zelle mit 0 ein - ausführt, wird daraus eine 255.
Alle anderen Zeichen werden ignoriert und auch nicht mitgezählt.

 

 

 

 

Kann ich das irgendwo testen?


Natürlich! Hier kannst das.

(Achtung! Der Link führt Dich zu einer externen Seite. Dort findest Du die benötigten Informationen zum Lösen des Rätsels. Als Cachebesitzer versichere ich Dir, dass diese Seite ungefährlich ist. Die Seite ist nicht von Groundspeak oder einem Reviewer auf schädlichen Inhalt überprüft worden und wird daher auf eigene Gefahr besucht.)

Wenn deine Lösung korrekt ist, bekommst du die Koordinaten. Falls nicht, wird dir gesagt, ob zumindest die Zeichenanzahl oder die Ausgabe stimmt.
Falls deine Klammersetzung nicht passt, wird der Code jedoch gar nicht erst ausgeführt.
Wollt ihr erstmal warm werden mit der ganzen Materie, gibt es hier ein Tool, das euch euren Code visualisiert, indem es immer das komplette (jedoch endliche) Band anzeigt. Seid ihr überzeugt, dass euer Programm richtig ist (könnt ihr alternativ hier ausprobieren), erhaltet jedoch eine andere Fehlermeldung, schreibt mir einfach.

 

Update 03.05.2022:

Ihr sucht jetzt einen Small an gleicher Stelle!
Hint: Stein am Boden

 

 

Additional Hints (Decrypt)

Qnf 'Uryyb Jbeyq'-Orvfcvry iba Jvxvcrqvn vfg va qrz ireyvaxra Ivfhnyvfvrehatfgbby rorasnyyf nyf Orvfcvry vzcyrzragvreg, jraa vue qvr Frvgr össarg. Süe rvar zötyvpur Yöfhat qrf Eägfryf zhff zna nz Tehaqcevamvc tne avpug fb ivry äaqrea.

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)