Update of exercises

master
Thomas Smits 2024-03-11 10:34:40 +01:00
parent ff95f820c4
commit 1df916399e
35 changed files with 81 additions and 81 deletions

View File

@ -1,3 +1,3 @@
## Prefix-Notation # 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`. 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/) 📆 **Fällig: ----** 📆 [Musterlösung](solution/)

View File

@ -1,4 +1,4 @@
# Lösung: 01_basics/01_prefix.md # Lösung: Prefix-Notation
<div style="border: 1px solid grey;"><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></div> <div style="border: 1px solid grey;"><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></div>
```clojure ```clojure

View File

@ -1,4 +1,4 @@
## Erste Schritte # Erste Schritte
📆 **Fällig: ----** 📆 [Musterlösung](solution/) 📆 **Fällig: ----** 📆 [Musterlösung](solution/)

View File

@ -1,3 +1,3 @@
# Lösung: 01_basics/02_first_steps.md # Lösung: Erste Schritte
!INCLUDESRC "../src/clojure/scalper.clj" clojure !INCLUDESRC "../src/clojure/scalper.clj" clojure

View File

@ -1,4 +1,4 @@
## Maps: Lagerverwaltung # Maps: Lagerverwaltung
📆 **Fällig: ----** 📆 [Musterlösung](solution/) 📆 **Fällig: ----** 📆 [Musterlösung](solution/)

View File

@ -1,3 +1,3 @@
# Lösung: 01_basics/03_maps.md # Lösung: Maps: Lagerverwaltung
!INCLUDESRC "../src/clojure/abzock-lager.clj" clojure !INCLUDESRC "../src/clojure/abzock-lager.clj" clojure

View File

@ -1,4 +1,4 @@
## Kontrolltrukturen: Lagerverwaltung, Teil 2 # Kontrolltrukturen: Lagerverwaltung, Teil 2
📆 **Fällig: ----** 📆 [Musterlösung](solution/) 📆 **Fällig: ----** 📆 [Musterlösung](solution/)

View File

@ -1,3 +1,3 @@
# Lösung: 01_basics/04_control_structures.md # Lösung: Kontrolltrukturen: Lagerverwaltung, Teil 2
!INCLUDESRC "../src/clojure/abzock-lager-2.clj" clojure !INCLUDESRC "../src/clojure/abzock-lager-2.clj" clojure

View File

@ -1,4 +1,4 @@
## Map und Reduce: Gewinnermittlung für die Abzock GmbH # Map und Reduce: Gewinnermittlung für die Abzock GmbH
📆 **Fällig: ----** 📆 [Musterlösung](solution/) 📆 **Fällig: ----** 📆 [Musterlösung](solution/)

View File

@ -1,3 +1,3 @@
# Lösung: 01_basics/05_map_reduce.md # Lösung: Map und Reduce: Gewinnermittlung für die Abzock GmbH
!INCLUDESRC "../src/clojure/abzock-gewinn.clj" clojure !INCLUDESRC "../src/clojure/abzock-gewinn.clj" clojure

View File

@ -1,4 +1,4 @@
## Multi-Arity-Funktion # 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_. 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/) 📆 **Fällig: ----** 📆 [Musterlösung](solution/)

View File

@ -1,3 +1,3 @@
# Lösung: 02_funktionen/01_my-average.md # Lösung: Multi-Arity-Funktion
!INCLUDESRC "../src/clojure/my-average.clj" clojure !INCLUDESRC "../src/clojure/my-average.clj" clojure

View File

@ -1,5 +1,5 @@
## Funktion als Rückgabewert # 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`. 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/) 📆 **Fällig: ----** 📆 [Musterlösung](solution/)
@ -10,6 +10,6 @@ Schreiben Sie eine Funktion `plus-n-fn`, welche einen Parameter `n` nimmt und ei
`n` addiert." `n` addiert."
[n] [n]
; ---- hier Ihr Code ---- ; ---- hier Ihr Code ----
) )
``` ```

View File

@ -1,3 +1,3 @@
# Lösung: 02_funktionen/02_plus-n-fn.md # Lösung: Funktion als Rückgabewert
!INCLUDESRC "../src/clojure/plus-n-fn.clj" clojure !INCLUDESRC "../src/clojure/plus-n-fn.clj" clojure

View File

