# Copyright (c) 2025 Martin Kayser (tebarius)
# Licensed under the MIT License. See LICENSE file in the project root.

cesar_all = ("### Cesar-Verschiebe-Chiffre\n"
             "Von der eingegebenen Zeichenkette werden, alle möglichen Verschiebungen gemäß der Cesarchiffre generiert "
             "und ausgegeben. Sonderzeichen und Zahlen werden unverändert wiedergegeben.")

buchstabenwortwert = ("### Buchstabenwortwerte ermitteln\n"
                      "Diese Funktion berechnet den Buchstabenwert der eingegeben Zeichenkette. (A=1 B=2 .... Ä=27 "
                      "Ö=28 Ü=29 ß=30) Bei mehreren durch Leerzeichen getrennten Wörtern wird auch für jedes einzelne "
                      "Wort der Wortwert errechnet.  \n"
                      "Desweiteren wird die Quersumme und die iterierte Quersumme des Gesamtbuchstabenwertes als auch "
                      "für jedes Wort das Buchstabenwertprodukt und das Gesamtbuchstabenwertprodukt ermittelt.")

buchstabenwert_zu_text = ("### Buchstabenwerte zu Text\n"
                          " Die eingegebenen Buchstabenwerte werden in die entsprechenden Buchstaben umgewandelt."
                          " (A=1 B=2 .... Ä=27 Ö=28 Ü=29 ß=30) Als Trennungszeichen zwischen den Zahlen sind folgende"
                          " Zeichen erlaubt: | , _ . - / ; , und Leerzeichen. Bei Verwendung von Leerzeichen sollten"
                          " möglichst nur 1 Leerzeichen zwischen den Zahlen verwendet werden (überzählige Leerzeichen"
                          " werden sonst als nicht erkannte Zeichen behandelt).")

zeichenkette_reverse = ("### Zeichenkette rückwärts\n"
                        "Diese Funktion gibt die eingegebene Zeichenkette von hinten nach vorn gelesen aus.")

zeichenanzahl = ("### Zeichenzählen\n"
                 "Es wird das Vorkommen jedes einzelnen Zeichens gezählt und ausgegeben. Achtung! Leerzeichen,"
                 " Tabulatorzeichen und Zeilenumbrüche werden nur vor dem letzten sichtbaren Zeichen gezählt!!!")

quersummen = ("### Quersumme(n)\n"
              "Von den eingegebenen Zahlen werden die Quersummen und iterierten Quersummen errechnet und ausgegeben. "
              "Als Trennungszeichen zwischen den Zahlen sind folgende Zeichen erlaubt: | , _ . - / ; , und "
              "Leerzeichen. Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen zwischen den Zahlen "
              "verwendet werden (überzählige Leerzeichen werden sonst als nicht erkannte Zeichen behandelt).")

einschluss_count = ("### Einschlüsse zählen\n"
                    "Es werden die Einschlüsse in Buchstaben und Ziffern gezählt. Neben der Anzahl der Einschlüsse für "
                    "jeden einzelnen Buchstaben, für jedes Wort und die gesammte Eingabe ermittelt. Da es sich bei der "
                    "Zahl 4 je nach Schreibweise um eine Zahl mit oder ohne Einschluß handeln kann, werden beide "
                    "Varianten berücksichtigt.  \n"
                    "!!! Hier ist Klein- und Großschreibung wichtig, denn z.B. b=1 aber B=2 !!!")

morse_to_abc = ("### Morsecode zu Text\n"
                "Die Eingabe des Morsecodes hat wie folgt zu erfolgen: - für lang und . für kurz, zwischen den "
                "Buchstaben ein Leerzeichen und als Worttrennung ein / wobei davor und danach ein Leerzeichen steht. "
                "Für unbekannte Morsecodes erscheint in der Ausgabe ein #.")

abc_to_morse = ("### Text zu Morsecode\n"
                "Eingabetext wird als Morsecode ausgegeben. Nicht kodierbare Zeichen erscheinen unverändert "
                "in der Ausgabe.")

rot5 = ("### ROT 5\n"
        "ROT 5 bezeichnet eine Verschiebechiffrierung, bei welcher die Ziffern 0-9 um je 5 Stellen "
        "verschoben werden. Aus 0 wird 5, aus 1 wird 6, aus 7 wird 2,usw. Kodieren und Dekodieren "
        "geschieht hier mit ein und derselben Funktion, alle Zeichen die keine Ziffern sind werden "
        "unverändert wiedergegeben.")

rot13 = ("### ROT 13\n"
         "ROT 13 bezeichnet eine Verschiebechiffrierung, bei welcher die 26 Buchstaben (A-Z) um genau "
         "13 Stellen verschoben werden. Da dies genau die Hälfte des Alphabets ist, wird z.B. aus einem "
         "A ein N und aus einem N ein A und somit wird über die selbe Funktion sowohl kodiert als auch "
         "dekodiert. Die Klein- und Großschreibung bleibt erhalten und alle Zeichen die keine Buchstaben "
         "sind werden unverändert wiedergegeben.")

rot18 = ("### ROT 18\n"
                "ROT 18 ist eigentlich nix anderes als, daß hier ROT 5 mit ROT 13 kombiniert wird. Die Buchstaben "
                "A-Z werden um 13 Stellen verschoben und die Ziffern 0-9 um 5 Stellen. Alle sonstigen Zeichen "
                "bleiben unverändert und die Klein- oder Großschreibung bleibt auch erhalten, und auch hier "
                "kodiert/dekodiert ein und dieselbe Funktion.")

rot47 = ("### ROT 47\n"
         "Bei ROT47 geschieht eigentlich nix anderes als bei ROT5 oder ROT13 nur das hier die druckbaren "
         "ASCII-Zeichen mit den Werten 33-126(dezimal) zur Auswahl stehen, also nahezu alle Zeichen die auf "
         "eine Standardtastatur aufgedruckt sind. Das Ergebnis ist aber deutlich unlesbarer als z.B. bei "
         "ROT13. Alle weiteren Zeichen (z.B. ÄÖÜß) werden unverändert wiedergegeben und auch hier "
         "kodiert/dekodiert ein und dieselbe Funktion.")

ascii_to_dez = ("### Text zu Dezimalzahlen\n"
                "Der eingegebene Text wird in Dezimalzahlen umgewandelt.")

dez_to_ascii = ("### Dezimalzahlen zu Text\n"
                "Die eingegebenen Dezimalzahlen werden in die entsprechenden UNICODE-Zeichen umgewandelt. Als "
                "Trennungszeichen zwischen den Zahlen sind folgende Zeichen erlaubt: | , _ . - / ; , und Leerzeichen. "
                "Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen zwischen den Zahlen verwendet "
                "werden (überzählige Leerzeichen werden sonst als nicht erkannte Zeichen behandelt).")

