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`.
📆 **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>
```clojure

View File

@ -1,4 +1,4 @@
## Erste Schritte
# Erste Schritte
📆 **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

View File

@ -1,4 +1,4 @@
## Maps: Lagerverwaltung
# Maps: Lagerverwaltung
📆 **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/)

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/)

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

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_.
📆 **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
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`.
# 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/)
@ -10,6 +10,6 @@ Schreiben Sie eine Funktion `plus-n-fn`, welche einen Parameter `n` nimmt und ei
`n` addiert."
[n]
; ---- 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
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.
# 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/)
```clojure
(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."
[f & args]
; ---- 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
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.
# 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/)

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 `*`.
📆 **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/)

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
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.
# 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/)

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
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.
# 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/)

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
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.
# 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/)

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
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.
# 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/)
```clojure
(defn map-cycle
"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
gegeben."
[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
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.
# 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/)
@ -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
Auftreten eines Wertes >= 0 zurück."
[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
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.
# 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/)

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