@ -1,11 +1,11 @@
## apply und Funktionen als Übergabewerte # 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. 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/) 📆 **Fällig: ----** 📆 [Musterlösung](solution/)
```clojure ```clojure
(defn triple-apply (defn triple-apply
"Wendet die Funktion `f` dreimal hintereinander auf die Argumente "Wendet die Funktion `f` dreimal hintereinander auf die Argumente
`args` an und gibt die Summe der Ergebnisse zurück." `args` an und gibt die Summe der Ergebnisse zurück."
[f & args] [f & args]
; ---- hier Ihr Code ---- ; ---- hier Ihr Code ----

View File

@ -1,3 +1,3 @@
# Lösung: 02_funktionen/03_triple-apply.md # Lösung: apply und Funktionen als Übergabewerte
!INCLUDESRC "../src/clojure/triple-apply.clj" clojure !INCLUDESRC "../src/clojure/triple-apply.clj" clojure

View File

@ -1,5 +1,5 @@
## Vor- und Nachbedingung # 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. 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/) 📆 **Fällig: ----** 📆 [Musterlösung](solution/)

View File

@ -1,3 +1,3 @@
# Lösung: 02_funktionen/04_sqrt.md # Lösung: Vor- und Nachbedingung
!INCLUDESRC "../src/clojure/sqrt.clj" clojure !INCLUDESRC "../src/clojure/sqrt.clj" clojure

View File

@ -1,4 +1,4 @@
## Tail-Recursion # 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 `*`. 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/) 📆 **Fällig: ----** 📆 [Musterlösung](solution/)

View File

@ -1,3 +1,3 @@
# Lösung: 03_rekursion/01_prod-recur.md # Lösung: Tail-Recursion
!INCLUDESRC "../src/clojure/prod-recur.clj" clojure !INCLUDESRC "../src/clojure/prod-recur.clj" clojure

View File

@ -1,4 +1,4 @@
## Was hoppelt den da? # Was hoppelt den da?
📆 **Fällig: ----** 📆 [Musterlösung](solution/) 📆 **Fällig: ----** 📆 [Musterlösung](solution/)

View File

@ -1,3 +1,3 @@
# Lösung: 03_rekursion/02_karnickel.md # Lösung: Was hoppelt den da?
!INCLUDESRC "../src/clojure/kaninchen.clj" clojure !INCLUDESRC "../src/clojure/kaninchen.clj" clojure

View File

@ -1,5 +1,5 @@
## cond # 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. 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/) 📆 **Fällig: ----** 📆 [Musterlösung](solution/)

View File

@ -1,3 +1,3 @@
# Lösung: 04_variablen/01_test-positive.md # Lösung: cond
!INCLUDESRC "../src/clojure/test-positive.clj" clojure !INCLUDESRC "../src/clojure/test-positive.clj" clojure

View File

@ -1,5 +1,5 @@
## Ausnahmebehandlung # 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. 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/) 📆 **Fällig: ----** 📆 [Musterlösung](solution/)

View File

@ -1,3 +1,3 @@
# Lösung: 04_variablen/02_number-formatter.md # Lösung: Ausnahmebehandlung
!INCLUDESRC "../src/clojure/number-formatter.clj" clojure !INCLUDESRC "../src/clojure/number-formatter.clj" clojure

View File

@ -1,5 +1,5 @@
## reduce # 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. 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/) 📆 **Fällig: ----** 📆 [Musterlösung](solution/)

View File

@ -1,3 +1,3 @@
# Lösung: 05_collections/01_prod-reduce.md # Lösung: reduce
!INCLUDESRC "../src/clojure/prod-reduce.clj" clojure !INCLUDESRC "../src/clojure/prod-reduce.clj" clojure

View File

@ -1,12 +1,12 @@
## mapping und cycle # 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. 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/) 📆 **Fällig: ----** 📆 [Musterlösung](solution/)
```clojure ```clojure
(defn map-cycle (defn map-cycle
"Erzeugt eine unendliche Sequenz der Zahlen `zahlen` "Erzeugt eine unendliche Sequenz der Zahlen `zahlen`
und berechnet für jede Zahl deren Doppeltes und zieht und berechnet für jede Zahl deren Doppeltes und zieht
1 ab. Vom Ergebnis werden `n` Elemente zurück 1 ab. Vom Ergebnis werden `n` Elemente zurück
gegeben." gegeben."
[n & zahlen] [n & zahlen]

View File

@ -1,3 +1,3 @@
# Lösung: 05_collections/02_map-cycle.md # Lösung: mapping und cycle
!INCLUDESRC "../src/clojure/map-cycle.clj" clojure !INCLUDESRC "../src/clojure/map-cycle.clj" clojure

View File

@ -1,5 +1,5 @@
## take-while # 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. 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/) 📆 **Fällig: ----** 📆 [Musterlösung](solution/)
@ -8,6 +8,6 @@ Schreiben Sie eine Funktion `below-zero`, welche einen Vektor oder eine Sequenz
"Läuft über `data` und gibt die Elemente bis zum ersten "Läuft über `data` und gibt die Elemente bis zum ersten
Auftreten eines Wertes >= 0 zurück." Auftreten eines Wertes >= 0 zurück."
[data] [data]
; ---- hier Ihr Code ---- ; ---- hier Ihr Code ----
) )
``` ```

View File

@ -1,3 +1,3 @@
# Lösung: 05_collections/03_below-zero.md # Lösung: take-while
!INCLUDESRC "../src/clojure/below-zero.clj" clojure !INCLUDESRC "../src/clojure/below-zero.clj" clojure

View File

@ -1,5 +1,5 @@
## filter # 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. 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/) 📆 **Fällig: ----** 📆 [Musterlösung](solution/)

View File

@ -1,3 +1,3 @@
# Lösung: 05_collections/04_filter-zero.md # Lösung: filter
!INCLUDESRC "../src/clojure/filter-positive.clj" clojure !INCLUDESRC "../src/clojure/filter-positive.clj" clojure

View File

@ -4,24 +4,24 @@ Hier finden Sie Übungsaufgaben für den Kurs Clojure-Programmierung.
Die **Abgabedaten** haben keine Bedeutung, da es sich um freiwillige Übungen handelt. Die **Abgabedaten** haben keine Bedeutung, da es sich um freiwillige Übungen handelt.
## Themenüberblick # Themenüberblick
| # | Thema | Fällig am 📆 | Musterlösung | | # | Thema | Fällig am 📆 | Musterlösung |
|----|------------------------------------------------------------------|----------------|----------------| |----|-----------------------------------------------------------------------------------|----------------|----------------|
| 1. | [01_basics/01_prefix.md](Assignment_001/readme.md) | **----** | [](Assignment_001/solution/) | | 1. | [Prefix-Notation](Assignment_001/readme.md) | **----** | [](Assignment_001/solution/) |
| 2. | [01_basics/02_first_steps.md](Assignment_002/readme.md) | **----** | [](Assignment_002/solution/) | | 2. | [Erste Schritte](Assignment_002/readme.md) | **----** | [](Assignment_002/solution/) |
| 3. | [01_basics/03_maps.md](Assignment_003/readme.md) | **----** | [](Assignment_003/solution/) | | 3. | [Maps: Lagerverwaltung](Assignment_003/readme.md) | **----** | [](Assignment_003/solution/) |
| 4. | [01_basics/04_control_structures.md](Assignment_004/readme.md) | **----** | [](Assignment_004/solution/) | | 4. | [Kontrolltrukturen: Lagerverwaltung, Teil 2](Assignment_004/readme.md) | **----** | [](Assignment_004/solution/) |
| 5. | [01_basics/05_map_reduce.md](Assignment_005/readme.md) | **----** | [](Assignment_005/solution/) | | 5. | [Map und Reduce: Gewinnermittlung für die Abzock GmbH](Assignment_005/readme.md) | **----** | [](Assignment_005/solution/) |
| 6. | [02_funktionen/01_my-average.md](Assignment_006/readme.md) | **----** | [](Assignment_006/solution/) | | 6. | [Multi-Arity-Funktion](Assignment_006/readme.md) | **----** | [](Assignment_006/solution/) |
| 7. | [02_funktionen/02_plus-n-fn.md](Assignment_007/readme.md) | **----** | [](Assignment_007/solution/) | | 7. | [Funktion als Rückgabewert](Assignment_007/readme.md) | **----** | [](Assignment_007/solution/) |
| 8. | [02_funktionen/03_triple-apply.md](Assignment_008/readme.md) | **----** | [](Assignment_008/solution/) | | 8. | [apply und Funktionen als Übergabewerte](Assignment_008/readme.md) | **----** | [](Assignment_008/solution/) |
| 9. | [02_funktionen/04_sqrt.md](Assignment_009/readme.md) | **----** | [](Assignment_009/solution/) | | 9. | [Vor- und Nachbedingung](Assignment_009/readme.md) | **----** | [](Assignment_009/solution/) |
| 10. | [03_rekursion/01_prod-recur.md](Assignment_010/readme.md) | **----** | [](Assignment_010/solution/) | | 10. | [Tail-Recursion](Assignment_010/readme.md) | **----** | [](Assignment_010/solution/) |
| 11. | [03_rekursion/02_karnickel.md](Assignment_011/readme.md) | **----** | [](Assignment_011/solution/) | | 11. | [Was hoppelt den da?](Assignment_011/readme.md) | **----** | [](Assignment_011/solution/) |
| 12. | [04_variablen/01_test-positive.md](Assignment_012/readme.md) | **----** | [](Assignment_012/solution/) | | 12. | [cond](Assignment_012/readme.md) | **----** | [](Assignment_012/solution/) |
| 13. | [04_variablen/02_number-formatter.md](Assignment_013/readme.md) | **----** | [](Assignment_013/solution/) | | 13. | [Ausnahmebehandlung](Assignment_013/readme.md) | **----** | [](Assignment_013/solution/) |
| 14. | [05_collections/01_prod-reduce.md](Assignment_014/readme.md) | **----** | [](Assignment_014/solution/) | | 14. | [reduce](Assignment_014/readme.md) | **----** | [](Assignment_014/solution/) |
| 15. | [05_collections/02_map-cycle.md](Assignment_015/readme.md) | **----** | [](Assignment_015/solution/) | | 15. | [mapping und cycle](Assignment_015/readme.md) | **----** | [](Assignment_015/solution/) |
| 16. | [05_collections/03_below-zero.md](Assignment_016/readme.md) | **----** | [](Assignment_016/solution/) | | 16. | [take-while](Assignment_016/readme.md) | **----** | [](Assignment_016/solution/) |
| 17. | [05_collections/04_filter-zero.md](Assignment_017/readme.md) | **----** | [](Assignment_017/solution/) | | 17. | [filter](Assignment_017/readme.md) | **----** | [](Assignment_017/solution/) |