ascii_to_hex = ("### Text zu Hexadezimalzahlen\n"
                "Der eingegebene Text wird in Hexadezimalzahlen umgewandelt.")

hex_to_ascii = ("### Hexadezimalzahlen zu Text\n"
                "Die eingegebenen Hexadezimalzahlen werden in die entsprechenden UNICODE-Zeichen umgewandelt. "
                "Als Trennungszeichen zwischen den Zahlen sind folgende Zeichen erlaubt: | , _ . - / ; , und "
                "Leerzeichen. Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen zwischen den "
                "Zahlen verwendet werden (überzählige Leerzeichen werden sonst als nicht erkannte Zeichen behandelt).")

octal_to_ascii = ("### Octalzahlen zu Text\n"
                  "Die eingegebenen Octalzahlen werden in die entsprechenden UNICODE-Zeichen umgewandelt. Als "
                  "Trennungszeichen zwischen den Zahlen sind folgende Zeichen erlaubt: | , _ . - / ; , und Leerzeichen. "
                  "Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen zwischen den Zahlen verwendet "
                  "werden (überzählige Leerzeichen werden sonst als nicht erkannte Zeichen behandelt).")

ascii_to_octal = ("### Text zu Octalzahlen\n"
                  "Der eingegebene Text wird in Octalzahlen umgewandelt.")

ascii_to_bin16 = ("### Text zu Binärzahlen (16 bit)\n"
                  "Der eingegebene Text wird in Binärzahlen mit einer festgelegten Breite von 16bit (16 Zeichen) "
                  "umgewandelt.")

ascii_to_bin8 = ("### Text zu Binärzahlen (8 bit)\n"
                 "Der eingegebene Text wird in Binärzahlen mit einer festgelegten Breite von 8bit (8 Zeichen) "
                 "umgewandelt.")

bin_to_ascii = ("### Binärzahlen zu Text\n"
                "Die eingegebenen Binärzahlen werden in die entsprechenden UNICODE-Zeichen umgewandelt. Als "
                "Trennungszeichen zwischen den Zahlen sind folgende Zeichen erlaubt: | , _ . - / ; , und "
                "Leerzeichen. Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen zwischen den Zahlen "
                "verwendet werden (überzählige Leerzeichen werden sonst als nicht erkannte Zeichen behandelt).")

zahlwortsuche_de = ("### Zahlwortsuche DE 0-12\n"
                    "Diese Funktion versucht deutsche Zahlworte zwischen 0 und 12 in einem Text aufzuspüren. Da alle "
                    "Zeichen ignoriert werden, welche keine Buchstaben sind, werden auch Zahlwörter gefunden welche sich "
                    "z.B. über zwei Worte verteilen.")

zahlwortsuche_en = ("### Zahlwortsuche EN 0-15\n"
                    "Diese Funktion versucht englische Zahlworte zwischen 0 und 15 in einem Text aufzuspüren. "
                    "Da alle Zeichen ignoriert werden, welche keine Buchstaben sind, werden auch Zahlwörter gefunden "
                    "welche sich z.B. über zwei Worte verteilen.")

kenny_kodieren = ("### Kennyspeak kodieren\n"
                  "Hilfe sie haben Kenny getötet.. ach nee er kann ja noch seine unverständlichen m p f -Laute von "
                  "sich geben und hier geht es darum normalen Text in genau diese Laute umzusetzen, wo jedem "
                  "Buchstaben A-Z eine 3 Zeichen-Kombination zugeordnet ist die sich aus m,p,f zusammensetzt."
                  "(a=mmm h=mfp x=fpf)")

kenny_dekodieren = ("### Kennyspeak dekodieren\n"
                    "Wie? Du verstehst Kenny's mpf-Gebrabbel nicht? Na gut da kann ich helfen!! Nicht kennifiziertes "
                    "wird unverändert ausgegeben.")

kenny_raten = ("### KENNYspeak raten\n"
               "Diese Funktion dient zum dekodieren von kennyfizierten Texten, bei denen die 3 Buchstaben mpf "
               "vertauscht oder durch andere Zeichen ersetzt wurden. Hierzu werden vor der Dekodierung die 3 "
               "häufigsten Zeichen im Text ermittelt und alle anderen Zeichen entfernt bevor die 6 möglichen "
               "Lösungen ausgegeben werden. (Falls zum kodieren die Zahlen 0,1 oder 2 verwendet wurden, werden "
               "sie durch Buchstaben a,b,c.. ersetzt)")

primzahlalphabet_dekodieren = ("### Primzahlalphabet dekodieren\n"
                               "Hier können Primzahlen kleiner als 1 Million in Buchstaben umgewandelt werden. Es "
                               "wird dabei davon ausgegangen, daß den Primzahlen wiederholend die Buchstaben A-Z "
                               "zugeordnet werden,2=A 3=B 5=C 7=D 11=E ... 97=Y 101=Z 103=A 107=B ... usw.")

primzahlpruefen = ("### Primzahl prüfen\n"
                   "Für eine eingegebene Zahl wird überprüft, ob es sich um eine Primzahl handelt. Ist die eingegebene "
                   "Zahl eine Primzahl wird auch informiert, die wievielte Primzahl es ist. Zahlen über 1,299,709 (der "
                   "100,000. Primzahl) werden abgelehnt.")

nte_primzahl = ("### n.te Primzahl\n"
                "Du willst wissen wie z.B. die 1,000. Primzahl lautet, dann bist du hier genau richtig. Die Funktion "
                "liefert maximal die 100,000. Primzahl.")

primfaktoren = ("### Primfaktorenzerlegung\n"
                "Für die eingegebene Zahl werden die Primfaktoren ermittelt und ausgegeben. Sollte die Zahl einen "
                "Primfaktoren haben, welcher größer als 100 Millionen ist, wird die Suche abgebrochen, da die Suche "
                "sonst zu lange dauert. Die Funktion lässt sich damit also auch, bei Zahlen kleiner als 200 Millionen, "
                "dazu benutzen um festzustellen, ob die eingegebene Zahl eine Primzahl ist.")

