From 10261447c053d8190a1232b7a84ded43a35c641b Mon Sep 17 00:00:00 2001 From: Thomas Smits Date: Mon, 11 Mar 2024 10:44:28 +0100 Subject: [PATCH] Update of exercises --- Assignment_001/readme.md | 4 +++- Assignment_002/readme.md | 1 + Assignment_003/readme.md | 1 + Assignment_004/readme.md | 1 + Assignment_005/readme.md | 1 + Assignment_006/readme.md | 3 ++- Assignment_007/readme.md | 3 ++- Assignment_008/readme.md | 3 ++- Assignment_009/readme.md | 3 ++- Assignment_010/readme.md | 3 ++- Assignment_011/readme.md | 1 + Assignment_012/readme.md | 3 ++- Assignment_013/readme.md | 3 ++- Assignment_014/readme.md | 3 ++- Assignment_015/readme.md | 3 ++- Assignment_016/readme.md | 3 ++- Assignment_017/readme.md | 3 ++- 17 files changed, 30 insertions(+), 12 deletions(-) diff --git a/Assignment_001/readme.md b/Assignment_001/readme.md index 997010a..42d9b9d 100644 --- a/Assignment_001/readme.md +++ b/Assignment_001/readme.md @@ -1,3 +1,5 @@ # Prefix-Notation -Bitte wandeln Sie den folgenden mathematischen Ausdruck in einen gültigen Clojure-Ausdruck in _Prefix-Notation_ um: `42 / (3 + 3 * 3) * 4 - 11`. + 📆 **Fällig: ----** 📆 [Musterlösung](solution/) + +Bitte wandeln Sie den folgenden mathematischen Ausdruck in einen gültigen Clojure-Ausdruck in _Prefix-Notation_ um: `42 / (3 + 3 * 3) * 4 - 11`. \ No newline at end of file diff --git a/Assignment_002/readme.md b/Assignment_002/readme.md index 96466d1..3b0e537 100644 --- a/Assignment_002/readme.md +++ b/Assignment_002/readme.md @@ -2,6 +2,7 @@ 📆 **Fällig: ----** 📆 [Musterlösung](solution/) + Sie haben einen Nebenjob als Programmierer*in bei der _Abzock GmbH_, einem bekannten PlayStation 5-Scalper. Sie sollen ein kleines Clojure-Programm für die Preisgestaltung auf der Webseite der Firma schreiben. * Legen Sie ein Clojure-Skript `scalper.clj` an diff --git a/Assignment_003/readme.md b/Assignment_003/readme.md index 389bb75..c50162c 100644 --- a/Assignment_003/readme.md +++ b/Assignment_003/readme.md @@ -2,6 +2,7 @@ 📆 **Fällig: ----** 📆 [Musterlösung](solution/) + Die Abzock GmbH ist sehr zufrieden mit Ihnen, sodass Sie jetzt die Lagerverwaltung optimieren sollen. Aktuell hat die Firma nur drei Artikel auf Lager: PlayStation 5 (10 Stück), Grafikkarten vom Typ GTX1090 (20 Stück) und Sonnenblumenöl (300 Flaschen). Verwenden Sie als Schlüssel die Keywords `:PS5`, `:GTX1090` und `:OEL`. * Legen Sie ein Clojure-Skript `abzock-lager.clj` an diff --git a/Assignment_004/readme.md b/Assignment_004/readme.md index 4b4ddc4..afdeb15 100644 --- a/Assignment_004/readme.md +++ b/Assignment_004/readme.md @@ -2,6 +2,7 @@ 📆 **Fällig: ----** 📆 [Musterlösung](solution/) + Die Lagerverwaltung aus der letzten Übung funktioniert gut, allerdings können die Bestände hier unter 0 fallen. Dies wollen Sie in einer nächsten Version korrigieren: * Kopieren Sie das Clojure-Skript der letzten Übung und nennen Sie die Kopie `abzock-lager-2.clj` diff --git a/Assignment_005/readme.md b/Assignment_005/readme.md index 285f68d..950672e 100644 --- a/Assignment_005/readme.md +++ b/Assignment_005/readme.md @@ -2,6 +2,7 @@ 📆 **Fällig: ----** 📆 [Musterlösung](solution/) + Nachdem die Abzock GmbH wirklich goldene Zeiten gesehen hat, möchte die Firma einen besseren Überblick über die Einnahmen haben. Die Geschäftsführer möchten sich nämlich von dem Gewinn Teslas kaufen und damit vollkommen sinnlos in der Gegend herumfahren und dabei rufen "Eure Armut kotzt uns an". Dank Ihrer unermüdlichen Arbeit, liegen die Verkaufsdaten der Firma bereits in Clojure Datenstrukturen vor. diff --git a/Assignment_006/readme.md b/Assignment_006/readme.md index 74336cd..2f2e43d 100644 --- a/Assignment_006/readme.md +++ b/Assignment_006/readme.md @@ -1,7 +1,8 @@ # Multi-Arity-Funktion -Schreiben Sie eine Funktion `my-average`, welche das arithmetische Mittel von 2, 4 oder 6 Zahlen bestimmen kann. Verwenden Sie __keine__ Varag-Funktion, sondern programmieren Sie eine _Multi-Arity-Funktion_. + 📆 **Fällig: ----** 📆 [Musterlösung](solution/) +Schreiben Sie eine Funktion `my-average`, welche das arithmetische Mittel von 2, 4 oder 6 Zahlen bestimmen kann. Verwenden Sie __keine__ Varag-Funktion, sondern programmieren Sie eine _Multi-Arity-Funktion_. ```clojure (defn my-average diff --git a/Assignment_007/readme.md b/Assignment_007/readme.md index 190c06c..f45e487 100644 --- a/Assignment_007/readme.md +++ b/Assignment_007/readme.md @@ -1,7 +1,8 @@ # Funktion als Rückgabewert -Schreiben Sie eine Funktion `plus-n-fn`, welche einen Parameter `n` nimmt und eine neue Funktion zurückliefert, die ebenfalls einen Parameter akzeptiert. Diese neue Funktion addiert den Übergabewert zu `n`. + 📆 **Fällig: ----** 📆 [Musterlösung](solution/) +Schreiben Sie eine Funktion `plus-n-fn`, welche einen Parameter `n` nimmt und eine neue Funktion zurückliefert, die ebenfalls einen Parameter akzeptiert. Diese neue Funktion addiert den Übergabewert zu `n`. ```clojure (defn plus-n-fn diff --git a/Assignment_008/readme.md b/Assignment_008/readme.md index ccb0f49..5b78b3d 100644 --- a/Assignment_008/readme.md +++ b/Assignment_008/readme.md @@ -1,7 +1,8 @@ # apply und Funktionen als Übergabewerte -Schreiben Sie eine Funktion `triple-apply`, der man eine Funktion und beliebig viele weitere Argumente übergeben kann. Die Funktion wird dreimal mit den Argumenten ausgeführt und die Ergebnisse werden addiert, bevor sie zurückgegeben werden. + 📆 **Fällig: ----** 📆 [Musterlösung](solution/) +Schreiben Sie eine Funktion `triple-apply`, der man eine Funktion und beliebig viele weitere Argumente übergeben kann. Die Funktion wird dreimal mit den Argumenten ausgeführt und die Ergebnisse werden addiert, bevor sie zurückgegeben werden. ```clojure (defn triple-apply diff --git a/Assignment_009/readme.md b/Assignment_009/readme.md index 7d7213f..231d561 100644 --- a/Assignment_009/readme.md +++ b/Assignment_009/readme.md @@ -1,7 +1,8 @@ # Vor- und Nachbedingung -Gegeben Sie die folgende Funktion `sqrt`. Versehen Sie die Funktion mit einer Vor- und Nachbedingung, um den Aufruf mit ungültigen Werten (`n <= 0`) und auf einen positiven Rückgabewert (`> 0`) zu testen. + 📆 **Fällig: ----** 📆 [Musterlösung](solution/) +Gegeben Sie die folgende Funktion `sqrt`. Versehen Sie die Funktion mit einer Vor- und Nachbedingung, um den Aufruf mit ungültigen Werten (`n <= 0`) und auf einen positiven Rückgabewert (`> 0`) zu testen. ```clojure (defn sqrt [n] diff --git a/Assignment_010/readme.md b/Assignment_010/readme.md index 174d054..5e7d93d 100644 --- a/Assignment_010/readme.md +++ b/Assignment_010/readme.md @@ -1,7 +1,8 @@ # Tail-Recursion -Schreiben Sie eine Funktion `prod-recur`, die eine beliebige Zahl von Werten multipliziert, die ihr als Vektor oder Sequenz übergeben werden. Verwenden Sie für die Implementierung `loop` und `recur` und __nicht__ `reduce` oder eine andere Funktion außer `*`. + 📆 **Fällig: ----** 📆 [Musterlösung](solution/) +Schreiben Sie eine Funktion `prod-recur`, die eine beliebige Zahl von Werten multipliziert, die ihr als Vektor oder Sequenz übergeben werden. Verwenden Sie für die Implementierung `loop` und `recur` und __nicht__ `reduce` oder eine andere Funktion außer `*`. ```clojure (defn prod-recur diff --git a/Assignment_011/readme.md b/Assignment_011/readme.md index c2af566..1034704 100644 --- a/Assignment_011/readme.md +++ b/Assignment_011/readme.md @@ -2,6 +2,7 @@ 📆 **Fällig: ----** 📆 [Musterlösung](solution/) + Nach Ihrer umfassenden Tätigkeit im Scalper-Sektor sind Sie komplett erschöpft und brauchen etwas Urlaub. Also buchen Sie von dem Geld, das Sie in den letzten Monaten verdient haben, einen schönen Urlaub in den Alpen. Von Ihrem Zimmer haben Sie einen wunderbaren Blick auf die Wiesen und natürlich die Berge. Das einzige Problem: Es gibt kein Internet und damit entfallen die ganzen schönen Online-Spiele und das Netflixen komplett. Sie tun also das, was man in solch einer Situation macht und schauen aus dem Fenster. diff --git a/Assignment_012/readme.md b/Assignment_012/readme.md index 6cab9f8..91f9f29 100644 --- a/Assignment_012/readme.md +++ b/Assignment_012/readme.md @@ -1,7 +1,8 @@ # cond -Schreiben Sie eine Funktion `test-positive`, der man eine Zahl übergibt und die dann einen String zurückgibt, der anzeigt, ob die zweite Zahl größer, kleiner oder gleich 0 ist. + 📆 **Fällig: ----** 📆 [Musterlösung](solution/) +Schreiben Sie eine Funktion `test-positive`, der man eine Zahl übergibt und die dann einen String zurückgibt, der anzeigt, ob die zweite Zahl größer, kleiner oder gleich 0 ist. ```clojure (defn test-positive diff --git a/Assignment_013/readme.md b/Assignment_013/readme.md index cb23b1a..94e6a2b 100644 --- a/Assignment_013/readme.md +++ b/Assignment_013/readme.md @@ -1,7 +1,8 @@ # Ausnahmebehandlung -Schreiben Sie eine Funktion `number-formatter`, die unter Verwendung von der Java-Methode `Integer.parseInt` einen String in einen Zahlenwert umwandelt. Wenn die Umwandlung nicht funktioniert, gibt die Funktion -1 zurück. + 📆 **Fällig: ----** 📆 [Musterlösung](solution/) +Schreiben Sie eine Funktion `number-formatter`, die unter Verwendung von der Java-Methode `Integer.parseInt` einen String in einen Zahlenwert umwandelt. Wenn die Umwandlung nicht funktioniert, gibt die Funktion -1 zurück. ```clojure (defn number-formatter diff --git a/Assignment_014/readme.md b/Assignment_014/readme.md index 178a36a..028ed20 100644 --- a/Assignment_014/readme.md +++ b/Assignment_014/readme.md @@ -1,7 +1,8 @@ # reduce -Schreiben Sie eine Funktion `prod-reduce`, die eine beliebige Zahl von Werten multipliziert, die ihr als Vektor oder Sequenz übergeben werden. Verwenden Sie für die Implementierung die `reduce`-Funktion und __keine__ Rekursion. + 📆 **Fällig: ----** 📆 [Musterlösung](solution/) +Schreiben Sie eine Funktion `prod-reduce`, die eine beliebige Zahl von Werten multipliziert, die ihr als Vektor oder Sequenz übergeben werden. Verwenden Sie für die Implementierung die `reduce`-Funktion und __keine__ Rekursion. ```clojure (defn prod-reduce diff --git a/Assignment_015/readme.md b/Assignment_015/readme.md index b85fb9f..94546d8 100644 --- a/Assignment_015/readme.md +++ b/Assignment_015/readme.md @@ -1,7 +1,8 @@ # mapping und cycle -Schreiben Sie eine Funktion `map-cycle`, welche durch eine übergebene Menge von Zahlen wiederholt läuft. Die Übergabe erfolgt als _Vararg-Argument_. Die Zahlen werden dann mal Zwei genommen und es wird jeweils 1 abgezogen (z.B. 5 -> 10 - 1 = 9). Aus dem Ergebnis werden dann n-Werte, gesteuert über den ersten Parameter, zurückgegeben. + 📆 **Fällig: ----** 📆 [Musterlösung](solution/) +Schreiben Sie eine Funktion `map-cycle`, welche durch eine übergebene Menge von Zahlen wiederholt läuft. Die Übergabe erfolgt als _Vararg-Argument_. Die Zahlen werden dann mal Zwei genommen und es wird jeweils 1 abgezogen (z.B. 5 -> 10 - 1 = 9). Aus dem Ergebnis werden dann n-Werte, gesteuert über den ersten Parameter, zurückgegeben. ```clojure (defn map-cycle diff --git a/Assignment_016/readme.md b/Assignment_016/readme.md index cbc05bc..631b34d 100644 --- a/Assignment_016/readme.md +++ b/Assignment_016/readme.md @@ -1,7 +1,8 @@ # take-while -Schreiben Sie eine Funktion `below-zero`, welche einen Vektor oder eine Sequenz übergeben bekommt. Die Funktion soll einen neuen Vektor (oder Sequenz) mit denselben Elementen zurückgeben, diese endet aber vor dem ersten Element das `>= 0` ist. + 📆 **Fällig: ----** 📆 [Musterlösung](solution/) +Schreiben Sie eine Funktion `below-zero`, welche einen Vektor oder eine Sequenz übergeben bekommt. Die Funktion soll einen neuen Vektor (oder Sequenz) mit denselben Elementen zurückgeben, diese endet aber vor dem ersten Element das `>= 0` ist. ```clojure (defn below-zero diff --git a/Assignment_017/readme.md b/Assignment_017/readme.md index ac09b97..25cd899 100644 --- a/Assignment_017/readme.md +++ b/Assignment_017/readme.md @@ -1,7 +1,8 @@ # filter -Schreiben Sie eine Funktion `filter-positive`, welche eine Liste oder Sequenz übergeben bekommt. Die Funktion soll eine neue Liste (oder Sequenz) mit denselben Elemente zurückgeben, aber alle Elemente `> 0` ausfiltern. + 📆 **Fällig: ----** 📆 [Musterlösung](solution/) +Schreiben Sie eine Funktion `filter-positive`, welche eine Liste oder Sequenz übergeben bekommt. Die Funktion soll eine neue Liste (oder Sequenz) mit denselben Elemente zurückgeben, aber alle Elemente `> 0` ausfiltern. ```clojure (defn filter-positive