Python :: Aufgabe #83
1 Lösung

Das Tortenproblem mit Tortenstücken ( Möglichkeiten )
Fortgeschrittener - Python
von klhlubek19
- 16.07.2015 um 13:50 Uhr
k Kinder erhalten t Torten.
Die Torten sind alle gleich groß, haben aber
verschiedene Geschmacksrichtungen:
a) Ananas, b) Brombeer, c) Chocolate, d) Datteln, e) Erdbeer, usw.
Die Torten werden zunächst je in k Stücke geteilt.
Nun erhält jedes Kind (1: Anna; 2: Bert; 3: Claude; 4: Daphne; ...)
von jeder Torte ein Stück.
Danach beginnen die Kinder zu tauschen, denn vielleicht mögen nicht alle jede
Sorte gleich gut. Beim Tauschen achten die Kinder darauf, dass immer jedes
Kind gleich viele Tortenstücke behält.
Auf wie viele Arten können die Kinder die Tortenstücke nun so verteilen,
dass immer noch alle Kinder gleich viele Stücke haben?
Alle Möglichkeiten sind auszugeben.
Die Torten sind alle gleich groß, haben aber
verschiedene Geschmacksrichtungen:
a) Ananas, b) Brombeer, c) Chocolate, d) Datteln, e) Erdbeer, usw.
Die Torten werden zunächst je in k Stücke geteilt.
Nun erhält jedes Kind (1: Anna; 2: Bert; 3: Claude; 4: Daphne; ...)
von jeder Torte ein Stück.
Danach beginnen die Kinder zu tauschen, denn vielleicht mögen nicht alle jede
Sorte gleich gut. Beim Tauschen achten die Kinder darauf, dass immer jedes
Kind gleich viele Tortenstücke behält.
Auf wie viele Arten können die Kinder die Tortenstücke nun so verteilen,
dass immer noch alle Kinder gleich viele Stücke haben?
Alle Möglichkeiten sind auszugeben.
Lösungen:

""" #83: Das Tortenproblem mit Tortenstücken (Möglichkeiten) k Kinder erhalten t Torten. Die Torten werden zunächst je in k Stücke geteilt. Nun erhält jedes Kind von jeder Torte ein Stück. Danach beginnen die Kinder zu tauschen, denn vielleicht mögen nicht alle jede Sorte gleich gut. Beim Tauschen achten die Kinder darauf, dass immer jedes Kind gleich viele Tortenstücke behält. Auf wie viele Arten können die Kinder die Tortenstücke nun so verteilen, dass immer noch alle Kinder gleich viele Stücke haben? """ import itertools import numpy as np def torten_tausch(ar2dim, ar3dim, kind): tausch = [] for h in range(kind - 1): for i in range(0, len(ar3dim)): for j in range(0, len(ar2dim)): if np.max(np.array([sum(x) for x in zip(*ar3dim[i])]) + np.array([ar2dim[j]])) <= kind: tausch.append(list(itertools.chain([(ar2dim[j])], ar3dim[i]))) ar3dim = tausch tausch = [] print("Für den Tausch ergeben sich", len(ar3dim), "Möglichkeiten") for i in range(0, len(ar3dim)): print(ar3dim[i]) def torten_konstellationen(kinder, torten): to_arr = [] ar_ot = [] ar_ot1 = [] for i in range(torten): to_arr.append(i) var = [p for p in itertools.product(to_arr, repeat=torten)] var = (np.array(list(var))) for i in range(0, len(var)): if sum(var[i]) == torten: ar_ot.append([list(var[i])]) ar_ot1.append(list(var[i])) print("Bei", kinder, "Kindern und", torten, "Torten gibt es je Kind", len(ar_ot), "mögliche Verteilungen") for i in range(0, len(ar_ot)): print(ar_ot1[i]) torten_tausch(ar_ot1, ar_ot, kinder) def prf_eingabe(ki, to): if ki == 1 or to == 1: print(ki, "Kind(er) und", to, "Torte(n), d. h. in dieser Konstellation ist kein Tausch möglich") else: torten_konstellationen(to, ki) prf_eingabe(1, 2) prf_eingabe(2, 1) prf_eingabe(3, 2) prf_eingabe(3, 3) prf_eingabe(3, 4) prf_eingabe(4, 2) prf_eingabe(4, 3)