1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| char* getHint(char* secret, char* guess) { int ACnt = 0, ABCnt = 0; int cntSecret[10] = {0}, cntGuess[10] = {0}; while(*secret) { if(*secret == *guess) ACnt++; cntSecret[*secret - '0']++; cntGuess[*guess - '0']++; secret++; guess++; } for(int i = 0; i < 10; i++) { ABCnt += (cntSecret[i] > cntGuess[i] ? cntGuess[i] : cntSecret[i]); } int len = snprintf(NULL, 0, "%dA%dB", ACnt, ABCnt - ACnt) + 1; char *ret = malloc(sizeof(char) * (len)); snprintf(ret, len, "%dA%dB", ACnt, ABCnt - ACnt); return ret; }
|