É um pouco complicado, porque há muitas combinações. Felizmente, você tem um processador que pode verificar um grande número de combinações em um tempo muito curto.
Você precisará de algumas estratégias diferentes para detectar diferentes tipos de mãos. Felizmente, alguns dos diferentes tipos podem se sobrepor a estratégias. Eu procuraria, por ordem de posição da mão.
- Straight flush
- Quatro de um tipo
- Casa cheia
- Rubor
- Direto
- Três de um tipo
- Dois pares
- Um par
- Cartão alto
2
, 3
, 6
, 7
, 8
São todos contagem simples. Usando uma lista de cartas Ás a Rei, basta colocar o número de cada valor na lista, aumentando para cada carta adicional encontrada. Em seguida, verifique a lista em busca de 4s, se não houver 4s, você não possui um 4 do tipo. Verifique se há 3s, se não houver 3s, você não possui um 3 do mesmo tipo. Se você tem um 3, verifique um 2 (indicando casa cheia). E assim por diante...
Para 1
, 5
você pode usar a mesma lista e procurar seqüências em que todos os cartões tenham uma ou mais entradas na lista para uma sequência de 5 cartões. Se eles também têm o mesmo naipe, é um straight flush.
4
pode ter a mesma configuração de lista, mas desta vez você está contando o processo. Procure números de 5 ou mais.
Finalmente, 9
você tem a carta mais alta, o que deve ser uma simples questão de olhar para o último valor mais alto de uma de suas listas acima.
Você pode sair assim que encontrar uma correspondência, se pesquisar em ordem. Embora seja trivial continuar a pesquisa e encontrar todas as correspondências, se você deseja fornecer todas essas informações ao usuário.
Essencialmente, você está enchendo baldes. Em seguida, verifique se há combinações nos baldes. Ilustrar:
Começando com uma matriz, com um balde para cada cartão, percorra os cartões e conte a instância de cada cartão. Em seguida, você pode facilmente iterar a matriz e verificar determinadas combinações. Neste exemplo, é claro que existe um tipo 4, porque um dos baldes possui 4 itens.