summaryrefslogtreecommitdiff
path: root/faehre_fuellen.md
blob: 125d5cda327b5e051f97bb4a36d1affd6b145ba2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
Fähre füllen
============

Die Lösung zu Fähre füllen beinhaltet wie gefordert zwei Strategien `strategie_a`, `strategie_b`.
Beide Funktionen nehmen eine Liste mit Autolängen als Eingabe und geben ein `dict` mit der Länge und Anzahl aller Autos zurück. Mit `print` wird angegeben, wo die Autos einsortiert werden.

Strategie A
-----------

Die Fahrzeuge werden möglichst weit links angeordnet. Am effizienten ist das bei einer Folge wie beispielsweise
```
6, 6, 6, 15, 15, 15, ...
```
da hierbei die meiste Anzahl an Fahrzeugen hineinpasst, verglichen mit B.

Strategie B
-----------

Die Fahrzeuge werden möglichst gleichmäßig auf die drei Spalten verteilt. Die Folge vom Beispiel in A) würde dazu führen, dass nur 3 Fahrzeuge (`6, 6, 6`) Platz hätten. In dem Beispiel
```
8, 8, 8, 5, 5, 5, 5, 5, 5, ...
```
werden für A) 8 Fahrzeuge eingeordnet und für B) 9.

Beispiele
---------

```
>>> # Optimales Beispiel für A
>>> import faehre_fuellen
>>> faehre_fuellen.strategie_a([15, 15, 15, 15, 15, 6, 6, 6])
6 wurde eingeordnet in die Reihe 0
6 wurde eingeordnet in die Reihe 0
6 wurde eingeordnet in die Reihe 0
15 wurde eingeordnet in die Reihe 1
15 wurde eingeordnet in die Reihe 2
Das Fahrzeug 15 hat nicht mehr gepasst
{'anzahl': [3, 1, 1], 'länge': [18, 15, 15]}
>>> faehre_fuellen.strategie_b([15, 15, 15, 15, 15, 6, 6, 6])
6 wurde eingeordnet in Reihe 0
6 wurde eingeordnet in Reihe 1
6 wurde eingeordnet in Reihe 2
Das Fahrzeug 15 hat nicht mehr gepasst
{'anzahl': [1, 1, 1], 'länge': [6, 6, 6]}
>>>
>>> # Optimales Beispiel für B
>>> faehre_fuellen.strategie_a([5, 5, 5, 5, 5, 5, 5, 8, 8, 8])
...
Das Fahrzeug 5 hat nicht mehr gepasst
{'anzahl': [2, 3, 3], 'länge': [16, 18, 15]}
>>> faehre_fuellen.strategie_b([5, 5, 5, 5, 5, 5, 5, 8, 8, 8])
...
Das Fahrzeug 5 hat nicht mehr gepasst
{'anzahl': [3, 3, 3], 'länge': [18, 18, 18]}
>>>
>>>
>>> # Gegebene Beispiele befinden sich in einer Liste `Beispiel`
>>> # (Die Ausgabe ist hier auf das Ergebnis beschränkt)
>>> faehre_fuellen.strategie_a(faehre_fuellen.Beispiel[0])
{'anzahl': [3, 3, 1], 'länge': [18.47, 16.09, 9.12]}
>>> faehre_fuellen.strategie_b(faehre_fuellen.Beispiel[0])
{'anzahl': [2, 3, 2], 'länge': [15.989999999999998, 19.2, 8.49]}
>>> # Beispiel 1: weder A) noch B) ist effizienter (jeweils 7 Fahrzeuge)
>>>
>>> faehre_fuellen.strategie_a(faehre_fuellen.Beispiel[1])
{'anzahl': [2, 3, 3], 'länge': [19.92, 16.48, 11.69]}
>>> faehre_fuellen.strategie_b(faehre_fuellen.Beispiel[1])
{'anzahl': [2, 3, 3], 'länge': [18.69, 18.04, 11.36]}
>>> # Beispiel 2: weder A) noch B) ist effizienter (jeweils 8 Fahrzeuge)
>>>
>>> faehre_fuellen.strategie_a(faehre_fuellen.Beispiel[2])
{'anzahl': [5, 4, 3], 'länge': [18.91, 17.630000000000003, 12.780000000000001]}
>>> faehre_fuellen.strategie_b(faehre_fuellen.Beispiel[2])
{'anzahl': [4, 4, 4], 'länge': [15.030000000000001, 16.86, 17.43]}
>>> # Beispiel 3: weder A) noch B) ist effizienter (jeweils 12 Fahrzeuge)
```