[Qualsiasi ling.] Stampare tutte le combinazioni con 6 carte

Messaggioda TommyB1992 » 24/04/2019, 08:53

Qualsiasi linguaggio eccetto quelli funzionali, quelli che si possono eseguire solo su windows e a pagamento (come matlab) altrimenti non posso testare il codice. Grazie!!!

Ipotizzando di avere 6 carte nel mazzo: A♠ K♠ Q♠ A♣ K♣ Q♣

E tenendo conto che:
A♠ K♠ Q♠ equivale a A♣ K♣ Q♣
o
A♠ K♠ Q♣ equivale a A♣ K♣ Q♠
perchè la probabilità che escano sono uguali.

Conseguentemente, ora proviamo ad eliminare i semi e invetarcene 2 nuovi, "z" e "y": il primo seme è delle parima carta che viene estratta è la "z", il secondo seme è della seconda carta che viene estratta, se la carta è uguale alla precedente è la "y", se la carta è differente può essere sia la "z" che la "y".

EDIT: mi sono scordato di dire che le carte le dovrei ordinare dalla più alta alla più bassa. E i semi dovrebbero essere ordinati secondo "z" > "y", quindi esempi validi sono:
1) Az Ay Kz
2) Az Kz Qz
Esempi non validi sono:
1) Ay Az Kz
2) Az Ay Ky
3) Ay Ky Qy

Le combo che possiamo formare con questa interpretazione sono (estraendo 3 carte dal mazzo):
1) Az Ay Kz (che potrebbe equivalere a Az Ay Ky)
2) Az Ay Qz (che potrebbe equivalere a Az Ay Qy)
3) Az Kz Ky
4) Kz Ky Qy
5) Az Qz Qy
6) Kz Qz Qy
7) Az Kz Qz
8 ) Az Kz Qy
9) Az Ky Qz
10) Az Ky Qy

Ovviamente anche consigli teorici sono ben accetti. Attualmente cerco di controllare che semi estrarre controllando quali carte sono state inserite.

Ma forse creare prima un deck ordinato e rimuovere dal deck potrebbe essere una soluzione migliore.

EDIT 2: pensando potrei anche farle letteralmente tutte e poi creare una funzione che effettua il pruning... cosa ne pensate?
Ultima modifica di TommyB1992 il 25/04/2019, 12:39, modificato 1 volta in totale.
@instagram: tomas_bartoli
TommyB1992
Junior Member
Junior Member
 
Messaggio: 71 di 164
Iscritto il: 13/07/2013, 22:24

Re: [Qualsiasi ling.] Stampare tutte le combinazioni con 6 carte

Messaggioda vict85 » 24/04/2019, 14:44

