Medien & Phantastik > Lesen

Buchwichteln

<< < (32/37) > >>

Trichter:

--- Zitat von: Little Indian #5 am 17.12.2020 | 19:49 ---Sind es eigentlich immer "Wichtelpaare" (sodass Bücher zwischen zwei Personen ausfgetauscht werden) oder wird "reihum" gewichtelt?

--- Ende Zitat ---
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.  ;)
(Klicke zum Anzeigen/Verstecken)
--- Code: ---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
--- Ende Code ---

BobMorane:
Mein Wichtel war gestern in der Post.

Little Indian #5:



--- Zitat von: Trichter am 18.12.2020 | 09:35 ---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.

--- Ende Zitat ---

Als absoluter IT-Laie bin ich jetzt angemessen beeindruckt.

Ich hätte ja Zettelchen aus einer Tasse gezogen (aber ich bin natürlich auch kein "Digital native").

Blanchett:
Also beim Alk-Wichtel auslosen hab ich ganz altmodisch, aber Hobbygerecht, nen passenden Würfel hervorgeholt

Greifenklaue:
Buchwichtel eingetroffen. Interessantes Buch, trifft nicht 100%ig meinen Geschmack, aber den meines Serienkumpels ... Also, wird gelesen und weiterverschenkt!

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln