Salve,
in questo specifico caso e' in effetti ' questione di "linguaggio" in se' visto che vengono usate peculiarita' specifiche di un framework (non un linguaggio, in quanto sono valide sia per c# che VB); ad ogni modo, quello sopra indicato , come indicato, "non e' proprio VB" ma l'espressione Linq di una query (aggregata e quindi ragionando su insiemi e non su singoli elementi) tecnicamente valida sia in C# che VB) redatta per il compilatore VB...
l'azione eseguita puo' tecnicamente essere eseguita anche "a mano", e quello che Linq permette in 1 singola riga di espressione diventa, semanticamente:
dichiara cardinalità_richiesta // iSearched = x
dichiara una listaAccessoria di oggetto {Key int, numberCount int}
per ogni elemento int in List{ 1, 2, 3, 4, 4} (
se listaAccessoria contiene elemento
listaAccessoria[pointerElemento].numberCount += 1
altrimenti
listaAccessoria.aggiungi (elemento, 1)
)
per ogni elemento in listaAccessoria (
SE elemento.numberCount >= cardinalità_richiesta
indica elemento.Key e elemento.numberCount
)
questo e' ovviamente un metodo "basico" di ricerca....
se hai "2" di questi insiemi (giocatoreA e giocatoreB), dovrai poi eventualmente ovviamente applicare ulteriori regole per l'assegnazione della vittoria, tipo, sempre semanticamente (ed in maniera assolutamente non corretta, perche' non ho confrontato tris, poker, .., ma ho solo verificato le quantita' di coppie e non altro)....
dichiara cardinalità_richiesta = 2 // crca almeno 1 coppia, escludo le scale per comodita' :D
... aggregazione come sopra ma per 2 listeAccessorie, 1 per GiocatoreA e 1 per GiocatoreB
// assumendo che Key vada da 1 a 13 (il K) e non ci sia differenza di peso tra i segni
// regole di validazione vincitore
quando TRUE
se listaGiocatoreA.count > listaGiocatoreB
// GiocatoreA ha piu' coppie di GiocatoreB
giocatoreA Vince
se listaGiocatoreA.count < listaGiocatoreB
// GiocatoreB ha piu' coppie di GiocatoreA
giocatoreB Vince
diversamente ( // listaGiocatoreA.count = listaGiocatoreB
// parita'... cerca altre condizioni
sommaA = somma delle Chiavi di A
sommaB = somma delle Chiavi di B
se sommaA > sommaB
giocatoreA Vince
se sommaA < sommaB
giocatoreB Vince
diversamente (
// parita'... cerca altre condizioni
....
)
)
)
di nuovo, ogni linguaggio ha peculiarita' e sintassi particolare, ma il ragionamento di base dovrebbe poter coincidere, resta solo trovare la sintassi per farlo... nel caso sia c# che VB, di nuovo, Linq potrebbe sicuramente di nuovo risolvere il problema...
saluti omnia
--
Andrea