#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define DIGITS 4
int question[DIGITS]; /* store the 4 digits of the question */
void generateQuestion();
void guess(int your_answer[]);
int compare(int your_answer[]);
int main()
{
int your_answer[DIGITS]; /* your_answer is for user input. */
int is_correct; /* is_correct is to check whether the user entered the correct number. */
generateQuestion();
printf("Enter 4 different digits with the first digit nonzero.\n");
do{
guess(your_answer);
is_correct = compare(your_answer);
}while(is_correct == 0);
printf("congratulation! \nYou guessed correct number!\n");
return 0;
}
/* randomly generate 4 digits without repeation. */
void generateQuestion()
{
int is_repeat; /* for check whether we generate the repeated digit. */
int i, j;
question
[0] = rand() % 9 + 1; /* the first digit should be 1-9 */
/* generate the other 3 digits. */
for(i = 1; i < DIGITS; i++){
/* generate the new digit until no repeated value occurred. */
do{
is_repeat = 0; /* suppose we do not generate repeated digit. */
question
[i
] = rand() % 10; /* the other digit can be 0-9. */ for(j = 0; j < i; j++){
if(question[i] == question[j]){
is_repeat = 1; /* repeation occurred. */
break;
}
}
}while(is_repeat == 1);
}
/* display the generated four digits to make debug convenient, so
you can remove the printf statement.
*/
printf("%d%d%d%d\n", question
[0], question
[1], question
[2], question
[3]); }
/* get the number the user guessed and store it into your_answer */
void guess(int your_answer[])
{
int value, i;
scanf("%d", &value
); /* view the four digits as a number. */
/* store the four digits. */
for(i = DIGITS-1; i >=0; i--){
your_answer[i] = value % 10;
value = value / 10;
}
}
/* compare the question with the user input number
if the user guessed the correct number, return 1.
otherwise, return 0.
*/
int compare(int your_answer[])
{
int a_count = 0, b_count = 0, i, j;
for(i = 0; i < DIGITS; i++){
if(your_answer[i] == question[i]){
a_count++;
}
else{
for(j = 0; j < DIGITS; j++){
if(your_answer[i] == question[j] && j != i){
b_count++;
break;
}
}
}
}
printf("%d A %d B\n", a_count
, b_count
);
if(a_count == 4)
return 1;
else{
return 0;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KCiNkZWZpbmUgRElHSVRTIDQKCmludCBxdWVzdGlvbltESUdJVFNdOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0b3JlIHRoZSA0IGRpZ2l0cyBvZiB0aGUgcXVlc3Rpb24gKi8Kdm9pZCBnZW5lcmF0ZVF1ZXN0aW9uKCk7ICAgICAgICAgCnZvaWQgZ3Vlc3MoaW50IHlvdXJfYW5zd2VyW10pOyAgIAppbnQgY29tcGFyZShpbnQgeW91cl9hbnN3ZXJbXSk7ICAKCmludCBtYWluKCkKewoJaW50IHlvdXJfYW5zd2VyW0RJR0lUU107ICAgICAgICAgICAgICAgICAgLyogeW91cl9hbnN3ZXIgaXMgZm9yIHVzZXIgaW5wdXQuICovCglpbnQgaXNfY29ycmVjdDsgICAgICAgICAgICAgICAgICAgICAgLyogaXNfY29ycmVjdCBpcyB0byBjaGVjayB3aGV0aGVyIHRoZSB1c2VyIGVudGVyZWQgdGhlIGNvcnJlY3QgbnVtYmVyLiAqLwoJZ2VuZXJhdGVRdWVzdGlvbigpOwoJcHJpbnRmKCJFbnRlciA0IGRpZmZlcmVudCBkaWdpdHMgd2l0aCB0aGUgZmlyc3QgZGlnaXQgbm9uemVyby5cbiIpOwoKCWRvewoJICAgZ3Vlc3MoeW91cl9hbnN3ZXIpOwoJICAgaXNfY29ycmVjdCA9IGNvbXBhcmUoeW91cl9hbnN3ZXIpOwoJfXdoaWxlKGlzX2NvcnJlY3QgPT0gMCk7CgoJcHJpbnRmKCJjb25ncmF0dWxhdGlvbiEgXG5Zb3UgZ3Vlc3NlZCBjb3JyZWN0IG51bWJlciFcbiIpOwoKCXN5c3RlbSgicGF1c2UiKTsKCXJldHVybiAwOwp9CgovKiByYW5kb21seSBnZW5lcmF0ZSA0IGRpZ2l0cyB3aXRob3V0IHJlcGVhdGlvbi4gKi8Kdm9pZCBnZW5lcmF0ZVF1ZXN0aW9uKCkKewoJaW50IGlzX3JlcGVhdDsgICAgICAgICAgICAgICAgICAgICAvKiBmb3IgY2hlY2sgd2hldGhlciB3ZSBnZW5lcmF0ZSB0aGUgcmVwZWF0ZWQgZGlnaXQuICovCglpbnQgaSwgajsKCXNyYW5kKCB0aW1lKE5VTEwpICk7CgoJcXVlc3Rpb25bMF0gPSByYW5kKCkgJSA5ICsgMTsgICAgICAvKiB0aGUgZmlyc3QgZGlnaXQgc2hvdWxkIGJlIDEtOSAqLwoKCS8qIGdlbmVyYXRlIHRoZSBvdGhlciAzIGRpZ2l0cy4gKi8KCWZvcihpID0gMTsgaSA8IERJR0lUUzsgaSsrKXsKCQkvKiBnZW5lcmF0ZSB0aGUgbmV3IGRpZ2l0IHVudGlsIG5vIHJlcGVhdGVkIHZhbHVlIG9jY3VycmVkLiAqLwoJCWRvewoJCQlpc19yZXBlYXQgPSAwOyAgICAgICAgICAgICAvKiBzdXBwb3NlIHdlIGRvIG5vdCBnZW5lcmF0ZSByZXBlYXRlZCBkaWdpdC4gKi8KCQkgICAgcXVlc3Rpb25baV0gPSByYW5kKCkgJSAxMDsgLyogdGhlIG90aGVyIGRpZ2l0IGNhbiBiZSAwLTkuICovCgkgICAgICAgIGZvcihqID0gMDsgaiA8IGk7IGorKyl7CgkJICAgICAgICBpZihxdWVzdGlvbltpXSA9PSBxdWVzdGlvbltqXSl7CgkJCSAgICAgICBpc19yZXBlYXQgPSAxOyAgICAgLyogcmVwZWF0aW9uIG9jY3VycmVkLiAqLwoJCQkgICAgICAgYnJlYWs7CgkJICAgICAgICB9CgkgICAgICAgfQoJICAgfXdoaWxlKGlzX3JlcGVhdCA9PSAxKTsKCX0KCgkvKiBkaXNwbGF5IHRoZSBnZW5lcmF0ZWQgZm91ciBkaWdpdHMgdG8gbWFrZSBkZWJ1ZyBjb252ZW5pZW50LCBzbwoJICAgeW91IGNhbiByZW1vdmUgdGhlIHByaW50ZiBzdGF0ZW1lbnQuCgkqLwoJcHJpbnRmKCIlZCVkJWQlZFxuIiwgcXVlc3Rpb25bMF0sIHF1ZXN0aW9uWzFdLCBxdWVzdGlvblsyXSwgcXVlc3Rpb25bM10pOwp9CgovKiBnZXQgdGhlIG51bWJlciB0aGUgdXNlciBndWVzc2VkIGFuZCBzdG9yZSBpdCBpbnRvIHlvdXJfYW5zd2VyICovCnZvaWQgZ3Vlc3MoaW50IHlvdXJfYW5zd2VyW10pCnsKCWludCB2YWx1ZSwgaTsKCXNjYW5mKCIlZCIsICZ2YWx1ZSk7ICAgIC8qIHZpZXcgdGhlIGZvdXIgZGlnaXRzIGFzIGEgbnVtYmVyLiAqLwoKCS8qIHN0b3JlIHRoZSBmb3VyIGRpZ2l0cy4gKi8KCWZvcihpID0gRElHSVRTLTE7IGkgPj0wOyBpLS0pewoJCXlvdXJfYW5zd2VyW2ldID0gdmFsdWUgJSAxMDsKCQl2YWx1ZSA9IHZhbHVlIC8gMTA7Cgl9Cn0KCi8qIGNvbXBhcmUgdGhlIHF1ZXN0aW9uIHdpdGggdGhlIHVzZXIgaW5wdXQgbnVtYmVyCiAgIGlmIHRoZSB1c2VyIGd1ZXNzZWQgdGhlIGNvcnJlY3QgbnVtYmVyLCByZXR1cm4gMS4KICAgb3RoZXJ3aXNlLCByZXR1cm4gMC4KKi8KCmludCBjb21wYXJlKGludCB5b3VyX2Fuc3dlcltdKQp7CglpbnQgYV9jb3VudCA9IDAsIGJfY291bnQgPSAwLCBpLCBqOwoKCWZvcihpID0gMDsgaSA8IERJR0lUUzsgaSsrKXsKCQlpZih5b3VyX2Fuc3dlcltpXSA9PSBxdWVzdGlvbltpXSl7CgkJCWFfY291bnQrKzsKCQl9CgkJZWxzZXsKCQkJZm9yKGogPSAwOyBqIDwgRElHSVRTOyBqKyspewoJCQkJaWYoeW91cl9hbnN3ZXJbaV0gPT0gIHF1ZXN0aW9uW2pdICYmIGogIT0gaSl7CgkJCQkJYl9jb3VudCsrOwoJCQkJCWJyZWFrOwoJCQkJfQoJCQl9CgkJfQoJfQoKICAgIHByaW50ZigiJWQgQSAlZCBCXG4iLCBhX2NvdW50LCBiX2NvdW50KTsKCglpZihhX2NvdW50ID09IDQpCgkJcmV0dXJuIDE7CgllbHNlewoJCXByaW50ZigiVHJ5IGFnYWluLlxuIik7CgkJcmV0dXJuIDA7Cgl9Cn0=