dez_to_hex_oct_bin = ("### Dezimal zu HEX, Octal, Binär\n"
                      "Die eingegebenen dezimalen Ganzzahlen werden in die entsprechenden hexadezimalen, octalen und "
                      "binären Zahlen umgerechnet. Als Trennungszeichen zwischen den Zahlen sind folgende Zeichen "
                      "erlaubt: | , _ / ; , und Leerzeichen. Bei Verwendung von Leerzeichen sollten möglichst nur 1 "
                      "Leerzeichen zwischen den Zahlen verwendet werden (überzählige Leerzeichen werden sonst als "
                      "nicht erkannte Zeichen behandelt).")

hex_to_dez_oct_bin = ("### Hexadezimal zu Dezimal, Octal, Binär\n"
                      "Die eingegebenen hexadezimalen Zahlen werden in die entsprechenden dezimalen, octalen und "
                      "binären Zahlen umgerechnet. Als Trennungszeichen zwischen den Zahlen sind folgende Zeichen "
                      "erlaubt: | , _ / ; , und Leerzeichen. Bei Verwendung von Leerzeichen sollten möglichst nur "
                      "1 Leerzeichen zwischen den Zahlen verwendet werden (überzählige Leerzeichen werden sonst als "
                      "nicht erkannte Zeichen behandelt).")

oct_to_hex_dez_bin = ("### Octal zu HEX, Dezimal, Binär\n"
                      "Die eingegebenen octalen Zahlen werden in die entsprechenden hexadezimalen, dezimalen und "
                      "binären Zahlen umgerechnet. Als Trennungszeichen zwischen den Zahlen sind folgende Zeichen "
                      "erlaubt: | , _ / ; , und Leerzeichen. Bei Verwendung von Leerzeichen sollten möglichst nur "
                      "1 Leerzeichen zwischen den Zahlen verwendet werden (überzählige Leerzeichen werden sonst als "
                      "nicht erkannte Zeichen behandelt).")

bin_to_hex_dez_oct = ("### Binär zu HEX, Dezimal, Octal\n"
                      "Die eingegebenen binären Zahlen werden in die entsprechenden hexadezimalen, dezimalen und "
                      "octalen Zahlen umgerechnet. Als Trennungszeichen zwischen den Zahlen sind folgende Zeichen "
                      "erlaubt: | , _ / ; , und Leerzeichen. Bei Verwendung von Leerzeichen sollten möglichst nur "
                      "1 Leerzeichen zwischen den Zahlen verwendet werden (überzählige Leerzeichen werden sonst als "
                      "nicht erkannte Zeichen behandelt).")

abc_to_tomtom = ("### Text zu Tomtom\n"
                 "Beim Tomtom Code werden die einzelnen Buchstaben durch Kombinationen von / und \\ dargestellt. "
                 "Zwischen den einzelnen Buchstaben steht ein Leerzeichen zwischen Worten zwei Leerzeichen. Kodiert "
                 "werden, können nur die Buchstaben A-Z.")

tomtom_to_abc = ("### Tomtom zu Text\n"
                 "Beim Tomtom Code werden die einzelnen Buchstaben durch Kombinationen von / und \\ dargestellt. "
                 "Zwischen den einzelnen Buchstaben steht ein Leerzeichen zwischen Worten zwei Leerzeichen. Kodiert "
                 "werden, können nur die Buchstaben A-Z.")

text_to_slashpipe = ("### Text zu Slash and Pipe\n"
                     "Vergleichbar mit dem Tomtom-Code nur das hier für die Buchstabenkodierung auch | eingesetzt "
                     "wird. Zwischen den einzelnen Buchstaben steht ein Leerzeichen zwischen Worten zwei Leerzeichen. "
                     "Kodiert werden, können nur die Buchstaben A-Z.")

slashpipe_to_text = ("### Slash and Pipe zu Text\n"
                     "Vergleichbar mit dem Tomtom-Code nur das hier für die Buchstabenkodierung auch der | mit "
                     "eingesetzt wird. Zwischen den einzelnen Buchstaben steht ein Leerzeichen zwischen Worten zwei "
                     "Leerzeichen. Dekodiert werden, können nur die Buchstaben A-Z.")

periodensystem = ("### Periodensystem: Ordnungszahl<->Symbol\n"
                  "Eingegebenen Ordnungszahlen 1-118 aus dem Periodensystem der Elemente werden in die ihnen "
                  "zugehörigen Elementsymbole umgewandelt und anschließend als Text ausgegeben, außerdem erscheint "
                  "noch eine Ausgabe bei welcher nur die Anfangsbuchstaben der Symbole ausgegeben werden. Werden in "
                  "der Eingabe Symbole (z.B. N, He) erkannt werde diese zusammen mit ihren Ordnungszahlen ausgegeben. "
                  "Als Trennungszeichen zwischen den Zahlen und/oder Symbolen sind folgende Zeichen erlaubt: "
                  "| , _ . - / ; , und Leerzeichen. Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen "
                  "zwischen den Zahlen verwendet werden (überzählige Leerzeichen werden sonst als nicht erkannte "
                  "Zeichen behandelt).")

naknak_to_text = ("### NakNak to Text\n"
                  "Nak-Nak / Entensprache / Duck Speak ist eine Spaßsprache, welche vom Owner der Website "
                  "[https://schnatterente.net]"
                  "(https://web.archive.org/web/20230807065421/https://www.schnatterente.net/) entwickelt wurde. "
                  "Diese Funktion übersetzt das Geschnatter in verständliche Buchstaben/Zeichen. !!Bitte unbedingt "
                  "die Groß- und Kleinschreibung beibehalten!! Wer diesen Quatsch unbedingt umgekehrt übersetzten "
                  "will, wird wohl etwas suchen müssen, da der Original-Übersetzer, der unter "
                  "https://uebersetzer.schnatterente.net erreichbar war, nicht mehr online ist und ich ganz bestimmt "
                  "keinen hier integrieren werde.")

navajo_to_text = ("### Navajo-ABC to Text\n"
                  "Die Sprache der Navajo-Indianer wurde im zweiten Weltkrieg für den verschlüßelten Funkverkehr "
                  "eingesetzt. Vorteile waren, daß nahezu niemand außer Navajo-Volk die Sprache verstand und es keine "
                  "schriftlichen Aufzeichnungen über die Sprache gab. Das Alphabet und die Codewörter wurden dabei von "
                  "den Codesprechern (natürlich Navajo's) auswendig gelernt. Die Dekodierfunktion hier übersetzt das "
                  "Codealphabet (A-Z), bei welchem es auch so ist, daß unterschiedliche Worte für den selben "
                  "Buchstaben stehen, in normalen Text. Leider existieren leicht unterschiedliche Alphabete was die "
                  "Wörter bzw. deren Schreibweise angeht im Netz, mit welchen codiert wird, weshalb ich hier nur die "
                  "Dekodierung anbiete. weitere Codewörter und Erklärungen gibt es z.B. hier: "
                  "https://ww2db.com/other.php?other_id=29  oder hier: "
                  "https://math.ucsd.edu/~crypto/Projects/RobertoSandoval/NavajoWindtalkers.pdf")

