Contesto : sono uno studente IT che sta tentando di implementare una piccola applicazione per la mia famiglia. Ogni anno ci offriamo regali. Ognuno di noi sceglie un nome di un membro della famiglia in un cappello e deve offrirgli un regalo. Il problema è che abbiamo sempre qualche problema a farlo:
Problema 1: Quando selezioniamo, a volte qualcuno sceglie il proprio nome e dobbiamo ricominciare da capo.
Problema 2: alcune persone offrono per due (o tre) anni consecutivi alla stessa persona
Algoritmo
Sto cercando un modo in cui posso risolvere il problema sopra menzionato. Stavo pensando che il principio è organizzare i punti in un ciclo. Ma considererebbe il suo storico per evitare la ripetizione del modello.
A -> B -> C -> D -> E -> A ...
Voglio evitare che A diventi il diretto figlio di D di nuovo, e B di A ecc. per esempio il prossimo risultato sarà
B -> A -> D -> C -> E -> B
(nessun punto è il genitore diretto dell'ultimo ciclo)
La terza volta, voglio che A eviti di essere il figlio diretto di E (primo ciclo) e B (secondo ciclo) ecc ...
A -> E -> C -> B -> D -> A
I punti non devono formare un singolo ciclo, purché i problemi descritti sopra non siano garantiti.