From fb313143a1989f1a21a3ac001750f3e9f695437a Mon Sep 17 00:00:00 2001 From: Nils Pukropp Date: Thu, 6 Feb 2025 17:11:17 +0100 Subject: [PATCH] tut 16 --- Tutorium/tut16/README.md | 50 ++++++++++++++++++++++++++++++++ Tutorium/tut16/slides.pdf | Bin 0 -> 51987 bytes Tutorium/tut16/src/fibonnaci.py | 4 +++ Tutorium/tut16/src/knapsack.py | 17 +++++++++++ Tutorium/tut16/src/trees.py | 24 +++++++++++++++ 5 files changed, 95 insertions(+) create mode 100644 Tutorium/tut16/README.md create mode 100644 Tutorium/tut16/slides.pdf create mode 100644 Tutorium/tut16/src/fibonnaci.py create mode 100644 Tutorium/tut16/src/knapsack.py create mode 100644 Tutorium/tut16/src/trees.py diff --git a/Tutorium/tut16/README.md b/Tutorium/tut16/README.md new file mode 100644 index 0000000..8eaf68c --- /dev/null +++ b/Tutorium/tut16/README.md @@ -0,0 +1,50 @@ +--- +marp: true +paginate: true +theme: rose-pine +footer: EidP 2024 - Nils Pukropp - https://git.narl.io/nvrl/eidp-2024 +style: ".columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; } code { font-family: FiraCode Nerd Font; }" + +--- + +# Tutorium 16 - 2025-02-06 + +Zusatztreffen, Rekursion + +--- + +## Zusatztutorium - 13.02.2025 + +- Wann? + - 13.02. um 16:00 + - nicht ct, also nicht 15 nach +- Wo? + - Gebäude 101 + - Wir dürfen dann noch kurz einen Raum suchen +- Was? + - Wir Besprechen die Probeklausur anhand eurer Lösungen + - (Sind bis dahin auch korregiert) +- Fragen? + +--- + +Gib es schon vorab Fragen zu der Probeklausur? + +--- + +## Rekursion + +Rekursion ist einfach eine Funktion, die sich selber wieder aufruft. + +- Wir brauchen eine Abbruchbedingung +- Wir rufen geschickt rekursiv auf um bei der Abbruchbedingung anzukommen + +--- + +## Beispiele + +- Fibonacci +- Node in Tree einfügen +- Knapsack + +[Website zum Visualisieren](https://recursion.vercel.app/) \ No newline at end of file diff --git a/Tutorium/tut16/slides.pdf b/Tutorium/tut16/slides.pdf new file mode 100644 index 0000000000000000000000000000000000000000..23f467cab1e81bf54de3e61e330f27ac8e60c216 GIT binary patch literal 51987 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 int: + if n in {0, 1}: + return n + return fib(n - 1) + fib(n - 2) diff --git a/Tutorium/tut16/src/knapsack.py b/Tutorium/tut16/src/knapsack.py new file mode 100644 index 0000000..e10694b --- /dev/null +++ b/Tutorium/tut16/src/knapsack.py @@ -0,0 +1,17 @@ +import math + + +def knapsack(items: list[tuple[float, float]], n: int, cap: float) -> float: + if (cap < 0): + return -math.inf + if (n == len(items)): + return 0 + + return max( + knapsack(items, n + 1, cap), + items[n][0] + knapsack(items, n + 1, cap - items[n][1]) + ) + + +if __name__ == '__main__': + print(knapsack([(100, 10), (70, 4), (50, 6), (10, 12)], 0, 12)) diff --git a/Tutorium/tut16/src/trees.py b/Tutorium/tut16/src/trees.py new file mode 100644 index 0000000..ca17ce7 --- /dev/null +++ b/Tutorium/tut16/src/trees.py @@ -0,0 +1,24 @@ +from dataclasses import dataclass +from typing import Optional + + +@dataclass +class Node[T]: + mark: T + left: 'Optional[Node[T]]' = None + right: 'Optional[Node[T]]' = None + + +type Tree[T] = Optional[Node[T]] + + +def insert[T](t: Tree[T], value: T) -> Tree[T]: + if t is None: + return Node(value) + + if value < t.mark: + t.left = insert(t.left, value) + else: + t.right = insert(t.right, value) + + return t