pi_suche = ("### PI Nachkommastellensuche\n"
            "Für die eingegebene Zahl/Zahlenreihe X wird versucht die entsprechende X. Nachkommastelle auszugeben "
            "und das erst Vorkommen der Zahlenreihe X innerhalb der Nachkommastellen von PI "
            "(3.141592653589793238462643...) zu ermitteln. Aus Performance- und Speicherplatzgründen ist die Suche "
            "auf die ersten 10 Millionen Nachkommastellen beschränkt.")

euler_suche = ("### Eulersche Zahl - Nachkommastellensuche\n"
               "Für die eingegebene Zahl/Zahlenreihe X wird versucht die entsprechende X. Nachkommastelle auszugeben "
               "und das erst Vorkommen der Zahlenreihe X innerhalb der Nachkommastellen von e "
               "(2.71828182845904523.....) zu ermitteln. Aus Performance- und Speicherplatzgründen "
               "ist die Suche auf die ersten 10 Millionen Nachkommastellen beschränkt.")

goldener_schnitt_suche = ("### phi(Goldener Schnitt) Nachkommastellensuche\n"
                          "Für die eingegebene Zahl/Zahlenreihe X wird versucht die entsprechende X. Nachkommastelle "
                          "auszugeben und das erst Vorkommen der Zahlenreihe X innerhalb der Nachkommastellen von "
                          "phi (1.618033988749894848204586...) zu ermitteln. Aus Performance- und Speicherplatzgründen "
                          "ist die Suche auf die ersten 10 Millionen Nachkommastellen beschränkt.")

anagramm_suche_de = ("### Anagrammsuche mit Wörterbuch DE\n"
                     "Diese Funktion benutzt eine deutsche Wörterbuchdatei vom Project "
                     "https://sourceforge.net/projects/germandict um zu überprüfen ob sich unter Verwendung __aller__ "
                     "eingegebenen Buchstaben Wörter bilden lassen, welche im Wörterbuch vorkommen.")

anagramm_suche_en = ("### Anagrammsuche mit Wörterbuch EN\n"
                     "Diese Funktion benutzt die englische Wörterliste en_US-large.txt vom Project "
                     "https://sourceforge.net/projects/wordlist um zu überprüfen ob sich unter Verwendung aller "
                     "eingegebenen Buchstaben Wörter bilden lassen, welche im Wörterbuch vorkommen. Dieses Wörterbuch "
                     "kennt übrigens auch viele Wörter mit Apostroph wie z.B. say's.")

wortsuche_de = ("### Wortsuche mit Wörterbuch DE\n"
                "Wer kennt es nicht? Man sucht ein Wort mit einer bestimmten Anzahl an Buchstaben und weiß aber z.B. "
                "nur den Anfangsbuchstaben und die letzten 3 Buchstaben. Hierbei soll diese Funktion helfen. "
                "Unbekannte Buchstaben werden dabei einfach durch * ersetzt. Klein-/Großschreibung in der Eingabe "
                "wird dabei ignoriert.  \n"
                "Beispiel:  \n"
                "Ge*ca**i**  -> Geocaching  \n"
                "ge*ca**i**  -> Geocaching  \n"
                "T*****dose  -> Tupperdose, Tabaksdose  \n"
                "Diese Funktion nutzt dafür die deutsche Wörterbuchdatei vom Project "
                "https://sourceforge.net/projects/germandict")

wortsuche_en = ("### Wortsuche mit Wörterbuch EN\n"
                "Wer kennt es nicht? Man sucht ein Wort mit einer bestimmten Anzahl an Buchstaben und weiß aber z.B. "
                "nur den Anfangsbuchstaben und die letzten 3 Buchstaben. Hierbei soll diese Funktion helfen. "
                "Unbekannte Buchstaben werden dabei einfach durch * ersetzt. Klein-/Großschreibung in der Eingabe "
                "wird dabei ignoriert.  \n"
                "Beispiel:  \n"
                "Ge*ca**i**  -> geocaching  \n"
                "ge*ca**i**  -> geocaching  \n"
                "say*s       -> say's (Die Wortliste kennt viele Wörter mit Apostroph)  \n"
                "coordinat** -> coordinator, coordinates, coordinated  \n"
                "Diese Funktion nutz dafür die englische Wörterliste en_US-large.txt vom Project "
                "https://sourceforge.net/projects/wordlist")

remorse_de = ("### RE-Morse DE\n"
              "Es gibt ja so Leute, die finden es lustig einen Morsecode so aufzuschreiben, daß zwar Wort für Wort "
              "getrennt wird, aber ansonsten einfach mal die Leerzeichen weggelassen werden. Bei genau solchen "
              "fiesen Gemeinheiten hilft diese Funktion. Für diese Funktion wurde basierend auf der deutschen "
              "Wörterbuchdatei vom Project https://sourceforge.net/projects/germandict eine "
              "spezielle Wörterbuchdatei generiert, um eine beschleunigte Abfrage zu ermöglichen.")

remorse_en = ("### RE-Morse EN\n"
              "Es gibt ja so Leute, die finden es lustig einen Morsecode so aufzuschreiben, daß zwar Wort für Wort "
              "getrennt wird, aber ansonsten einfach mal die Leerzeichen weggelassen werden. Bei genau solchen "
              "fiesen Gemeinheiten hilft diese Funktion. Mit Hilfe der englischen Wörterliste en_US-large.txt vom "
              "Project https://sourceforge.net/projects/wordlist wird überprüft, für welches Wort der eingegebene "
              "Morsecode stehen könnte.")

t9_de = ("### T9-DE\n"
         "Diese Funktion benutzt die deutsche Wörterbuchdatei german.dic vom Project "
         "https://sourceforge.net/projects/germandict ermittelt diese Funktion alle im Wörterbuch "
         "enthaltenen Wörter die zu der eingegebenen T9-kodierten Ziffernfolge passen und gibt "
         "diese aus.  \n"
         "Bsp. 56673462836 liefert das Wort Koordinaten  \n"
         "Für diese Funktion wurde basierend auf der deutschen Wörterbuchdatei vom Project "
         "https://sourceforge.net/projects/germandict eine spezielle Wörterbuchdatei generiert, um eine beschleunigte "
         "Abfrage zu ermöglichen.")

