Update of exercises
parent
04dda27e57
commit
10261447c0
|
@ -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`.
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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`
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
||||
<img src="rabbit.jpg" width="300">
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue