Possibili combinazioni di carte: QUALI sono?
Ciao ragazzi, mi trovo davanti ad un problema. Ho un mazzo di 44 carte e devo calcolare quante sono le possibili terzine e soprattutto quali sono.
Mi sono calcolato il numero di possibili combinazioni da 3 carte avendone 44 in questo modo:
$ (44!) / [(44-3)! * 3!] = 13244 $ combinazioni possibili
Ora però vorrei capire come fare a calcolare QUALI sono queste combinazioni, c'è un algoritmo con cui procedere per essere certo di non dimenticarne nessuna? Grazie in anticipo per le risposte.
Mi sono calcolato il numero di possibili combinazioni da 3 carte avendone 44 in questo modo:
$ (44!) / [(44-3)! * 3!] = 13244 $ combinazioni possibili
Ora però vorrei capire come fare a calcolare QUALI sono queste combinazioni, c'è un algoritmo con cui procedere per essere certo di non dimenticarne nessuna? Grazie in anticipo per le risposte.
Risposte
Assodato che $13.244$ sono le terzine possibili, cosa vuol dire QUALI sono?
Devi elencarle tutte?
O intendi qualcos'altro?
Devi elencarle tutte?
O intendi qualcos'altro?
"superpippone":
Assodato che $13.244$ sono le terzine possibili, cosa vuol dire QUALI sono?
Devi elencarle tutte?
O intendi qualcos'altro?
Devo proprio elencarle tutte, l'ordine non è rilevante. Ad esempio io ho un mazzo da 44 carte:
Asso di fiori, due di fiori e tre di fiori è uguale a due di fiori, tre di fiori, asso di fiori
Dovrei calcolare precisamente tutte le combinazioni possibili e stavo ragionando su un algoritmo che mi aiuti
Ad esempio se ho 2 terzine:
terzina 1 : 2, 3 e 4
terzina 2 : 5, 6 e 7
queste sono già due combinazioni, in più avrò:
combinazione 3 : 2, 3 e 5
combinazione 4 : 2, 5 e 3
combinazione 5 : 5, 2 e 3
ecc.
Non ci siamo mica....
Cosa vuol dire terzina 2,3,4?
2 di fiori, 3 di fiori, 4 di fiori?
2 di picche, 3 di quadri, 4 di cuori?
In ogni caso, secondo me, ti conviene numerare le carte da 1 a 44.
Ad esempio i cuori 1-11; i quadri 12-22; i fiori 23-33; le picche 34-44.
Mi sembra molto più semplice.
Certo che scrivere tutte le $13.244$ terzine......
Cosa vuol dire terzina 2,3,4?
2 di fiori, 3 di fiori, 4 di fiori?
2 di picche, 3 di quadri, 4 di cuori?
In ogni caso, secondo me, ti conviene numerare le carte da 1 a 44.
Ad esempio i cuori 1-11; i quadri 12-22; i fiori 23-33; le picche 34-44.
Mi sembra molto più semplice.
Certo che scrivere tutte le $13.244$ terzine......
"superpippone":
... Certo che scrivere tutte le $13.244$ terzine......
Lo sai che esistono i pc?

Basta un semplice for ...
for a = 1 to 13242
for b = a+1 to 13243
for c = b+1 to 13244
print a, b, c
next c
next b
next a
Cordialmente, Alex
Occhio che gli estremi superiori dei for sono sbagliati.
Comunque quella è una procedura.
Comunque quella è una procedura.
Sì, ho esagerato
Modifichiamo ...
for a = 1 to 42
for b = a+1 to 43
for c = b+1 to 44
print a, b, c
next c
next b
next a

Modifichiamo ...
for a = 1 to 42
for b = a+1 to 43
for c = b+1 to 44
print a, b, c
next c
next b
next a
esatto, ovviamente devo fare un programma che implementa un algoritmo che mi calcola tutte le combinazioni di carte
intanto grazie a tutti per le risposte, riguardo il codice postato da axpgn, avevo fatto una cosa simile, ora il mio problema è adattarlo al mio caso specifico:
supponiamo di avere un array di dimensione 44, nell'indice 0 c'è la prima carta del mazzo e così via fino all'indice 43
poichè sto programmando in Java ho un oggetto array (mazzo) di oggetti Carta (ogni carta ha un valore e un seme)
quello che voglio fare è salvare le terzine una per volta dentro un altro array, di 3 elementi: salvo la prima combinazione di 3 elementi, eseguo dei calcoli e passo alla combinazione seguente
a questo punto quello che mi sfugge è come gestire gli indici a, b e c all'interno dell'array, esempio (terzina è un array di oggetti Carta)
int i = 0
for a = 1 to 42
for b = a+1 to 43
for c = b+1 to 44
terzina = mazzo[a]
terzina[i+1] = mazzo
terzina[i+2] = mazzo[c]
eseguo i calcoli vari...
i++
next c
next b
next a
sarebbe corretto così?
intanto grazie a tutti per le risposte, riguardo il codice postato da axpgn, avevo fatto una cosa simile, ora il mio problema è adattarlo al mio caso specifico:
supponiamo di avere un array di dimensione 44, nell'indice 0 c'è la prima carta del mazzo e così via fino all'indice 43
poichè sto programmando in Java ho un oggetto array (mazzo) di oggetti Carta (ogni carta ha un valore e un seme)
quello che voglio fare è salvare le terzine una per volta dentro un altro array, di 3 elementi: salvo la prima combinazione di 3 elementi, eseguo dei calcoli e passo alla combinazione seguente
a questo punto quello che mi sfugge è come gestire gli indici a, b e c all'interno dell'array, esempio (terzina è un array di oggetti Carta)
int i = 0
for a = 1 to 42
for b = a+1 to 43
for c = b+1 to 44
terzina = mazzo[a]
terzina[i+1] = mazzo
terzina[i+2] = mazzo[c]
eseguo i calcoli vari...
i++
next c
next b
next a
sarebbe corretto così?
Premesso che dovresti spostare il problema nella sezione di informatica, quella "terzina" che hai scritto non è un array, o meglio è un array ma ad una colonna sola e non credo che sia quello che avevi in mente tu; inoltre così facendo riscrivi sopra quello che hai già scritto.
Ti basta un array bidimensionale, più o meno così ...
dim T(13244,3)
i = 0
for a = 1 to 42
for b = a+1 to 43
for c = b+1 to 44
T(i,0)=a
T(i,1)=b
T(i,2)=c
i++
next c
next b
next a
più o meno ...
Cordialmente, Alex
Ti basta un array bidimensionale, più o meno così ...
dim T(13244,3)
i = 0
for a = 1 to 42
for b = a+1 to 43
for c = b+1 to 44
T(i,0)=a
T(i,1)=b
T(i,2)=c
i++
next c
next b
next a
più o meno ...

Cordialmente, Alex
"axpgn":
Premesso che dovresti spostare il problema nella sezione di informatica, quella "terzina" che hai scritto non è un array, o meglio è un array ma ad una colonna sola e non credo che sia quello che avevi in mente tu; inoltre così facendo riscrivi sopra quello che hai già scritto.
Ti basta un array bidimensionale, più o meno così ...
dim T(13244,3)
i = 0
for a = 1 to 42
for b = a+1 to 43
for c = b+1 to 44
T(i,0)=a
T(i,1)=b
T(i,2)=c
i++
next c
next b
next a
più o meno ...
Cordialmente, Alex
sì scusami, hai ragione
adesso faccio un paio di prove e vi farò sapere, magari mi sposto nell'altra sezione! grazie ancora per la pazienza e per le risposte, buona serata!