t9_en = ("### T9-EN\n"
         "Mit Hilfe der englischen Wörterliste en_US-large.txt vom Project "
         "https://sourceforge.net/projects/wordlist ermittelt diese Funktion alle im Wörterbuch "
         "enthaltenen Wörter die zu der eingegebenen T9-kodierten Ziffernfolge passen und gibt diese aus.  \n"
         "Bsp. 26673462837 liefert das Wort coordinates")

vigenere = ("### Vigenere-Chiffre\n"
            "Die Eingabe eines Schlüsselwortes ist hier erforderlich!!! Die Vigenere-Chiffre baut auf dem Prinzip "
            "der Cesar-Chiffre auf, wobei hier die Verschiebung jedes einzelnen Buchstaben durch die "
            "Buchstabenwerte eines Schlüsselwortes definiert werden. Da der zu verschlüsselnde Text im "
            "allgemeinen länger als das Schlüsselwort ist, wird das Schlüsselwort immer wieder wiederholt. "
            "Ist der Schlüssel mindestens genauso lang wie der Klartext entspricht dies dann dem "
            "One-Time-Pad-Chiffre. Der eingegebene Text wird hier mit dem eingegebenen Schlüsselwort kodiert und "
            "dekodiert ausgegeben und zwar sowohl in der Variante, daß Sonderzeichen Schlüsselbuchstaben "
            "verbrauchen als auch nicht.")

wolseley = ("### Wolseley-Chiffre\n"
            "Die Eingabe eines Schlüsselwortes ist hier erforderlich!!! Die Woseley-Chiffre arbeitet mit einem "
            "Schlüsselwort über welches dann ein Codealphabet/Codequadrat gebildet wird mit welchem dann sowohl "
            "kodiert als auch dekodiert wird. Angefangen wird dabei mit dem jeweils ersten Vorkommen eines "
            "Buchstaben im Schlüsselwort und danach folgen die restlichen Buchstaben des Alphabets die nicht im "
            "Schlüsselwort vorkommen. Da hier nur 25 Zeichen zur Verfügung stehen wird das J mit dem I "
            "zusammengefasst und als I behandelt und dargestellt. Sonstige Zeichen die nicht im Codealphabet "
            "vorhanden sind werden unverändert ausgegeben.  \n  \n"
            "Codealpahbet mit Schlüsselwort: Teebaum  \n"
            "| | | | | | | | | | | |   | |   | | | | | | | | | | | |\n"
            "|-|-|-|-|-|-|-|-|-|-|-|---|-|---|-|-|-|-|-|-|-|-|-|-|-|\n"
            "|T|E|B|A|U|M|C|D|F|G|H|I/J|K|L  |N|O|P|Q|R|S|V|W|X|Y|Z|\n"
            "|Z|Y|X|W|V|S|R|Q|P|O|N|L  |K|I/J|H|G|F|D|C|M|U|A|B|E|T|\n  \n"
            "Bei der Chiffrierung/Dechiffrierung wird im Text nun der erste Buchstabe mit dem  letzten getauscht, "
            "der 2. mit dem Vorletzten, usw. also aus T wird Z und umgekehrt,E<->Y, B<->X, A<->W  usw.. nur ein "
            "K bleibt ein K")

atbash = ("### Atbash-Chiffre\n"
          "Atbash ist eine einfache Ersetzungschiffre die für das hebräische Alphabet entwickelt wurde, welche "
          "später auf das lateinische Alphabet übertragen wurde. Dabei wird dem normalen Alphabet ein "
          "rückwärts gelesenes Alphabet gegenüber gestellt. A wird zu Z, B zu Y usw. Kodierung und Dekodierung "
          "erfolgt über die selbe Funktion.   \n  \n"
          "Codealpahbet:  \n"
          "| | | | | | | | | | | | | | | | | | | | | | | | | | |\n"
          "|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|\n"
          "|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|\n"
          "|Z|Y|X|W|V|U|T|S|R|Q|P|O|N|M|L|K|J|I|H|G|F|E|D|C|B|A|")

monoalphasubstitution = ("### Monoalphabetische Substitutions-Chiffre\n"
                         "Bei der monoalphabetischen Substitution wird jedem Buchstaben des Alphabets der Buchstabe "
                         "eines Schlüsselalphabets zugeordnet:  \n"
                         "|Bsp.| |\n"
                         "|----|-|\n"
                         "|Klartextalphabet|ABCDEFGHIJKLMNOPQRSTUVWXYZ|\n"
                         "|Schlüsselalphabet|DSBJFALKNVPOQXYWCEGHIMRTUZ|\n  \n"
                         "Spezialformen dieser Chiffre sind Atbash, Cesar, Rot13. Die Funktion hier arbeitet so, dass "
                         "entweder ein komplettes Schlüsselalphabet oder ein Schlüsselwort verwendet werden kann. Bei "
                         "Verwendung eines Schlüsselwortes, wird der Rest des Schlüsselalphabets automatisch "
                         "aufgefüllt.  \n"
                         "Aus dem Schlüsselwort GutenMorgenLiebeSonne wird z. B. dann das Schlüsselalphabet: "
                         "GUTENMORLIBSACDFHJKPQVWXYZ  \n"
                         "| | |\n"
                         "|-|-|\n"
                         "|Schlüsselwort|GutenMorgenLiebeSonne|\n"
                         "|Schlüsselalphabet|GUTENMORLIBSACDFHJKPQVWXYZ|")

autokey = ("### Autokey-Chiffre\n"
                 "Die Autokey-Chiffre arbeitet nach dem selben Prinzip wie Vignere-Chiffre mit dem Unterschied, dass "
                 "hier am Ende des Schlüsselwortes nicht wieder und wieder das Schlüsselwort angehängt wird, sondern "
                 "der Klartext an das Schlüsselwort angehangen wird. Der eingegebene Text wird hier mit dem "
                 "eingegebenen Schlüsselwort kodiert und dekodiert ausgegeben.")

