Salve a tutti.
Sto cercando da tutta la notte una soluzione al mio problema, sono ormai le 7.40 e ho tanto sonno e provo a chiedere a voi..
Ho bisogno di creare un algoritmo che dati 18 numeri da 1 a 18, mi dia in output x liste. (non so quante liste posso creare, non sono riuscito ad arrivare neanche a questo risultato esatto.. cmq sono circa 34, se non 34 esatte)
Comunque ogni lista deve avere 8 coppie di numeri, che saranno i miei accoppiamenti (quindi 16 numeri da utilizzare). E 2 numeri scartati, che saranno le attese..
Il criterio da usare è questo, le attese devono essere gestite in modo equo.. cioè se nella prima lista attendono i numeri 1 2, gli stessi numeri non dovranno attendere finchè non hanno atteso tutti gli altri numeri nelle successive liste degli accoppiamenti.
Faccio un esempio pratico ora:
Lista n°1:
Attesa: 1,2
Accoppiamenti: 3,4 5,6 7,8 9,10 11,12 13,14 15,16 17,18
Lista n°2:
Attesa: 3,4
Accoppiamenti: 1,2 5,7 6,8 9,11 10,12 13,15 14,16 18,17
ecc...ecc...
Ho messo questo esempio perchè capita di avere due accoppiamenti simili (17,18 18,17) a me va bene questo basta che non siano uguali.
Insomma l'algoritmo si deve fermare di stampare liste finchè non ha più combinazioni di accoppiamenti disponibili e siano soddisfatti tutti gli accoppiamenti possibili.
Gli accoppiamenti non devono ripetersi.
Insomma devo trovarmi le 34 liste (spero il mio calcolo sia giusto) con tutti gli accoppiamenti possibili e con tutte le attese gestite in maniera ordinata.
Ho provato a scrivermi anche tutte le liste a mano.. ma arrivato alla 17esima mi sono bloccato perchè sono arrivato ad un punto in cui quando scrivevo le prime coppie di numeri che ancora non erano state utilizzate(es 1,17 2,16, 3,15 ecc), alla fine mi rimanevano coppie di numeri già utilizzate sia in un verso che nell'altro e non potevo riempire la lista bloccandomi.
Spero che qualcuno di voi sia capace di creare un algoritmo del genere, io non ci sono riuscito
E devo dire con molto dispiacere che è la prima volta da quando programmo che non riesco a risolvere un problema del genere!
Aspetto delle risposte con ansia..
Ciao a tutti.