Esercizio 4 combinatoria - dispense olimpioniche
Inviato: 26 feb 2020, 11:06
				
				Buongiorno, mi sto approcciando allo studio della matematica olimpionica. Nel fare gli esercizi proposti nella dispensa di matematica olimpionica mi viene un risultato diverso dalla soluzione proposta e non capisco perché:
Esercizio: Due matematici, tre fisici e cinque ingegneri sono seduti in prima fila ad una conferenza. Dire in quanti modi si possono disporre se quelli dello stesso corso si considerano indistinguibili?
Soluzione proposta: Si tratta delle permutazioni con ripetizioni di 10 elementi, di cui 2, 3 e 5 rispettivamente uguali fra loro; si divide quindi per le permutazioni interne ai tre gruppi: (9!)/(2!3!5!)= 252
Soluzione mia: il problema è analogo al numero di anagrammi di una parola di 10 lettere con 2,3 e 5 lettere uguali, ossia (10!)/(2!3!5!)=2520
in più prima di chiedere qua ho scritto un programma al volo che calcolasse il numero e veniva 2520 (sospetto quindi una svista nella scrittura della dispensa), allego il programma:
			Esercizio: Due matematici, tre fisici e cinque ingegneri sono seduti in prima fila ad una conferenza. Dire in quanti modi si possono disporre se quelli dello stesso corso si considerano indistinguibili?
Soluzione proposta: Si tratta delle permutazioni con ripetizioni di 10 elementi, di cui 2, 3 e 5 rispettivamente uguali fra loro; si divide quindi per le permutazioni interne ai tre gruppi: (9!)/(2!3!5!)= 252
Soluzione mia: il problema è analogo al numero di anagrammi di una parola di 10 lettere con 2,3 e 5 lettere uguali, ossia (10!)/(2!3!5!)=2520
in più prima di chiedere qua ho scritto un programma al volo che calcolasse il numero e veniva 2520 (sospetto quindi una svista nella scrittura della dispensa), allego il programma:
Codice: Seleziona tutto
def r(fila,studenti,comb,i):
    if i==len(studenti):
        comb[''.join(fila)] = 1
        return 0
    for j in range(len(studenti)):
        if studenti[j]=='0':
            continue
        fila[i] = studenti[j]
        studenti[j] = '0'
        r(fila,studenti,comb,i+1)
        studenti[j] = fila[i]
    
fila = ['0' for i in range(10)]
studenti = ['I','I','I','I','I','M','M','F','F','F']
comb = {}
r(fila,studenti,comb,0)
print(len(comb))