polybios = ('Die 5x5 Polybios-Chiffre kodiert Buchstaben zu zweistelligen Zahlen dazu wird das Schlüsselalphabet ' 
            'in ein 5x5-Quadrat eingetragen. Die Buchstaben werden dann sozusagen zu ihren entsprechenden '
            '"Koordinaten" kodiert. Im unten gezeigten Quadrat wird so aus A 11, aus B 12, aus Q 41, usw. Da in '
            'ein 5x5 Quadrat nur 25 Buchstaben passen wird typischer Weise J und I zusammengefasst, (alternativ '
            'auch U und V), sollen auch Ziffern kodiert werden wird mit einem 6x6-Quadrat gearbeitet, bei '
            'welchem dann für das komplette Alphabet und die Ziffern 0-9 Platz ist.  \n'
            '| |1|2|3|4|5|\n'
            '|-|-|-|-|-|-|\n'
            '|1|A|B|C|D|E|\n'
            '|2|F|G|H|I|K|\n'
            '|3|L|M|N|O|P|\n'
            '|4|Q|R|S|T|U|\n'
            '|5|V|W|X|Y|Z|\n\n'
            'Kommt für die Chiffre ein Schlüsselwort zum Einsatz wird das Code-Quadrat so abgeändert das die '
            'Buchstaben des Schlüsselwortes entsprechend ihres ersten Vorkommens Zeile für Zeile in das '
            'Codequadrat eingetragen werden, der Rest wird mit den verbliebenen Buchstaben aufgefüllt. Zur '
            'Information wird für jede Polybios-Variante auch noch einmal der verwendete Klartext und das '
            'verwendete Passwort ausgegeben.')
polybios_encode = f"### Polybios-Chiffre kodieren\n{polybios}"
polybios_decode = f"### Polybios-Chiffre dekodieren\n{polybios}"""

klopfcode = ('Der Klopfcode ist im Prinzip eine Polybios Chiffre mit einem festen '
             'Schlüsselquadrat bei welchem nicht I und J sondern C und K zusammengefasst werden.  \n'
             'siehe hier:  \n'
             '| |1|2|3|4|5|\n'
             '|-|-|-|-|-|-|\n'
             '|1|A|B|C|D|E|\n'
             '|2|F|G|H|I|J|\n'
             '|3|L|M|N|O|P|\n'
             '|4|Q|R|S|T|U|\n'
             '|5|V|W|X|Y|Z|')
klopfcode_encode = f"### Klopfcode kodieren\n{klopfcode}"
klopfcode_decode = f"### Klopfcode dekodieren\n{klopfcode}"

maptiles_kachelkoordinaten = ('### Maptiles / Kachelkoordinaten\n'
                              'Bei vielen Online-Kartendiensten wie Openstreetmap oder Google-Maps erfolgt die '
                              'Kartendarstellung über vorberechnete "Kachel"-Grafikdateien, welche ein '
                              'Adressierungssystem benötigen damit je nach Koordinate und Zoomstufe auch der richtige '
                              'Kartenausschnitt dargestellt wird und klar ist welche Kacheln daneben darzustellen '
                              'sind.  \n'
                              'Solche Kacheln sind typischer Weise PNG-Grafiken mit 256x256 oder 512x512 Pixeln und je '
                              'nach Zoomstufe ist eine unterschiedliche Anzahl solcher Kacheln/Tiles notwendig um die '
                              'ganze Welt abzubilden. Da je Zoomstufe sich die Anzahl der benötigten Kacheln '
                              'vervierfacht und damit auch die Datenmenge werden in der Praxis keine Zoomlevel über '
                              '20 verwendet.  \n'
                              'Um die einzelnen Kacheln beim tilemap-Server abzufragen braucht man die Zoomstufe, '
                              'einen X- und einen Y-Wert wobei dies alles ganzzahlige Werte sind. Abgerufen vom '
                              'Tilemap-Server werden die Kacheln dann nach dem Muster: '
                              '`http://servername/Zoom/X/Y.png` Den Fernsehturm mit Zoomstufe 18 findet man z.B. bei '
                              'Openstreetmap hier: https://tile.openstreetmap.org/18/140836/85970.png  \n'
                              'Die Funktion arbeitet hier auf die Art und Weise, dass man 2 durch ein Freizeichen '
                              'getrennte Zahlen eingibt. Handelt es sich bei den angegebenen Zahlen um "Kommazahlen" '
                              'welche allerdings mit Punkt anzugeben sind (Bsp: 52.520803 13.4088653 ) geht die '
                              'Funktion davon aus, daß es sich um Koordinaten in Dezimalgrad handelt und sofern es '
                              'gültige Koordinaten sind erfolgt eine Ausgabe der X und Y Werte für die Zoomstufen und '
                              '1-25. (Positive Zahlen stehen für Nord und Ost, negative für Süd und West) Handelt es '
                              'sich bei den beiden Zahlen um Ganzzahlen wird davon ausgegangen, dass es sich um X und '
                              'Y Werte handelt und es werden für alle Zoomstufen von 1-25 Koordinaten in '
                              'Dezimalminuten und Dezimalgrad ausgegeben, sofern dies sinnvolle Koordinaten ergibt '
                              'und sie werden auf einer Karte angezeigt.')

quadtree_koordinaten = ("### Quadtree-/Quadkeykoordinaten\n"
                        "Diese Koordinatenkodierung spielt in der alltäglichen Praxis eigentlich kaum noch ein Rolle, "
                        "außer scheinbar bei bing-maps und beim Geocaching. Sie dient ähnlich wie das Maptiles-System "
                        "dazu Grafikdateien für unterschiedliche Zoomstufen einer Karte zu adressieren. Die Länge der "
                        "Zahl entspricht hier zugleich auch dem Detailgrad bzw. der Zoomstufe. Es finden nur die "
                        "Zahlen 0,1,2 und 3 Verwendung, wobei die 0 den Nordwestlichen Quadranten, 1 den "
                        "Nordöstlichen, 2 SW und 3 SO.  \nEin kleines Beispiel: 230 würde bedeuten es geht im "
                        "südwestlichen Quadranten (2) um den südöstlichen Quadranten(3) und in diesem wiederum um den "
                        "nordwestlichen Quadranten. Je länger also diese Zahlenreihe aus 0,1,2 und 3 wird um so "
                        "genauer wird ein bestimmter Ort angegeben.  \nWeitere Infos gibt es unter folgendem Link zu "
                        "finden: https://docs.microsoft.com/en-us/bingmaps/articles/bing-maps-tile-system  \n"
                        "Die Funktion ermittelt aus einer Quadtreekoordinate die Maptileskoordinaten und die "
                        "WGS84-Koordinaten und zeigt diese auf einer Karte an.")

