added tut05

This commit is contained in:
2023-11-16 16:35:31 +01:00
parent bb927529bf
commit e9dfc41325
3 changed files with 88 additions and 0 deletions

View File

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

View File

@ -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}"