ok, noch ein Tipp:
Das überraschende Liebesleben der gemeinen Steinlaus - Ein Kreischmusical von und mit Klaus Kinski
...ist es (leider) nicht ~;D
Mein Paket kam schon letzte Woche an (und ich wollte mich auch melden aber es kam immer was dazwischen). Darum jetzt hier:
(https://www.tanelorn.net/index.php?action=dlattach;topic=113246.0;attach=28200)
Es passt sogar richtig gut zum Thema Buchwichteln. :D
Hab es auch schon angefangen und bin gespannt wie es weitergeht.
Danke an den bibliothekarischen Wichtel :santa:
Zu meiner Schande muss ich ja gestehen, dass ich es noch nicht geschafft habe mein eigenes Wichtelpaket auf den Weg zu bringen. Aber das soll sich heute ändern! ;D
[gelöscht durch Administrator]
Sind es eigentlich immer "Wichtelpaare" (sodass Bücher zwischen zwei Personen ausfgetauscht werden) oder wird "reihum" gewichtelt?
Ich habe folgenden Algorithmus zum Ermitteln der Wichtelpartner verwendet:
https://www.mathematik.de/dmv-blog/2459-wichteln-f%C3%BCr-fortgeschrittene-der-fast-ideale-weg-zum-richtigen-wichtelpartner
Dabei besteht "Zweierzykelfreiheit" :o
Das heißt, das niemand denjenigen beschenkt, von dem er/sie ebenfalls Geschenke erhält.
Hier das ganze in python implementiert. ;)
import random
class Person:
def __init__(self, name, address, info=None):
self.name = name
self.address = address
self.info = info
def mix(participants):
# https://www.mathematik.de/dmv-blog/2459-wichteln-f%C3%BCr-fortgeschrittene-der-fast-ideale-weg-zum-richtigen-wichtelpartner
n = len(participants)
IDs = [ i for i in range(n) ]
random.shuffle(IDs)
ID_target = [ (IDs[i], IDs[i-1]) for i in range(n) ]
random.shuffle(ID_target)
for i in range(n):
participants[i].ID = ID_target[i][0]
participants[i].target = ID_target[i][1]
def print_tasks(participants):
for person in participants:
for target in participants:
if target.ID == person.target:
break
#print(f" {person.ID} {person.name}: {target.ID} {target.name} {target.address}")
print(f"Hallo {person.name},\ndein Wichtel ist: {target.name}\n\n{target.name}\n{target.address}")
if target.info is not None:
print(f"\nZusatzinfo:\n{target.info}")
print("\nViele Grüße!")
print('-----')
if __name__ == '__main__':
participants = [ Person('A', 'A-straße'),
Person('B', 'B-straße'),
Person('C', 'C-straße'),
Person('D', 'D-straße'),
Person('E', 'E-straße') ]
mix(participants)
print_tasks(participants