chronogramm = ('### Chronogramm/ römische Ziffern zählen\n'
               'Ein Chronogramm (oder Eteostichon) ist ein Satzteil, ein Satz, ein Sinnspruch oder eine Inschrift, '
               'meist ein Vers in lateinischer Sprache, in dem diejenigen Buchstaben, die auch als römische '
               'Zahlzeichen gelesen werden können (I, V, X, L, C, D, M), in ihrer Summe die Jahreszahl des '
               'Ereignisses angeben, auf das sich der Text bezieht. Entscheidend ist allein die Summe der '
               'Zahlenwertbuchstaben, die sonst bei römischen Zahlen übliche Subtraktion kleinerer Zahlenwerte von '
               'folgenden größeren erfolgt nicht. Die Zahlbuchstaben sind meist hervorgehoben, etwa durch '
               'Großschreibung oder Verdickung der Buchstaben bzw. durch farbliche Abhebung mittels Rötung oder '
               'Vergoldung.  \n'
               'Eine Besonderheit bilden Krypto(chrono)gramme, bei denen die Zahlbuchstaben nicht gekennzeichnet '
               'sind und "verborgen" bleiben. Bei der einfachen Analyse werden hier die Buchstaben I(1), V(5), '
               'X(10), L(50), C(100), D(500), M(1000) berücksichtigt und addiert, bei der erweiterten Analyse wird '
               'zunächst einmal berücksichtigt, daß im Lateinischen Alphabet der Buchstabe J als I und der '
               'Buchstabe U als V geschrieben wird. Außerdem erfolgt wird in der extremen Variante auch noch '
               'W=10(V+V) und Y=2(I+I) berücksichtigt.  \n'
               'Des Weiteren wird auch für jeden relevanten Buchstaben einzeln noch einmal die Anzahl und Summe'
               ' angezeigt. Eine Unterscheidung zwischen Klein- und Großschreibung findet nicht statt.')

zahlen_roemisch_arabisch_umwandeln = ("### Römische in Arabische Zahlen umwandeln und umgekehrt\n"
                                      "Es werden römische Zahlen in arabische umgewandelt und umgekehrt, die Funktion "
                                      "arbeitet dabei bei der Umwandlung von arabisch zu römisch mit Werten bis "
                                      "maximal 500000. Es werden folgende Zeichen verwendet: I=1, V=5, X=10, L=50, "
                                      "C=100, D=500, M=1000, \u2181=5000, \u2182=10000, \u2187=50000, \u2188=100000  \n"
                                      "Etwas Vorsicht sollte bei einer Umwandlung von römischen in arabische Zahlen "
                                      "geboten sein, wenn mit untypischen Schreibweisen gearbeitet wird bei welchen "
                                      "mehr als ein Zeichen von dem nachfolgenden Zeichen abgezogen werden soll. Die "
                                      "eigentlich inkorrekte Schreibweise IIX für die Zahl 8 wird hier die Zahl 10 als "
                                      "Ergebnis haben (+1-1+10), dafür wird aber allerdings die ebenfalls falsche "
                                      "Schreibweise IM genauso als 999 wie die korrekte Schreibweise CMXCIX erkannt.")

url_decode = ("### URL-decode\n"
              "Nachdem Groundspeak nun inzwischen sämtliche Bilddateien über einen Proxy umleitet bevor sie im "
              "Listing erscheinen wird es manchmal schwer die ursprüngliche URL und/oder den Dateinamen des "
              "Bildes noch lesen zu können. Die URL hat dort nun jeweils folgendes Muster: "
              "`https://imgproxy.geocaching.com/......?url=.....` wobei nach dem `?url=` dann die ursprüngliche "
              "Bild-URL folgt, allerdings wird dabei dann aus `https://` folgendes `https%3A%2F%2F` und um genau "
              "dieses wieder normal lesbar zu machen dient diese Funktion")

reversewig = ('### Reverse Wherigo zu Koordinaten\n'
              'Mit dem Reverse Wherigo hat -Waldmeister- eigentlich eine coole Sache erfunden. Man hat anfangs '
              'keine Koordinaten sondern nur 3 Zahlen, welche man nach Start des Wherigo-Cartridges eingibt und '
              'dann erfährt man wie weit der Cache entfernt ist. Nun kann man immer wieder von unterschiedlichen '
              'Positionen aus diese Entfernungsfragen durchführen und sich damit dem Cache nähern. Je weniger '
              'Abfragen man braucht umso besser. Leider gibt es inzwischen genügend Tools die genau wie diese '
              'Funktion hier aus den 3 Zahlen direkt die Finalkoordinaten ermitteln können.  \n'
              ' Leider??? Ja leider denn das führt auch dazu, das es inzwischen so extrem viele dieser '
              'Reverse-Wherigos gibt wo sich die Owner anscheinend auch denken "Die spielt doch sowieso keiner '
              'mehr normal..." anders kann ich mir ganze Trails mit Reverse-Wherigos nicht erklären. Um die '
              'Funktion zu nutzen braucht man nur die 3 Zahlen getrennt durch ein entsprechendes Trennzeichen: '
              '| , _ / ; , oder Leerzeichen eingeben und auf den Knopp klicken und bekommt Koordinaten und eine '
              'ungefähre Vorschau auf einer Karte.')

base64_ascii = ('### Base64 <-> ASCII\n'
                'Base64 ist ein Kodierungsverfahren, welches dazu verwendet wird um beliebige Binärdaten nur Hilfe '
                'einer Zeichenkette aus A-Z, a-z, 0-9, +, / sowie am Ende = übertragen zu können. Ein Einsatzzweck '
                'dafür ist z.B. wenn bei EMails Dateianhänge verwendet werden, dort werden nahezu alle Dateiformate '
                'base64-kodiert übertragen. Auch bei dem einem oder anderen Mystery sind mir solche kodierten '
                'Zeichenketten schon begegnet. Wenn am Ende einer Zeichenkette ein oder zwei "="-Zeichen stehen ist '
                'die Wahrscheinlichkeit recht groß, das hier base64 verwendet wurde. Das "="-Zeichen dient hier '
                'nämlich als "Lückenfüller" am Ende. Die Funktion hier versucht zunächst eine Dekodierung '
                'Base64->ASCII gelingt dies nicht, erscheint ein Hinweis und der eingegeben Text wird dann '
                'Base64-kodiert ausgegeben.')

jaegerzaun = ("Jägerzaun (auch Railfence oder ZigZag-Chiffre genannt) Bei dieser Chiffre wird kodiert, indem man "
              "einen Text im Zickzackmuster in ein Feld aus z.B. 3 Zeilen und so vielen Spalten wie der Text lang "
              "ist schreibt. Man beginnt in Spalte 1 - Zeile 1, dann geht es in Spalte 2 - Zeile 1 weiter danach "
              "Spalte 3 - Zeile 3, dann Spalte 4 - Zeile 2, Spalte 5 - Zeile 1 usw. Danach werden die Buchstaben "
              "einfach Zeile für Zeile hintereinander geschrieben. Unterschiedliche Varianten entstehen einfach "
              "dadurch, dass man mit unterschiedlich vielen Zeilen arbeitet welche im Schlüsselfeld anzugeben "
              "ist.  \n"
              "Die Funktion erzeugt hierbei einmal eine Ausgabe bei welcher auch Leerzeichen mitgeschrieben werden "
              "und eine Ausgabe wo zuvor die Leerzeichen entfernt werden.")
