From 6bfa9e0d3bf7f2fa4794fcf61c0ddeabdd74d28e Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Tue, 6 Jan 2026 11:09:07 +0100 Subject: replace workspace with improved repo --- Info/11/NTG/2/Caesar-Implementierung/SymCrypt.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Info/11/NTG/2/Caesar-Implementierung/SymCrypt.json b/Info/11/NTG/2/Caesar-Implementierung/SymCrypt.json index 5945fe5d..dc6dcafc 100644 --- a/Info/11/NTG/2/Caesar-Implementierung/SymCrypt.json +++ b/Info/11/NTG/2/Caesar-Implementierung/SymCrypt.json @@ -1 +1,6 @@ -{"name":"SymCrypt","modules":[{"name":"CaesarLeicht","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 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 = \"\";\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}","identical_to_repository_version":true,"is_copy_of_id":1618303,"repository_file_version":3},{"name":"Story","text":"class Story {\n static long djb2Hash(String s) {\n long hash = 5381;\n for (int i = 0; i < s.length(); i++) {\n hash = ((hash << 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()) != 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 _.'_____`._\n .'.-' 12 `-.`.\n /,' 11 1 `.\\\\\\\n // 10 / 2 \\\\\\\\\\\\\n;; / ::\n|| 9 ----O 3 ||\n:: ;;\n \\\\\\\\\\\\ 8 4 //\n \\\\\\`. 7 5 ,'/\n '.`-.__6__.-'.'\n ((-._____.-))\n _)) ((_\n '--' '--'\n\"\"\");\n }\n\n static void aufgabeLeicht() {\n Panther.sagt(\"\"\"\n\nDu hast dich fuer 'leicht' 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)) != 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'der goldene reiter' konnten\nwir entschluesseln.\n\nDer Dieb hat am Tatort an\nder Uhr gedreht!\nEntschluessle den zweiten Hinweis:\n\n'nbocnox qbklox'\n\"\"\");\n\n uhr();\n \n if(djb2Hash(Input.readString(\"Hinweis:\")) != -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 'schwer' 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:\"))) != -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' W|t\"t#) ()xv~) |# x|#x\"\nfv{!|x((ytv{ t\" Zt'x w* a$'wA\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 = Input.readString(\"Wohin muessen wir Interpol schicken?\");\n if(djb2Hash(antwort.toLowerCase()) != 199414383) {\n println(\"Interpol findet leider nichts in \" + antwort);\n System.exit(1);\n }\n }\n \n static void ende() {\n String feuerwerk = \"\"\"\n .''.\n .''. . *''* :_\\\\\\/_: .\n :_\\\\\\/_: _\\\\\\(/_ .:.*_\\\\\\/_* : /\\\\\\ : .'.:.'.\n .''.: /\\\\\\ : ./)\\\\\\ ':'* /\\\\\\ * : '..'. -=:o:=-\n :_\\\\\\/_:'.:::. ' *''* * '.\\\\\\'/.' _\\\\\\(/_'.':'.'\n : /\\\\\\ : ::::: *_\\\\\\/_* -= o =- /)\\\\\\ ' *\n '..' ':::' * /\\\\\\ * .'/.\\\\\\'. '\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 = \"\"\"\n .--. .--. \n ( (`\\\\\\\\\\\\.\"--``--\".//`) ) \n '-. __ __ .-' \n / /__\\\\\\ /__\\\\\\ \\\\\\ \n | \\\\\\ 0/ \\\\\\ 0/ | \n \\\\\\ `/ \\\\\\` / \n `-. /-\\\"\\\"\\\"-\\\\\\ .-` \n / '.___.' \\\\\\ \n \\\\\\ I / \n `;--'`'--;` \n '.___.' \n\"\"\".split(\"\\\\r?\\\\n\");\n \n static void sagt(String nachricht) {\n String[] zeilen = nachricht.split(\"\\\\r?\\\\n\");\n for (int i = 0; i < Math.max(gesicht.length, zeilen.length); i++) {\n String zeile = \"\";\n if(i < gesicht.length) {\n zeile = gesicht[i];\n } else {\n zeile = \"\";\n }\n \n if(i < zeilen.length) {\n zeile += zeilen[i]; \n }\n println(zeile);\n }\n }\n}\n\nStory.run();","identical_to_repository_version":false,"is_copy_of_id":1618304,"repository_file_version":1},{"name":"CaesarSchwer","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 = \"/*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 = \"\";\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}","identical_to_repository_version":true,"is_copy_of_id":1618340,"repository_file_version":3}],"settings":{"libraries":[]}} \ No newline at end of file +{ + "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." +} \ No newline at end of file -- cgit v1.2.3