#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SUITS 4
#define FACES 13
void shuffel(int deck[][FACES]);
void deal(int deck[][FACES], const char* face[], const char* suit[], int handRow[], int handCol[]);
int containsPair(int handCol[]);
int containsTwoPairs(int handCol[]);
int containsThreeOfKind(int handCol[]);
int containsFourOfKind(int handCol[]);
int containsFlush(int handRow[]);
int containsStraight(int handCol[]);
int main(void)
{
int deck[SUITS][FACES] = { 0 };
const char* suit[SUITS] = {
"Hearts", "Diamonds", "Clubs", "Spades"
};
const char* face[FACES] = {
"Ace", "Deuce", "Three", "Four", "Five",
"Six", "Seven", "Eight", "Nine", "Ten",
"Jack", "Queen", "King"
};
int handRow[5];
int handCol[5];
shuffel(deck);
deal(deck, face, suit, handRow, handCol);
}
void shuffel(int deck[][FACES])
{
for (int card = 1; card <= 52; card++)
{
int row, col;
do
{
} while (deck[row][col] != 0);
deck[row][col] = card;
}
}
void deal(int deck[][FACES], const char* face[], const char* suit[], int handRow[], int handCol[])
{
for (int card = 1; card <= 5; card++)
{
for (int i = 0; i < SUITS; i++)
{
for (int j = 0; j < FACES; j++)
{
if (deck[i][j] == card)
{
printf("%5s of %-8s %c", face
[j
], suit
[i
], card % 5 == 0 ? '\n' : ' ');
handRow[card - 1] = i;
handCol[card - 1] = j;
}
}
}
}
}
int containsPair(int handCol[])
{
for (int card = 0; card < 5; card++)
{
for (int i = card + 1; i < 5; i++)
{
if (handCol[card] == handCol[i])
{
return 1;
}
}
}
return 0;
}
int containsTwoPairs(int handCol[])
{
int count[13] = { 0 };
int pairs = 0;
for (int i = 0; i < 5; i++)
{
count[handCol[i]]++;
}
for (int i = 0; i < 13; i++)
{
if (count[i] == 2)
{
pairs++;
}
}
return pairs == 2;
}
int containsThreeOfKind(int handCol[])
{
int count[13] = { 0 };
for (int i = 0; i < 5; i++)
{
count[handCol[i]]++;
}
for (int i = 0; i < 13; i++)
{
if (count[i] == 3)
{
return 1;
}
}
return 0;
}
int containsFourOfKind(int handCol[])
{
int count[13] = { 0 };
for (int i = 0; i < 5; i++)
{
count[handCol[i]]++;
}
for (int i = 0; i < 13; i++)
{
if (count[i] == 4)
{
return 1;
}
}
return 0;
}
int containsFlush(int handRow[])
{
for (int i = 1; i < 5; i++)
{
if (handRow[i] != handRow[0])
{
return 0;
}
}
return 1;
}
int containsStraight(int handCol[])
{
int temp[5];
for (int i = 0; i < 5; i++)
{
temp[i] = handCol[i];
}
for (int i = 0; i < 4; i++)
{
for (int j = i + 1; j < 5; j++)
{
if (temp[i] > temp[j])
{
int swap = temp[i];
temp[i] = temp[j];
temp[j] = swap;
}
}
}
for (int i = 0; i < 4; i++)
{
if (temp[i + 1] != temp[i] + 1)
{
return 0;
}
}
return 1;
}
CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDx0aW1lLmg+CgojZGVmaW5lIFNVSVRTIDQKI2RlZmluZSBGQUNFUyAxMwoKdm9pZCBzaHVmZmVsKGludCBkZWNrW11bRkFDRVNdKTsKdm9pZCBkZWFsKGludCBkZWNrW11bRkFDRVNdLCBjb25zdCBjaGFyKiBmYWNlW10sIGNvbnN0IGNoYXIqIHN1aXRbXSwgaW50IGhhbmRSb3dbXSwgaW50IGhhbmRDb2xbXSk7CmludCBjb250YWluc1BhaXIoaW50IGhhbmRDb2xbXSk7CmludCBjb250YWluc1R3b1BhaXJzKGludCBoYW5kQ29sW10pOwppbnQgY29udGFpbnNUaHJlZU9mS2luZChpbnQgaGFuZENvbFtdKTsKaW50IGNvbnRhaW5zRm91ck9mS2luZChpbnQgaGFuZENvbFtdKTsKaW50IGNvbnRhaW5zRmx1c2goaW50IGhhbmRSb3dbXSk7CmludCBjb250YWluc1N0cmFpZ2h0KGludCBoYW5kQ29sW10pOwoKCmludCBtYWluKHZvaWQpCnsKICAgIGludCBkZWNrW1NVSVRTXVtGQUNFU10gPSB7IDAgfTsKCiAgICBzcmFuZCgodW5zaWduZWQpdGltZShOVUxMKSk7CgogICAgY29uc3QgY2hhciogc3VpdFtTVUlUU10gPSB7CiAgICAgICAgIkhlYXJ0cyIsICJEaWFtb25kcyIsICJDbHVicyIsICJTcGFkZXMiCiAgICB9OwoKICAgIGNvbnN0IGNoYXIqIGZhY2VbRkFDRVNdID0gewogICAgICAgICJBY2UiLCAiRGV1Y2UiLCAiVGhyZWUiLCAiRm91ciIsICJGaXZlIiwKICAgICAgICAiU2l4IiwgIlNldmVuIiwgIkVpZ2h0IiwgIk5pbmUiLCAiVGVuIiwKICAgICAgICAiSmFjayIsICJRdWVlbiIsICJLaW5nIgogICAgfTsKCiAgICBpbnQgaGFuZFJvd1s1XTsKICAgIGludCBoYW5kQ29sWzVdOwoKICAgIHNodWZmZWwoZGVjayk7CiAgICBkZWFsKGRlY2ssIGZhY2UsIHN1aXQsIGhhbmRSb3csIGhhbmRDb2wpOwoKICAgIAp9Cgp2b2lkIHNodWZmZWwoaW50IGRlY2tbXVtGQUNFU10pCnsKICAgIGZvciAoaW50IGNhcmQgPSAxOyBjYXJkIDw9IDUyOyBjYXJkKyspCiAgICB7CiAgICAgICAgaW50IHJvdywgY29sOwoKICAgICAgICBkbwogICAgICAgIHsKICAgICAgICAgICAgcm93ID0gcmFuZCgpICUgU1VJVFM7CiAgICAgICAgICAgIGNvbCA9IHJhbmQoKSAlIEZBQ0VTOwogICAgICAgIH0gd2hpbGUgKGRlY2tbcm93XVtjb2xdICE9IDApOwoKICAgICAgICBkZWNrW3Jvd11bY29sXSA9IGNhcmQ7CiAgICB9Cn0KCnZvaWQgZGVhbChpbnQgZGVja1tdW0ZBQ0VTXSwgY29uc3QgY2hhciogZmFjZVtdLCBjb25zdCBjaGFyKiBzdWl0W10sIGludCBoYW5kUm93W10sIGludCBoYW5kQ29sW10pCnsKICAgIGZvciAoaW50IGNhcmQgPSAxOyBjYXJkIDw9IDU7IGNhcmQrKykKICAgIHsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IFNVSVRTOyBpKyspCiAgICAgICAgewogICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IEZBQ0VTOyBqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmIChkZWNrW2ldW2pdID09IGNhcmQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIlNXMgb2YgJS04cyAgJWMiLCBmYWNlW2pdLCBzdWl0W2ldLAogICAgICAgICAgICAgICAgICAgICAgICBjYXJkICUgNSA9PSAwID8gJ1xuJyA6ICcgJyk7CiAgICAgICAgICAgICAgICAgICAgaGFuZFJvd1tjYXJkIC0gMV0gPSBpOwogICAgICAgICAgICAgICAgICAgIGhhbmRDb2xbY2FyZCAtIDFdID0gajsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgIAogICAgfQp9CgppbnQgY29udGFpbnNQYWlyKGludCBoYW5kQ29sW10pCnsKICAgIGZvciAoaW50IGNhcmQgPSAwOyBjYXJkIDwgNTsgY2FyZCsrKQogICAgewogICAgICAgIGZvciAoaW50IGkgPSBjYXJkICsgMTsgaSA8IDU7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGlmIChoYW5kQ29sW2NhcmRdID09IGhhbmRDb2xbaV0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0KCmludCBjb250YWluc1R3b1BhaXJzKGludCBoYW5kQ29sW10pCnsKICAgIGludCBjb3VudFsxM10gPSB7IDAgfTsKICAgIGludCBwYWlycyA9IDA7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspCiAgICB7CiAgICAgICAgY291bnRbaGFuZENvbFtpXV0rKzsKICAgIH0KCiAgICBmb3IgKGludCBpID0gMDsgaSA8IDEzOyBpKyspCiAgICB7CiAgICAgICAgaWYgKGNvdW50W2ldID09IDIpCiAgICAgICAgewogICAgICAgICAgICBwYWlycysrOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gcGFpcnMgPT0gMjsKfQoKaW50IGNvbnRhaW5zVGhyZWVPZktpbmQoaW50IGhhbmRDb2xbXSkKewogICAgaW50IGNvdW50WzEzXSA9IHsgMCB9OwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKQogICAgewogICAgICAgIGNvdW50W2hhbmRDb2xbaV1dKys7CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMzsgaSsrKQogICAgewogICAgICAgIGlmIChjb3VudFtpXSA9PSAzKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIDE7CgogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMDsKfQoKaW50IGNvbnRhaW5zRm91ck9mS2luZChpbnQgaGFuZENvbFtdKQp7CiAgICBpbnQgY291bnRbMTNdID0geyAwIH07CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspCiAgICB7CiAgICAgICAgY291bnRbaGFuZENvbFtpXV0rKzsKICAgIH0KCiAgICBmb3IgKGludCBpID0gMDsgaSA8IDEzOyBpKyspCiAgICB7CiAgICAgICAgaWYgKGNvdW50W2ldID09IDQpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gMTsKCiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAwOwp9CgppbnQgY29udGFpbnNGbHVzaChpbnQgaGFuZFJvd1tdKQp7CiAgICAKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgNTsgaSsrKQogICAgewogICAgICAgIGlmIChoYW5kUm93W2ldICE9IGhhbmRSb3dbMF0pCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKCmludCBjb250YWluc1N0cmFpZ2h0KGludCBoYW5kQ29sW10pCnsKICAgIGludCB0ZW1wWzVdOwoKICAgIAogICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspCiAgICB7CiAgICAgICAgdGVtcFtpXSA9IGhhbmRDb2xbaV07CiAgICB9CgogICAgCiAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykKICAgIHsKICAgICAgICBmb3IgKGludCBqID0gaSArIDE7IGogPCA1OyBqKyspCiAgICAgICAgewogICAgICAgICAgICBpZiAodGVtcFtpXSA+IHRlbXBbal0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGludCBzd2FwID0gdGVtcFtpXTsKICAgICAgICAgICAgICAgIHRlbXBbaV0gPSB0ZW1wW2pdOwogICAgICAgICAgICAgICAgdGVtcFtqXSA9IHN3YXA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgCiAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykKICAgIHsKICAgICAgICBpZiAodGVtcFtpICsgMV0gIT0gdGVtcFtpXSArIDEpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0K