jaegerzaun_encrypt = f"### encrypt Jägerzaun\n{jaegerzaun}"
jaegerzaun_decrypt = (f"### decrypt Jägerzaun\n{jaegerzaun}  \n"
                      f"Wird im Schlüsselfeld keine Zahl angegeben erfolgt automatisch die Dekodierung für alle "
                      f"Zeilenanzahlen von 2-12.")

adfgx = ('Die ADFGX-Chiffre arbeitet mit zwei Passwörtern, wobei jedes für je einen Kodierungsschritt '
         'verwendet wird. Das erste wird benutzt um eine Variation der Polybios-Kodierung mit einem 5x5 '
         'Quadrat und J=I durchzuführen bei welcher die Zahlen 1-5 durch die Buchstaben ADFGX ersetzt '
         'werden.  \n'
         'Mit dem Text "Ein Beispiel",dem Passwort "PASSWORT" und einem mit A->Z aufgefülltem Schlüsselquadrat:  \n'
         '| |A|D|F|G|X|\n'
         '|-|-|-|-|-|-|\n'
         '|A|P|A|S|W|O|\n'
         '|D|R|T|B|C|D|\n'
         '|F|E|F|G|H|I|\n'
         '|G|K|L|M|N|Q|\n'
         '|X|U|V|X|Y|Z|  \n  \n'
         '... ergibt der erste Schritt z.B. die Zeichenfolge: "FA FX GG DF FA FX AF AA FX FA GD". '
         'Nun kommt das zweite Passwort zum Einsatz als Beispiel hier:"Tester". Zunächst einmal wird die '
         'alphabetische Reihenfolge des Passworts "Tester" benötigt -> 5 1 4 6 2 3  \n'
         'diese Zahlenreihe wird nun in die erste Zeile geschrieben und das Ergebnis aus Schritt 1 zeilenweise '
         'darunter:  \n'
         '|5|1|4|6|2|3|\n'
         '|-|-|-|-|-|-|\n'
         '|F|A|F|X|G|G|\n'
         '|D|F|F|A|F|X|\n'
         '|A|F|A|A|F|X|\n'
         '|F|A|G|D| | |  \n  \n'
         '... nun eine Sortierung der Spalten...  \n'
         '|1|2|3|4|5|6|\n'
         '|-|-|-|-|-|-|\n'
         '|A|G|G|F|F|X|\n'
         '|F|F|X|F|D|A|\n'
         '|F|F|X|A|A|A|\n'
         '|A| | |G|F|D|  \n  \n'
         '... dies nun spaltenweise von oben nach unten ausgelesen und hintereinander geschrieben ergibt nun'
         'den kodierten Text. Typischer Weise erfolgt für eine bessere Lesbarkeit eine Gruppierung in '
         '5er-Blöcken: "AFFAG FFGXX FFAGF DAFXA AD"  \n'
         ' \n'
         'Ausgegeben werden zwei Varianten, welche sich nur dadurch unterscheiden wie das Schlüsselquadrat im '
         'ersten Schritt aufgefüllt wird. Entweder in alphabetischer Reihenfolge A->Z oder umgekehrt Z->A.')
adfgx_kodieren = f"### HILFE: ADFGX kodieren\n{adfgx}"
adfgx_dekodieren = f"### HILFE: ADFGX dekodieren\n{adfgx}"
adfgvx = (f'Die ADFGVX-Chiffre erweitert das 5x5-Schlüsselquadrat der ADFGX-Chiffre ersten Kodierungsschritt auf 6x6 '
          f'so, dass das komplette Alphabet und die Zahlen 0-9 verwendet werden können.  \n'
          f'Alles andere funktioniert wie bei ...  \n  \n__ADFGX:__  \n{adfgx}')
adfgvx_kodieren = f"### HILFE: ADFGVX kodieren\n{adfgvx}"
adfgvx_dekodieren = f"### HILFE: ADFGVX dekodieren\n{adfgvx}"

brainfuck_interpreter = ("### Brainfuck-Interpreter\n"
                         "Brainfuck gehört zu den sogenannten esoterischen Programmiersprachen.  \n"
                         "Der Programmcode setzt sich hier aus den 8 Zeichen ><+-.,[]') zusammen. Diese Funktion "
                         "führt einen derartigen Programmcode aus, und gibt das Ergebnis aus, welches bei Geocaches "
                         "meist eine kurze Nachricht oder die Koordinaten sind. Für eine umgekehrte Umwandlung von "
                         "Text in Brainfuckcode gibt es im Internet genügend Möglichkeiten zu finden.  \n"
                         "Folgender Code wäre z.B. _Hello World!_ in Brainfuck:  \n"
                         "`++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++."
                         "------.--------.>+.>.`")

ook_interpreter = ("### Ook-Interpreter\n"
                   "Ook ist eine Abwandlung von Brainfuck wobei die 8 Zeichen von Brainfuck hier durch eine "
                   "Kombination von je zwei der folgenden 3 Satzzeichen .!? ersetzt werden. Dabei wird dann je das "
                   "Wort Ook vor die Satzzeichen geschrieben. z.B.: Ook! Ook? Ook. Ook! Da Ook auch durch andere "
                   "Wörter ersetzt oder auch ganz ohne Wörter (ShortOok) auftaucht ignoriert diese Funktion alle "
                   "anderen Zeichen außer .!? bevor versucht wird den Code auszuführen.")

rlou_to_graph = ("### RLOU/RLUD -> Graph\n"
                 "Im Grunde genommen ist das hier eigentlich keine Kodierung sondern stellt einfach ein Malanleitung "
                 "dar. Wobei in der deutschen Version halt R=rechts, L=links, O=oben und U= unten bzw. in der "
                 "englischen Variante halt L=left, R=right, U=up, D=down ist.  \n"
                 "Die Funktion hier versucht das ganz halt zu malen und als Grafik auszugeben, wobei versucht wird "
                 "automatisch zu erkennen ob die deutsche oder englische Variante zum Einsatz kommt.  \n"
                 "Zum ausprobieren könnt ihr ja mal `ddurduu ddurduulr ddr rluu ddruul` probieren.")
