Update of exercises
parent
ff95f820c4
commit
1df916399e
|
@ -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/)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
## Erste Schritte
|
||||
# Erste Schritte
|
||||
|
||||
📆 **Fällig: ----** 📆 [Musterlösung](solution/)
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
# Lösung: 01_basics/02_first_steps.md
|
||||
# Lösung: Erste Schritte
|
||||
|
||||
!INCLUDESRC "../src/clojure/scalper.clj" clojure
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
## Maps: Lagerverwaltung
|
||||
# Maps: Lagerverwaltung
|
||||
|
||||
📆 **Fällig: ----** 📆 [Musterlösung](solution/)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
## Kontrolltrukturen: Lagerverwaltung, Teil 2
|
||||
# Kontrolltrukturen: Lagerverwaltung, Teil 2
|
||||
|
||||
📆 **Fällig: ----** 📆 [Musterlösung](solution/)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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/)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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/)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 ----
|
||||
|
||||
|
||||
)
|
||||
```
|
|
@ -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
|
||||
|
|
|
@ -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 ----
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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/)
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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/)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
## Was hoppelt den da?
|
||||
# Was hoppelt den da?
|
||||
|
||||
📆 **Fällig: ----** 📆 [Musterlösung](solution/)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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/)
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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/)
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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/)
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 ----
|
||||
)
|
||||
```
|
|
@ -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
|
||||
|
|
|
@ -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/)
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
40
readme.md
40
readme.md
|
@ -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/) |
|
||||
|
|
Loading…
Reference in New Issue