#include <stdio.h>
void counterTest(char *str)
{
typedef enum {
_A = 1, _T = 10, _J = 11, _Q = 12, _K = 13,
_D = 14, _H = 15, _S = 16, _C = 17
} S_t;
int counter[_C+1] = {0};
while (*str != 0) {
//マークをカウントアップ
switch (*str) {
case 'D': counter[_D]++; break;
case 'H': counter[_H]++; break;
case 'S': counter[_S]++; break;
case 'C': counter[_C]++; break;
default: {
printf("illegal character:%c\n", *str
); return;
}
}
str++;
if (*str == 0) {
return;
}
//数字をカウントアップ
if (*str >= '2' && *str <= '9') {
counter[*str-'0']++;
}
else {
switch (*str) {
case 'A': counter[_A]++; break;
case 'T': counter[_T]++; break;
case 'J': counter[_J]++; break;
case 'Q': counter[_Q]++; break;
case 'K': counter[_K]++; break;
default: {
printf("illegal character:%c\n", *str
); return;
}
}
}
str++;
}
int numpairs = 0;
for (int i=0; i<_K+1; i++) {
numpairs += counter[i] / 2;
}
int markpairs = 0;
for (int i=_K+1; i<_C+1; i++) {
markpairs += counter[i] / 2;
}
if (numpairs > markpairs) {
printf("numpairs:%d\n", numpairs
); }
else {
printf("markpairs:%d\n", markpairs
); }
}
int main(void) {
char *a = "DAD2HAH3"; //2
char *b = "DAD3D8D9DJH5H8HKSASKCAC5C8CK"; //7
char *c = "SAS2S3S4S5S6S7S8S9C2C3C4C5C6C7C8C9CT"; //9
counterTest(a);
counterTest(b);
counterTest(c);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIGNvdW50ZXJUZXN0KGNoYXIgKnN0cikKewoJcHJpbnRmKCJpbnB1dDolcyAiLCBzdHIpOwoJCiAgICB0eXBlZGVmIGVudW0gewogICAgICAgIF9BID0gMSwgX1QgPSAxMCwgX0ogPSAxMSwgX1EgPSAxMiwgX0sgPSAxMywKICAgICAgICBfRCA9IDE0LCBfSCA9IDE1LCBfUyA9IDE2LCBfQyA9IDE3CiAgICB9IFNfdDsKICAgIAogICAgaW50IGNvdW50ZXJbX0MrMV0gPSB7MH07CgogICAgd2hpbGUgKCpzdHIgIT0gMCkgewogICAgICAgIAogICAgICAgIC8v44Oe44O844Kv44KS44Kr44Km44Oz44OI44Ki44OD44OXCiAgICAgICAgc3dpdGNoICgqc3RyKSB7CiAgICAgICAgICAgIGNhc2UgJ0QnOiBjb3VudGVyW19EXSsrOyBicmVhazsKICAgICAgICAgICAgY2FzZSAnSCc6IGNvdW50ZXJbX0hdKys7IGJyZWFrOwogICAgICAgICAgICBjYXNlICdTJzogY291bnRlcltfU10rKzsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ0MnOiBjb3VudGVyW19DXSsrOyBicmVhazsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICBkZWZhdWx0OiB7CiAgICAgICAgICAgICAgICBwcmludGYoImlsbGVnYWwgY2hhcmFjdGVyOiVjXG4iLCAqc3RyKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBzdHIrKzsKICAgICAgICAKICAgICAgICBpZiAoKnN0ciA9PSAwKSB7CiAgICAgICAgICAgIHByaW50ZigiaWxsZWdhbCBsZW5ndGhcbiIpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8v5pWw5a2X44KS44Kr44Km44Oz44OI44Ki44OD44OXCiAgICAgICAgaWYgKCpzdHIgPj0gJzInICYmICpzdHIgPD0gJzknKSB7CiAgICAgICAgICAgIGNvdW50ZXJbKnN0ci0nMCddKys7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBzd2l0Y2ggKCpzdHIpIHsKICAgICAgICAgICAgICAgIGNhc2UgJ0EnOiBjb3VudGVyW19BXSsrOyBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ1QnOiBjb3VudGVyW19UXSsrOyBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ0onOiBjb3VudGVyW19KXSsrOyBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ1EnOiBjb3VudGVyW19RXSsrOyBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ0snOiBjb3VudGVyW19LXSsrOyBicmVhazsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHsKICAgICAgICAgICAgICAgICAgICBwcmludGYoImlsbGVnYWwgY2hhcmFjdGVyOiVjXG4iLCAqc3RyKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgc3RyKys7CiAgICB9CiAgICAKICAgIGludCBudW1wYWlycyA9IDA7CiAgICBmb3IgKGludCBpPTA7IGk8X0srMTsgaSsrKSB7CiAgICAgICAgbnVtcGFpcnMgKz0gY291bnRlcltpXSAvIDI7CiAgICB9CiAgICAKICAgIGludCBtYXJrcGFpcnMgPSAwOwogICAgZm9yIChpbnQgaT1fSysxOyBpPF9DKzE7IGkrKykgewogICAgICAgIG1hcmtwYWlycyArPSBjb3VudGVyW2ldIC8gMjsKICAgIH0KICAgIAogICAgaWYgKG51bXBhaXJzID4gbWFya3BhaXJzKSB7CiAgICAgICAgcHJpbnRmKCJudW1wYWlyczolZFxuIiwgbnVtcGFpcnMpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgcHJpbnRmKCJtYXJrcGFpcnM6JWRcbiIsIG1hcmtwYWlycyk7CiAgICB9Cn0KCmludCBtYWluKHZvaWQpIHsKCWNoYXIgKmEgPSAiREFEMkhBSDMiOyAvLzIKICAgIGNoYXIgKmIgPSAiREFEM0Q4RDlESkg1SDhIS1NBU0tDQUM1QzhDSyI7IC8vNwogICAgY2hhciAqYyA9ICJTQVMyUzNTNFM1UzZTN1M4UzlDMkMzQzRDNUM2QzdDOEM5Q1QiOyAvLzkKCiAgICBjb3VudGVyVGVzdChhKTsKICAgIGNvdW50ZXJUZXN0KGIpOwogICAgY291bnRlclRlc3QoYyk7CglyZXR1cm4gMDsKfQo=