aboutsummaryrefslogtreecommitdiff
path: root/Info/11/NTG/2/Caesar-Implementierung/SymCrypt.json
blob: dc6dcafcb8736fe02067af123e0470f22a4160c1 (plain)
1
2
3
4
5
6
{
   "name": "SymCrypt",
   "files": "[{\"id\":2673789,\"version\":1,\"filename\":\"Story\",\"path\":[],\"text\":\"class Story {\\n   static long djb2Hash(String s) {\\n      long hash \\u003d 5381;\\n      for (int i \\u003d 0; i \\u003c s.length(); i++) {\\n         hash \\u003d ((hash \\u003c\\u003c 5) + hash) + (int)s.charAt(i); \\n      }\\n      return hash;\\n   }\\n\\n   static void run() {\\n      Story.intro();\\n      if(Story.aufgabenAuswahl().equalsIgnoreCase(\\\"schwer\\\")) {\\n         Story.aufgabeSchwer();\\n      } else {\\n         Story.aufgabeLeicht();\\n      }\\n      Story.ende();\\n   }\\n\\n   static void intro() {\\n      Panther.sagt(\\\"\\\"\\\"\\n\\nDu musst mir helfen!\\nJemand hat mich gestohlen.\\nUm sicher zu sein, dass du mir\\nhelfen kannst, beantworte\\nfolgende Frage:\\nzhofkh idueh kdeh lfk?\\n\\\"\\\"\\\");\\n\\n      if(djb2Hash(Input.readString(\\\"Antwort:\\\").toLowerCase()) !\\u003d 2090616631) { System.exit(1); }\\n\\n   }\\n   \\n   static String aufgabenAuswahl() {\\n      Panther.sagt(\\\"\\\"\\\"\\nVoellig korrekt!\\nIch sehe schon du bist\\ngeeignet. Der Dieb hat\\nverschluesselte Nachrichten\\nhinterlassen. Ich vermute er\\nverwendet das Caesar-Verfahren.\\nDu musst das Caesar-Verfahren\\nimplementieren, um die\\nNachrichten zu entschluesseln.\\n\\\"\\\"\\\");\\n\\n      return Input.readString(\\\"Willst du es leicht oder schwer?: \\\");\\n   }\\n   \\n   static void uhr() {\\n      println(\\\"\\\"\\\"\\n\\n\\nDie Uhr am Tatort:\\n        _____\\n     _.\\u0027_____`._\\n   .\\u0027.-\\u0027  12 `-.`.\\n  /,\\u0027 11      1 `.\\\\\\\\\\\\\\n // 10      /   2 \\\\\\\\\\\\\\\\\\\\\\\\\\n;;         /       ::\\n|| 9  ----O      3 ||\\n::                 ;;\\n \\\\\\\\\\\\\\\\\\\\\\\\ 8           4 //\\n  \\\\\\\\\\\\`. 7       5 ,\\u0027/\\n   \\u0027.`-.__6__.-\\u0027.\\u0027\\n    ((-._____.-))\\n    _))       ((_\\n   \\u0027--\\u0027       \\u0027--\\u0027\\n\\\"\\\"\\\");\\n   }\\n\\n   static void aufgabeLeicht() {\\n      Panther.sagt(\\\"\\\"\\\"\\n\\nDu hast dich fuer \\u0027leicht\\u0027 entschieden.\\nGut ich weiss naemlich, dass\\nder Dieb nur die 26 Kleinbuchstaben\\nunseres Alphabets verwendet.\\n\\nErgaenze die Methode caesar in der\\nKlasse Caesar, so dass sie mit allen 26\\nKleinbuchstaben funktioniert.\\n\\n\\n\\\"\\\"\\\");\\n\\n      println(\\\"\\\"\\\"\\n\\nWeitere Tipps findest du unter:\\nhttps://schule.muhq.space/panther/leicht.html\\n\\\"\\\"\\\");\\n\\n      if(djb2Hash(CaesarLeicht.entschluesseln(\\\"ghu jroghqh uhlwhu\\\", 3)) !\\u003d 3019481481) {\\n         println(\\\"Deine caesar Implementierung ist leider noch nicht korrekt.\\\");\\n         println(\\\"Der Ort des rosaroten Panther ist immer noch unbekannt.\\\");\\n         System.exit(1);\\n      }\\n\\n      println();\\n      Panther.sagt(\\\"\\\"\\\"\\nSehr gut! Den ersten Hinweis\\n\\u0027der goldene reiter\\u0027 konnten\\nwir entschluesseln.\\n\\nDer Dieb hat am Tatort an\\nder Uhr gedreht!\\nEntschluessle den zweiten Hinweis:\\n\\n\\u0027nbocnox qbklox\\u0027\\n\\\"\\\"\\\");\\n\\n      uhr();\\n   \\n      if(djb2Hash(Input.readString(\\\"Hinweis:\\\")) !\\u003d -2553580551) {\\n         println(\\\"Der Hinweis ist nicht korrekt.\\\");\\n         println(\\\"Hast du den passend Schluessel verwendet?\\\");\\n         System.exit(1);\\n      }\\n   }\\n\\n   static void aufgabeSchwer() {\\n      Panther.sagt(\\\"\\\"\\\"\\nDu hast dich fuer \\u0027schwer\\u0027 entschieden.\\nDas ist auch noetig, denn\\nder Dieb verwendet alle schreibbaren\\nBuchstaben der ASCII-Tabelle [1].\\n\\nErgaenze die Methode caesar in der\\nKlasse CaesarSchwer, so dass sie mit\\nallen schreibbaren ASCII Zeichen und\\nin beide Richtungen funktioniert.\\n\\n[1]: https://bycs.link/Roqmvh\\n\\\"\\\"\\\");\\n\\n      println(\\\"\\\"\\\"\\n\\nWeitere Tipps findest du unter:\\nhttps://schule.muhq.space/panther/schwer.html\\n\\nDer Dieb hat wohl seinen Passwort-\\nZettel am Tatort verloren.\\n   ______________________________\\n / \\\\\\\\\\\\                             \\\\\\\\\\\\.\\n|   |                            |.\\n \\\\\\\\\\\\_ |  Passwort:                 |.\\n    |  M[]nA.-5]a+               |.\\n    |                            |.\\n    | Hinweis:                   |.\\n    | Antwort auf die endgültige |.\\n    | Frage nach dem Leben,      |.\\n    | dem Universum und          |.\\n    | dem ganzen Rest            |.\\n    |                            |.\\n    |   _________________________|___\\n    |  /                            /.\\n    \\\\\\\\\\\\_/____________________________/.\\n\\\"\\\"\\\");\\n\\n      if(djb2Hash(CaesarSchwer.entschluesseln(\\\"M[]nA.-5]a+\\\",\\n         Input.readInt(\\\"Antwort auf die endgültige Frage nach dem Leben, dem Universum und dem ganzen Rest:\\\"))) !\\u003d -42961670) {\\n         println(\\\"Deine caesar Implementierung ist leider noch nicht korrekt\\\");\\n         println(\\\"oder der Schluessel ist noch falsch.\\\");\\n         println(\\\"Das Passwort des Diebes ist weiterhin geheim.\\\");\\n         System.exit(1);\\n      }\\n   \\n      println();\\n      Panther.sagt(\\\"\\\"\\\"\\nSehr gut wir haben das Passwort:\\n#13Dubai37_\\n\\nDamit habe ich die Beschreibung\\ndes Verstecks gefunden:\\n\\nWx\\u0027 W|t\\\"t#) ()xv~) |# x|#x\\\"\\nfv{!|x((ytv{ t\\\" Zt\\u0027x w* a$\\u0027wA\\nWx# fv{!*x((x! {tux |v{ \\\"|) wx\\\"\\nY!*z XmlEGFI +$# VWZ #tv{ _ga zx(v{|v~)A\\n\\n\\nAusserdem ist mir aufgefallen,\\ndass der Dieb am Tatort\\nan der Uhr gedreht hat.\\n\\\"\\\"\\\");\\n\\n      uhr();\\n\\n      String antwort \\u003d Input.readString(\\\"Wohin muessen wir Interpol schicken?\\\");\\n      if(djb2Hash(antwort.toLowerCase()) !\\u003d 199414383) {\\n         println(\\\"Interpol findet leider nichts in \\\" + antwort);\\n         System.exit(1);\\n      }\\n   }\\n   \\n   static void ende() {\\n      String feuerwerk \\u003d \\\"\\\"\\\"\\n                                   .\\u0027\\u0027.\\n       .\\u0027\\u0027.      .        *\\u0027\\u0027*    :_\\\\\\\\\\\\/_:     .\\n      :_\\\\\\\\\\\\/_:   _\\\\\\\\\\\\(/_  .:.*_\\\\\\\\\\\\/_*   : /\\\\\\\\\\\\ :  .\\u0027.:.\\u0027.\\n  .\\u0027\\u0027.: /\\\\\\\\\\\\ :   ./)\\\\\\\\\\\\   \\u0027:\\u0027* /\\\\\\\\\\\\ * :  \\u0027..\\u0027.  -\\u003d:o:\\u003d-\\n :_\\\\\\\\\\\\/_:\\u0027.:::.    \\u0027 *\\u0027\\u0027*    * \\u0027.\\\\\\\\\\\\\\u0027/.\\u0027 _\\\\\\\\\\\\(/_\\u0027.\\u0027:\\u0027.\\u0027\\n : /\\\\\\\\\\\\ : :::::     *_\\\\\\\\\\\\/_*     -\\u003d o \\u003d-  /)\\\\\\\\\\\\    \\u0027  *\\n  \\u0027..\\u0027  \\u0027:::\\u0027     * /\\\\\\\\\\\\ *     .\\u0027/.\\\\\\\\\\\\\\u0027.   \\u0027\\n      *            *..*         :\\n        *\\n        *\\n   \\\"\\\"\\\";\\n      println(\\\"\\\");\\n      println(\\\"Geschafft!\\\");\\n      println(\\\"Die Polizei hat dank deiner Hilfe\\\");\\n      println(\\\"den rosaroten Panther gefunden!\\\");\\n      println(\\\"Ganz Frankreich dankt Dir.\\\");\\n      println(feuerwerk);\\n   \\n   }\\n}\\n\\n   \\nclass Panther {\\n   static final String[] gesicht \\u003d \\\"\\\"\\\"\\n  .--.            .--.  \\n ( (`\\\\\\\\\\\\\\\\\\\\\\\\.\\\"--``--\\\".//`) ) \\n  \\u0027-.   __   __    .-\\u0027  \\n   /   /__\\\\\\\\\\\\ /__\\\\\\\\\\\\   \\\\\\\\\\\\    \\n  |    \\\\\\\\\\\\ 0/ \\\\\\\\\\\\ 0/    |   \\n  \\\\\\\\\\\\     `/   \\\\\\\\\\\\`     /   \\n   `-.  /-\\\\\\\"\\\\\\\"\\\\\\\"-\\\\\\\\\\\\  .-`     \\n     /  \\u0027.___.\\u0027  \\\\\\\\\\\\      \\n     \\\\\\\\\\\\     I     /      \\n      `;--\\u0027`\\u0027--;`       \\n        \\u0027.___.\\u0027         \\n\\\"\\\"\\\".split(\\\"\\\\\\\\r?\\\\\\\\n\\\");\\n   \\n   static void sagt(String nachricht) {\\n      String[] zeilen \\u003d nachricht.split(\\\"\\\\\\\\r?\\\\\\\\n\\\");\\n      for (int i \\u003d 0; i \\u003c Math.max(gesicht.length, zeilen.length); i++) {\\n         String zeile \\u003d \\\"\\\";\\n         if(i \\u003c gesicht.length) {\\n            zeile \\u003d gesicht[i];\\n         } else {\\n            zeile \\u003d \\\"\\\";\\n         }\\n   \\n         if(i \\u003c zeilen.length) {\\n            zeile +\\u003d zeilen[i]; \\n         }\\n         println(zeile);\\n      }\\n   }\\n}\\n\\nStory.run();\"},{\"id\":2673790,\"version\":2,\"filename\":\"CaesarLeicht\",\"path\":[],\"text\":\"/**\\n * Implementierung des Caesar-Verfahrens\\n * \\n * Die Klasse bietet statische Methoden zum Ver- und Entschluesseln\\n * von Text mithilfe des Caesar-Verfahrens an.\\n */\\nclass CaesarLeicht {\\n   /**\\n    * Allgemeine Methode, die eine Eingabe im Alphabet verschiebt\\n    * \\n    * Das Alphabet besteht dabei nur aus Kleinbuchstaben ([a-z]).\\n    * Die Verschiebung wird immer als nach rechts betrachtet.\\n    * \\n    * @param eingabe Der Eingabetext\\n    * @param verschiebung Die Verschiebung im Alphabet\\n    * @return Der Text, in dem jedes Zeichen um verschiebung verschoben wurde\\n    */\\n   static String caesar(String eingabe, int verschiebung) {\\n      String output \\u003d \\\"\\\";\\n      // TODO: Implementiere die Methode anhand ihrer Beschreibung\\n      // Tipps gibts unter:\\n      // https://schule.muhq.space/panther/leicht.html\\n      \\n      return output;\\n   }\\n\\n   /**\\n    * Verschluesselt einen Text mit dem Caesar-Verfahren\\n    * \\n    * @param klartext Der zuverschluesselnde Klartext\\n    * @param schluessel Der zuverwendende geheime Schluessel\\n    * @return Der verschluesselte Geheimtext\\n    */\\n   static String verschluesseln(String klartext, int schluessel) {\\n      return caesar(klartext, schluessel);\\n   }\\n\\n   /**\\n    * Entschluesselt einen Gehimtext mit dem Caesar-Verfahren\\n    * \\n    * @param geheimtext Der zuentschluesselnde Geheimtext\\n    * @param schluessel Der zuverwendende geheime Schluessel\\n    * @return Der entschluesselte Klartext\\n    */\\n   static String entschluesseln(String geheimtext, int schluessel) {\\n      return caesar(geheimtext, 26 - schluessel);\\n   }\\n}\"},{\"id\":2673791,\"version\":2,\"filename\":\"CaesarSchwer\",\"path\":[],\"text\":\"/**\\n * Implementierung des Caesar-Verfahrens\\n * \\n * Die Klasse bietet statische Methoden zum Ver- und Entschluesseln\\n * von Text mithilfe des Caesar-Verfahrens an.\\n */\\nclass CaesarSchwer {\\n   /**\\n    * Das gesamte schreibbare Alphabet der ASCII Tabelle\\n    */\\n   static final String ALPHABET \\u003d \\\"\\\"/* FIXME */;\\n\\n   /**\\n    * Allgemeine Methode, die eine Eingabe in einem Alphabet verschiebt\\n    * \\n    * Das Alphabet sind alle schreibbaren ASCII-Zeichen.\\n    * Die Verschiebung soll sowohl nach rechts (positiv),\\n    * als auch nach links (negativ) funktionieren.\\n    * \\n    * @param eingabe Der Eingabetext\\n    * @param verschiebung Die Verschiebung im Alphabet\\n    * @return Der Text in dem jedes Zeichen um verschiebung verschoben wurde\\n    */\\n   static String caesar(String eingabe, int verschiebung) {\\n      String ausgabe \\u003d \\\"\\\";\\n      // TODO: Implementiere die Methode passend zu ihrer Beschreibung\\n      // Tipps gibts unter:\\n      // https://schule.muhq.space/panther/schwer.html\\n      return ausgabe;\\n   }\\n\\n   /**\\n    * Verschluesselt einen Text mit dem Caesar-Verfahren\\n    * \\n    * @param klartext Der zuverschluesselnde Klartext\\n    * @param schluessel Der zuverwendende geheime Schluessel\\n    * @return Der verschluesselte Geheimtext\\n    */\\n   static String verschluesseln(String klartext, int schluessel) {\\n      return caesar(klartext, schluessel);\\n   }\\n\\n   /**\\n    * Entschluesselt einen Gehimtext mit dem Caesar-Verfahren\\n    * \\n    * @param geheimtext Der zuentschluesselnde Geheimtext\\n    * @param schluessel Der zuverwendende geheime Schluessel\\n    * @return Der entschluesselte Klartext\\n    */\\n   static String entschluesseln(String geheimtext, int schluessel) {\\n      return caesar(geheimtext, 0 /* FIXME */);\\n   }\\n}\"}]",
   "history": "[{\"timestamp\":\"Tue Jan 06 09:06:22 CET 2026\",\"version\":1,\"userId\":58291,\"username\":\"Florian.Fischer\",\"name\":\"Florian Fischer\",\"comment\":\"Initialer Commit\",\"isIntermediateEntry\":false,\"historyFiles\":[{\"id\":2673789,\"version\":1,\"type\":\"create\",\"filename\":\"Story\",\"path\":[],\"content\":\"class Story {\\n   static long djb2Hash(String s) {\\n      long hash \\u003d 5381;\\n      for (int i \\u003d 0; i \\u003c s.length(); i++) {\\n         hash \\u003d ((hash \\u003c\\u003c 5) + hash) + (int)s.charAt(i); \\n      }\\n      return hash;\\n   }\\n\\n   static void run() {\\n      Story.intro();\\n      if(Story.aufgabenAuswahl().equalsIgnoreCase(\\\"schwer\\\")) {\\n         Story.aufgabeSchwer();\\n      } else {\\n         Story.aufgabeLeicht();\\n      }\\n      Story.ende();\\n   }\\n\\n   static void intro() {\\n      Panther.sagt(\\\"\\\"\\\"\\n\\nDu musst mir helfen!\\nJemand hat mich gestohlen.\\nUm sicher zu sein, dass du mir\\nhelfen kannst, beantworte\\nfolgende Frage:\\nzhofkh idueh kdeh lfk?\\n\\\"\\\"\\\");\\n\\n      if(djb2Hash(Input.readString(\\\"Antwort:\\\").toLowerCase()) !\\u003d 2090616631) { System.exit(1); }\\n\\n   }\\n   \\n   static String aufgabenAuswahl() {\\n      Panther.sagt(\\\"\\\"\\\"\\nVoellig korrekt!\\nIch sehe schon du bist\\ngeeignet. Der Dieb hat\\nverschluesselte Nachrichten\\nhinterlassen. Ich vermute er\\nverwendet das Caesar-Verfahren.\\nDu musst das Caesar-Verfahren\\nimplementieren, um die\\nNachrichten zu entschluesseln.\\n\\\"\\\"\\\");\\n\\n      return Input.readString(\\\"Willst du es leicht oder schwer?: \\\");\\n   }\\n   \\n   static void uhr() {\\n      println(\\\"\\\"\\\"\\n\\n\\nDie Uhr am Tatort:\\n        _____\\n     _.\\u0027_____`._\\n   .\\u0027.-\\u0027  12 `-.`.\\n  /,\\u0027 11      1 `.\\\\\\\\\\\\\\n // 10      /   2 \\\\\\\\\\\\\\\\\\\\\\\\\\n;;         /       ::\\n|| 9  ----O      3 ||\\n::                 ;;\\n \\\\\\\\\\\\\\\\\\\\\\\\ 8           4 //\\n  \\\\\\\\\\\\`. 7       5 ,\\u0027/\\n   \\u0027.`-.__6__.-\\u0027.\\u0027\\n    ((-._____.-))\\n    _))       ((_\\n   \\u0027--\\u0027       \\u0027--\\u0027\\n\\\"\\\"\\\");\\n   }\\n\\n   static void aufgabeLeicht() {\\n      Panther.sagt(\\\"\\\"\\\"\\n\\nDu hast dich fuer \\u0027leicht\\u0027 entschieden.\\nGut ich weiss naemlich, dass\\nder Dieb nur die 26 Kleinbuchstaben\\nunseres Alphabets verwendet.\\n\\nErgaenze die Methode caesar in der\\nKlasse Caesar, so dass sie mit allen 26\\nKleinbuchstaben funktioniert.\\n\\n\\n\\\"\\\"\\\");\\n\\n      println(\\\"\\\"\\\"\\n\\nWeitere Tipps findest du unter:\\nhttps://schule.muhq.space/panther/leicht.html\\n\\\"\\\"\\\");\\n\\n      if(djb2Hash(CaesarLeicht.entschluesseln(\\\"ghu jroghqh uhlwhu\\\", 3)) !\\u003d 3019481481) {\\n         println(\\\"Deine caesar Implementierung ist leider noch nicht korrekt.\\\");\\n         println(\\\"Der Ort des rosaroten Panther ist immer noch unbekannt.\\\");\\n         System.exit(1);\\n      }\\n\\n      println();\\n      Panther.sagt(\\\"\\\"\\\"\\nSehr gut! Den ersten Hinweis\\n\\u0027der goldene reiter\\u0027 konnten\\nwir entschluesseln.\\n\\nDer Dieb hat am Tatort an\\nder Uhr gedreht!\\nEntschluessle den zweiten Hinweis:\\n\\n\\u0027nbocnox qbklox\\u0027\\n\\\"\\\"\\\");\\n\\n      uhr();\\n   \\n      if(djb2Hash(Input.readString(\\\"Hinweis:\\\")) !\\u003d -2553580551) {\\n         println(\\\"Der Hinweis ist nicht korrekt.\\\");\\n         println(\\\"Hast du den passend Schluessel verwendet?\\\");\\n         System.exit(1);\\n      }\\n   }\\n\\n   static void aufgabeSchwer() {\\n      Panther.sagt(\\\"\\\"\\\"\\nDu hast dich fuer \\u0027schwer\\u0027 entschieden.\\nDas ist auch noetig, denn\\nder Dieb verwendet alle schreibbaren\\nBuchstaben der ASCII-Tabelle [1].\\n\\nErgaenze die Methode caesar in der\\nKlasse CaesarSchwer, so dass sie mit\\nallen schreibbaren ASCII Zeichen und\\nin beide Richtungen funktioniert.\\n\\n[1]: https://bycs.link/Roqmvh\\n\\\"\\\"\\\");\\n\\n      println(\\\"\\\"\\\"\\n\\nWeitere Tipps findest du unter:\\nhttps://schule.muhq.space/panther/schwer.html\\n\\nDer Dieb hat wohl seinen Passwort-\\nZettel am Tatort verloren.\\n   ______________________________\\n / \\\\\\\\\\\\                             \\\\\\\\\\\\.\\n|   |                            |.\\n \\\\\\\\\\\\_ |  Passwort:                 |.\\n    |  M[]nA.-5]a+               |.\\n    |                            |.\\n    | Hinweis:                   |.\\n    | Antwort auf die endgültige |.\\n    | Frage nach dem Leben,      |.\\n    | dem Universum und          |.\\n    | dem ganzen Rest            |.\\n    |                            |.\\n    |   _________________________|___\\n    |  /                            /.\\n    \\\\\\\\\\\\_/____________________________/.\\n\\\"\\\"\\\");\\n\\n      if(djb2Hash(CaesarSchwer.entschluesseln(\\\"M[]nA.-5]a+\\\",\\n         Input.readInt(\\\"Antwort auf die endgültige Frage nach dem Leben, dem Universum und dem ganzen Rest:\\\"))) !\\u003d -42961670) {\\n         println(\\\"Deine caesar Implementierung ist leider noch nicht korrekt\\\");\\n         println(\\\"oder der Schluessel ist noch falsch.\\\");\\n         println(\\\"Das Passwort des Diebes ist weiterhin geheim.\\\");\\n         System.exit(1);\\n      }\\n   \\n      println();\\n      Panther.sagt(\\\"\\\"\\\"\\nSehr gut wir haben das Passwort:\\n#13Dubai37_\\n\\nDamit habe ich die Beschreibung\\ndes Verstecks gefunden:\\n\\nWx\\u0027 W|t\\\"t#) ()xv~) |# x|#x\\\"\\nfv{!|x((ytv{ t\\\" Zt\\u0027x w* a$\\u0027wA\\nWx# fv{!*x((x! {tux |v{ \\\"|) wx\\\"\\nY!*z XmlEGFI +$# VWZ #tv{ _ga zx(v{|v~)A\\n\\n\\nAusserdem ist mir aufgefallen,\\ndass der Dieb am Tatort\\nan der Uhr gedreht hat.\\n\\\"\\\"\\\");\\n\\n      uhr();\\n\\n      String antwort \\u003d Input.readString(\\\"Wohin muessen wir Interpol schicken?\\\");\\n      if(djb2Hash(antwort.toLowerCase()) !\\u003d 199414383) {\\n         println(\\\"Interpol findet leider nichts in \\\" + antwort);\\n         System.exit(1);\\n      }\\n   }\\n   \\n   static void ende() {\\n      String feuerwerk \\u003d \\\"\\\"\\\"\\n                                   .\\u0027\\u0027.\\n       .\\u0027\\u0027.      .        *\\u0027\\u0027*    :_\\\\\\\\\\\\/_:     .\\n      :_\\\\\\\\\\\\/_:   _\\\\\\\\\\\\(/_  .:.*_\\\\\\\\\\\\/_*   : /\\\\\\\\\\\\ :  .\\u0027.:.\\u0027.\\n  .\\u0027\\u0027.: /\\\\\\\\\\\\ :   ./)\\\\\\\\\\\\   \\u0027:\\u0027* /\\\\\\\\\\\\ * :  \\u0027..\\u0027.  -\\u003d:o:\\u003d-\\n :_\\\\\\\\\\\\/_:\\u0027.:::.    \\u0027 *\\u0027\\u0027*    * \\u0027.\\\\\\\\\\\\\\u0027/.\\u0027 _\\\\\\\\\\\\(/_\\u0027.\\u0027:\\u0027.\\u0027\\n : /\\\\\\\\\\\\ : :::::     *_\\\\\\\\\\\\/_*     -\\u003d o \\u003d-  /)\\\\\\\\\\\\    \\u0027  *\\n  \\u0027..\\u0027  \\u0027:::\\u0027     * /\\\\\\\\\\\\ *     .\\u0027/.\\\\\\\\\\\\\\u0027.   \\u0027\\n      *            *..*         :\\n        *\\n        *\\n   \\\"\\\"\\\";\\n      println(\\\"\\\");\\n      println(\\\"Geschafft!\\\");\\n      println(\\\"Die Polizei hat dank deiner Hilfe\\\");\\n      println(\\\"den rosaroten Panther gefunden!\\\");\\n      println(\\\"Ganz Frankreich dankt Dir.\\\");\\n      println(feuerwerk);\\n   \\n   }\\n}\\n\\n   \\nclass Panther {\\n   static final String[] gesicht \\u003d \\\"\\\"\\\"\\n  .--.            .--.  \\n ( (`\\\\\\\\\\\\\\\\\\\\\\\\.\\\"--``--\\\".//`) ) \\n  \\u0027-.   __   __    .-\\u0027  \\n   /   /__\\\\\\\\\\\\ /__\\\\\\\\\\\\   \\\\\\\\\\\\    \\n  |    \\\\\\\\\\\\ 0/ \\\\\\\\\\\\ 0/    |   \\n  \\\\\\\\\\\\     `/   \\\\\\\\\\\\`     /   \\n   `-.  /-\\\\\\\"\\\\\\\"\\\\\\\"-\\\\\\\\\\\\  .-`     \\n     /  \\u0027.___.\\u0027  \\\\\\\\\\\\      \\n     \\\\\\\\\\\\     I     /      \\n      `;--\\u0027`\\u0027--;`       \\n        \\u0027.___.\\u0027         \\n\\\"\\\"\\\".split(\\\"\\\\\\\\r?\\\\\\\\n\\\");\\n   \\n   static void sagt(String nachricht) {\\n      String[] zeilen \\u003d nachricht.split(\\\"\\\\\\\\r?\\\\\\\\n\\\");\\n      for (int i \\u003d 0; i \\u003c Math.max(gesicht.length, zeilen.length); i++) {\\n         String zeile \\u003d \\\"\\\";\\n         if(i \\u003c gesicht.length) {\\n            zeile \\u003d gesicht[i];\\n         } else {\\n            zeile \\u003d \\\"\\\";\\n         }\\n   \\n         if(i \\u003c zeilen.length) {\\n            zeile +\\u003d zeilen[i]; \\n         }\\n         println(zeile);\\n      }\\n   }\\n}\\n\\nStory.run();\",\"changeSet\":\"\"},{\"id\":2673790,\"version\":1,\"type\":\"create\",\"filename\":\"CaesarLeicht\",\"path\":[],\"content\":\"/**\\n * Implementierung des Caesar-Verfahrens\\n * \\n * Die Klasse bietet statische Methoden zum ver- und entschluesseln\\n * von Text mithilfe des Caesar-Verfahrens an.\\n */\\nclass CaesarLeicht {\\n   /**\\n    * Allgemeine Methode die eine Eingabe im Alphabet verschiebt\\n    * \\n    * Das Alphabet besteht dabei nur aus Kleinbuchstaben ([a-z]).\\n    * Die Verschiebung muss dabei nur nach rechts.\\n    * \\n    * @param eingabe Der Eingabetext\\n    * @param verschiebung Die Verschiebung im Alphabet\\n    * @return Der Text indem jedes Zeichen um verschiebung verschoben wurde\\n    */\\n   static String caesar(String eingabe, int verschiebung) {\\n      String output \\u003d \\\"\\\";\\n      // TODO: Implementiere die Methode anhand ihrer Beschreibung\\n      // Tipps gibts unter:\\n      // https://schule.muhq.space/panther/leicht.html\\n      \\n      return output;\\n   }\\n\\n   /**\\n    * Verschluesselt einen Text mit dem Caesar-Verfahren\\n    * \\n    * @param klartext Der zuverschluesselnde Klartext\\n    * @param schluessel Der zuverwendende geheime Schluessel\\n    * @return Der verschluesselte Geheimtext\\n    */\\n   static String verschluesseln(String klartext, int schluessel) {\\n      return caesar(klartext, schluessel);\\n   }\\n\\n   /**\\n    * Entschluesselt einen Gehimtext mit dem Caesar-Verfahren\\n    * \\n    * @param geheimtext Der zuentschluesselnde Geheimtext\\n    * @param schluessel Der zuverwendende geheime Schluessel\\n    * @return Der entschluesselte Klartext\\n    */\\n   static String entschluesseln(String geheimtext, int schluessel) {\\n      return caesar(geheimtext, 26 - schluessel);\\n   }\\n}\",\"changeSet\":\"\"},{\"id\":2673791,\"version\":1,\"type\":\"create\",\"filename\":\"CaesarSchwer\",\"path\":[],\"content\":\"/**\\n * Implementierung des Caesar-Verfahrens\\n * \\n * Die Klasse bietet statische Methoden zum ver- und entschluesseln\\n * von Text mithilfe des Caesar-Verfahrens an.\\n */\\nclass CaesarSchwer {\\n   /**\\n    * Das gesamte schreibbare Alphabet der ASCII Tabelle\\n    */\\n   static final String ALPHABET \\u003d \\\"/*FIXME*/\\\";\\n\\n   /**\\n    * Allgemeine Methode die eine Eingabe in einem Alphabet verschiebt\\n    * \\n    * Das Alphabet sind alle schreibbaren ASCII-Zeichen.\\n    * Die Verschiebung soll swohol nach rechts (positiv),\\n    * als auch nach links (negativ) funktionieren.\\n    * \\n    * @param eingabe Der Eingabetext\\n    * @param verschiebung Die Verschiebung im Alphabet\\n    * @return Der Text indem jedes Zeichen um verschiebung verschoben wurde\\n    */\\n   static String caesar(String eingabe, int verschiebung) {\\n      String ausgabe \\u003d \\\"\\\";\\n      // TODO: Implementiere die Methode gemaess ihrer Beschreibung\\n      // Tipps gibts unter:\\n      // https://schule.muhq.space/panther/schwer.html\\n      return ausgabe;\\n   }\\n\\n   /**\\n    * Verschluesselt einen Text mit dem Caesar-Verfahren\\n    * \\n    * @param klartext Der zuverschluesselnde Klartext\\n    * @param schluessel Der zuverwendende geheime Schluessel\\n    * @return Der verschluesselte Geheimtext\\n    */\\n   static String verschluesseln(String klartext, int schluessel) {\\n      return caesar(klartext, schluessel);\\n   }\\n\\n   /**\\n    * Entschluesselt einen Gehimtext mit dem Caesar-Verfahren\\n    * \\n    * @param geheimtext Der zuentschluesselnde Geheimtext\\n    * @param schluessel Der zuverwendende geheime Schluessel\\n    * @return Der entschluesselte Klartext\\n    */\\n   static String entschluesseln(String geheimtext, int schluessel) {\\n      return caesar(geheimtext, 0 /* FIXME */);\\n   }\\n}\",\"changeSet\":\"\"}]},\n{\"timestamp\":\"06.01.2026, 11:00\",\"version\":2,\"userId\":58291,\"username\":\"Florian.Fischer\",\"name\":\"Florian Fischer\",\"comment\":\"Update doc-strings\",\"isIntermediateEntry\":false,\"historyFiles\":[{\"id\":2673790,\"version\":2,\"type\":\"change\",\"content\":\"[{\\\"diffs\\\":[[0,\\\"zum \\\"],[-1,\\\"v\\\"],[1,\\\"V\\\"],[0,\\\"er- und \\\"],[-1,\\\"e\\\"],[1,\\\"E\\\"],[0,\\\"ntsc\\\"]],\\\"start1\\\":89,\\\"start2\\\":89,\\\"length1\\\":18,\\\"length2\\\":18},{\\\"diffs\\\":[[0,\\\" Methode\\\"],[1,\\\",\\\"],[0,\\\" die ein\\\"]],\\\"start1\\\":212,\\\"start2\\\":212,\\\"length1\\\":16,\\\"length2\\\":17},{\\\"diffs\\\":[[0,\\\"ung \\\"],[-1,\\\"muss dabei nur\\\"],[1,\\\"wird immer als\\\"],[0,\\\" nac\\\"]],\\\"start1\\\":354,\\\"start2\\\":354,\\\"length1\\\":22,\\\"length2\\\":22},{\\\"diffs\\\":[[0,\\\"h rechts\\\"],[1,\\\" betrachtet\\\"],[0,\\\".\\\\n    * \\\"]],\\\"start1\\\":376,\\\"start2\\\":376,\\\"length1\\\":16,\\\"length2\\\":27},{\\\"diffs\\\":[[0,\\\"Der Text\\\"],[1,\\\",\\\"],[0,\\\" in\\\"],[1,\\\" \\\"],[0,\\\"dem jede\\\"]],\\\"start1\\\":510,\\\"start2\\\":510,\\\"length1\\\":19,\\\"length2\\\":21}]\"}]},\n{\"timestamp\":\"06.01.2026, 11:02\",\"version\":3,\"userId\":58291,\"username\":\"Florian.Fischer\",\"name\":\"Florian Fischer\",\"comment\":\"Improve doc-strings in CaesarSchwer\",\"isIntermediateEntry\":false,\"historyFiles\":[{\"id\":2673791,\"version\":2,\"type\":\"change\",\"content\":\"[{\\\"diffs\\\":[[0,\\\"zum \\\"],[-1,\\\"v\\\"],[1,\\\"V\\\"],[0,\\\"er- und \\\"],[-1,\\\"e\\\"],[1,\\\"E\\\"],[0,\\\"ntsc\\\"]],\\\"start1\\\":89,\\\"start2\\\":89,\\\"length1\\\":18,\\\"length2\\\":18},{\\\"diffs\\\":[[0,\\\"T \\u003d \\\"],[1,\\\"\\\\\\\"\\\"],[0,\\\"\\\\\\\"/*\\\"],[1,\\\" \\\"],[0,\\\"FIXME\\\"],[1,\\\" \\\"],[0,\\\"*/\\\"],[-1,\\\"\\\\\\\"\\\"],[0,\\\";\\\\n\\\\n \\\"]],\\\"start1\\\":290,\\\"start2\\\":290,\\\"length1\\\":19,\\\"length2\\\":21},{\\\"diffs\\\":[[0,\\\" Methode\\\"],[1,\\\",\\\"],[0,\\\" die ein\\\"]],\\\"start1\\\":333,\\\"start2\\\":333,\\\"length1\\\":16,\\\"length2\\\":17},{\\\"diffs\\\":[[0,\\\"ll s\\\"],[1,\\\"o\\\"],[0,\\\"woh\\\"],[-1,\\\"o\\\"],[0,\\\"l na\\\"]],\\\"start1\\\":478,\\\"start2\\\":478,\\\"length1\\\":12,\\\"length2\\\":12},{\\\"diffs\\\":[[0,\\\" Text in\\\"],[1,\\\" \\\"],[0,\\\"dem jede\\\"]],\\\"start1\\\":678,\\\"start2\\\":678,\\\"length1\\\":16,\\\"length2\\\":17},{\\\"diffs\\\":[[0,\\\"ode \\\"],[-1,\\\"gemaess\\\"],[1,\\\"passend zu\\\"],[0,\\\" ihr\\\"]],\\\"start1\\\":869,\\\"start2\\\":869,\\\"length1\\\":15,\\\"length2\\\":18}]\"}]}",
   "description": "Story driven project to implement the Caesar cipher."
}