Il problema dell'inversione del colore non lo vedo un gran problema perché ti basta richiedere che la carta più alta sia sempre di un determinato segno. Comunque stampare tutte le combinazioni ordinate non è diverso da stampare qualcosa come:
123
124
125
134
135
145
234
235
245
345
(l'esempio è con 5 carte)
vict85
Moderatore
Moderatore
 
Messaggio: 9630 di 19253
Iscritto il: 16/01/2008, 00:13
Località: Berlin

Re: [Qualsiasi ling.] Stampare tutte le combinazioni con 6 carte

Messaggioda TommyB1992 » 24/04/2019, 15:40

vict85 ha scritto:Il problema dell'inversione del colore non lo vedo un gran problema perché ti basta richiedere che la carta più alta sia sempre di un determinato segno.


Sicuro di ciò che affermi?

Potresti spiegarmi come funziona con due combo differenti come:
Az Ky Qz
e
Az Kz Qz

Dove ovviamente ci servono tutte e due.

Grazie mille della risposta
@instagram: tomas_bartoli
TommyB1992
Junior Member
Junior Member
 
Messaggio: 72 di 164
Iscritto il: 13/07/2013, 22:24

Re: [Qualsiasi ling.] Stampare tutte le combinazioni con 6 carte

Messaggioda vict85 » 24/04/2019, 17:33

Non ho capito la tua domanda. Fissando il segno della carta più grande puoi avere Az Ky Qz ma non Ay Kz Qy.
vict85
Moderatore
Moderatore
 
Messaggio: 9631 di 19253
Iscritto il: 16/01/2008, 00:13
Località: Berlin

Re: [Qualsiasi ling.] Stampare tutte le combinazioni con 6 carte

Messaggioda TommyB1992 » 25/04/2019, 05:52

vict85 ha scritto:Non ho capito la tua domanda. Fissando il segno della carta più grande puoi avere Az Ky Qz ma non Ay Kz Qy.


Appunto.
A me non serve SEMPRE il seme più alto.

Dipende dalla configurazione.

Az Ky Qz che equivarebbe a un A♠ K♠ Q♠ oppure a A♣ K♣ Q♣
e mi serve anche
Az Ay Kz che equivarebbe a A♠ A♣ K♠ oppure a A♣ A♠ K♣

Spero di essere stato più chiaro, altrimenti provo anche a descrivere perchè lo voglia fare così magari sarà possibile entrare meglio nella logica dell'algoritmo.

==========================
EDIT: attualmente sto risolvendo generando tutte le combo, e poi scrivendo vari algoritmi di pruning che eliminano le combo con probabilità di uscire statisticamente uguali.
Però sono sempre ben disposto ad ascoltare consigli.
@instagram: tomas_bartoli
TommyB1992
Junior Member
Junior Member
 
Messaggio: 73 di 164
Iscritto il: 13/07/2013, 22:24

Re: [Qualsiasi ling.] Stampare tutte le combinazioni con 6 carte

Messaggioda vict85 » 25/04/2019, 10:01

Ok, quindi stavi già "fissando" il primo seme della lista. In questo caso non capisco allora che altre combo tu debba filtrare.

Per esempio supponi di avere
Codice:
const char carte[6][3] = { "Az", "Ay", "Kz", "Ky", "Qz", "Qy" };
allora l'ordine della carte è dato dall'indice nell'array e devi generare tutte le combinazioni ordinate di 3 carte la cui prima carta ha indice \(0\), \(2\) e \(4\). Tra cicli for dovrebbero risolvere il problema in modo abbastanza semplice
Codice:
#include <iostream>

int main( void )
{
    const char carte[6][3] = { "Az", "Ay", "Kz", "Ky", "Qz", "Qy" };

    for( int i =0; i < 6; i += 2 )
    {
        for( int j=i+1; j < 6; j++ )
        {
            for( int k=j+1; k < 6; k++ )
            {
                std::cout << carte[i] << " " << carte[j] << " " << carte[k] << std::endl;
            }
        }
    }
}
vict85
Moderatore
Moderatore
 
Messaggio: 9632 di 19253
Iscritto il: 16/01/2008, 00:13
Località: Berlin

Re: [Qualsiasi ling.] Stampare tutte le combinazioni con 6 carte

Messaggioda fmnq » 25/04/2019, 11:29

TommyB1992 ha scritto:Qualsiasi linguaggio eccetto quelli funzionali

Ma cos
fmnq
Average Member
Average Member
 
Messaggio: 345 di 764
Iscritto il: 03/10/2017, 23:14

Re: [Qualsiasi ling.] Stampare tutte le combinazioni con 6 carte

Messaggioda TommyB1992 » 25/04/2019, 12:32

vict85 ha scritto:...


Il tuo source code ritorna:
Az Ay Kz
Az Ay Ky
Az Ay Qz
Az Ay Qy
Az Kz Ky
Az Kz Qz
Az Kz Qy
Az Ky Qz
Az Ky Qy
Az Qz Qy
Kz Ky Qz
Kz Ky Qy
Kz Qz Qy

Che non va bene, perchè per esempio:
Az Ay Kz
Az Ay Ky

Sono la stessa configurazione (ergo sono la stessa cosa, due assi e un K che ha lo stesso seme di uno dei due assi) con la stessa probabilità statistica di venire estratta. A me serve solo la prima.

Per essere correto il tuo codice dovrebbe ritornare:
Az Ay Kz
Az Ay Ky
Az Ay Qz
Az Ay Qy
Az Kz Ky
Az Kz Qz
Az Kz Qy
Az Ky Qz
Az Ky Qy
Az Qz Qy
Kz Ky Qz
Kz Ky Qy
Kz Qz Qy
@instagram: tomas_bartoli
TommyB1992
Junior Member
Junior Member
 
Messaggio: 74 di 164
Iscritto il: 13/07/2013, 22:24

Re: [Qualsiasi ling.] Stampare tutte le combinazioni con 6 carte

Messaggioda vict85 » 25/04/2019, 12:53

Non avevo notato questa possibilità. Ma non è difficile adattare il codice per quella trasformazione.
Codice:
#include <iostream>

int main( void )
{
    const char carte[6][3] = { "Az", "Ay", "Kz", "Ky", "Qz", "Qy" };

    for( int i =0; i < 4; i += 2 )
    {
        for( int k = i+2; k < 5; k+=2 )
        {
            std::cout << carte[i] << " " << carte[i+1] << " " << carte[k] << std::endl;
        }
        for( int j=i+2; j < 5; j++ )
        {
            for( int k=j+1; k < 6; k++ )
            {
                std::cout << carte[i] << " " << carte[j] << " " << carte[k] << std::endl;
            }
        }
    }
}
vict85
Moderatore
Moderatore
 
Messaggio: 9633 di 19253
Iscritto il: 16/01/2008, 00:13
Località: Berlin

Re: [Qualsiasi ling.] Stampare tutte le combinazioni con 6 carte

Messaggioda TommyB1992 » 25/04/2019, 13:05

Ok per 3 carte, ma se fossero 9 carte estratte e usando tutto il mazzo di 52 carte?

Pensi che riadattato funzionerebbe comunque?
@instagram: tomas_bartoli
TommyB1992
Junior Member
Junior Member
 
Messaggio: 75 di 164
Iscritto il: 13/07/2013, 22:24

Prossimo

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite