diff --git a/Tutorium/tut05/README.md b/Tutorium/tut05/README.md index e69de29..c6ae660 100644 --- a/Tutorium/tut05/README.md +++ b/Tutorium/tut05/README.md @@ -0,0 +1,54 @@ +# Tutorium 05 - 17.11.2023 + +## Korrektur [Exercise-04](https://proglang.informatik.uni-freiburg.de/teaching/info1/2023/exercise/sheet04.pdf) + +### Punkteverteilung + +![img not found](./img/pointdistribution_exercise04.png) + +### Häufige Fehler + +- Type Annotations +- Print-Statements, Top-Level Statements in Logik/nicht in + + ```python + if __name__ == "__main__": + assert # some test + ``` + +- Ich kann euch prinzipiell immer 0 Punkte geben wenn Ihr etwas verwendet, was nicht Teil der Vorlesung war +- Lest die Aufgabenstellungen/Hinweise auf dem Blatt +- Benennt eure Dateien/Methoden richtig + +## Vorrechnen + +1. `lists.py` + a. `even`: + b. `min`: + c. `max`: +2. `euler.py` + a. `fac`: + b. `approx_e`: +3. `binary.py` + a. `to_num`: + b. `stream_to_nums`: + +## [Exercise-05](https://proglang.informatik.uni-freiburg.de/teaching/info1/2023/exercise/sheet05.pdf) + +- Abgabe Montag 09:00 Uhr im [git](https://git.laurel.informatik.uni-freiburg.de/) +- Probleme beim installieren von `pygame`? + +## Übungsaufgaben + +### Annotations + +#### [Primes](./src/primes.py) + +Schreibe eine Funktion `prime_factorization` die eine Ganzzahl `n` entgegen nimmt und alle Primfaktoren berrechnet und die gegebene Zahl `n` in einen Paar mit den Primfaktoren als Liste zurückgibt. Denkt dabei an die richtigen Type Annotations + +```python +def prime_factorization(n): + pass +``` + +#### [Dataclass](./src/data_classes.py) diff --git a/Tutorium/tut05/src/primes.py b/Tutorium/tut05/src/primes.py new file mode 100644 index 0000000..2cbe071 --- /dev/null +++ b/Tutorium/tut05/src/primes.py @@ -0,0 +1,34 @@ +def prime_factorization(num: int) -> tuple[int, list[int]]: + # our list of primefactors + primefactors: list[int] = [] + # our first prime number + prime: int = 2 + # we don't want to modify our number and copy it to `n` + n: int = num + + # iterate until we find the last step the square of + # our prime is bigger than our rest number + while n != 1: + # if our number is dividable by our prime + if n % prime == 0: + # we can add the prime to our primefactors + primefactors.append(prime) + # and divide our rest number by the prime number + n //= prime + else: + # increment until next prime number + prime += 1 + + # finally return our tuple with our number and primefactors + return (num, primefactors) + + +if __name__ == "__main__": + assert (sol := (100, [2, 2, 5, 5])) == ( + res := prime_factorization(100)), f"{res} is not {sol}" + assert (sol := (69, [3, 23])) == ( + res := prime_factorization(69)), f"{res} is not {sol}" + assert (sol := (31, [31])) == ( + res := prime_factorization(31)), f"{res} is not {sol}" + assert (sol := (123490823022, [2, 3, 3, 3, 3, 7, 7, 7, 1123, 1979])) == ( + res := prime_factorization(123490823022)), f"{res} is not {sol}" diff --git a/Tutorium/tut05/src/type_annotations.py b/Tutorium/tut05/src/type_annotations.py deleted file mode 100644 index e69de29..0000000