Puzzle: The Game of Master Mind

5898 views
The Game of Master Mind is played as follows:

The computer has four slots containing balls that are red (R), yellow (Y), green (G) or blue (B) For example, the computer might have RGGB (e g , Slot #1 is red, Slots #2 and
#3 are green, Slot #4 is blue)
You, the user, are trying to guess the solution You might, for example, guess YRGB When you guess the correct color for the correct slot, you get a ?hit? If you guess
a color that exists but is in the wrong slot, you get a ?pseudo-hit? For example, the
guess YRGB has 2 hits and one pseudo hit
For each guess, you are told the number of hits and pseudo-hits
Write a method that, given a guess and a solution, returns the number of hits and pseudo hits
5 Vote Up   |   Post Answer

By  Guest





Sangeeta Haldhar Sangeeta Haldhar   11 years ago


/* C function to give hits and pseudohits */
void giveHitsPseudoHits(int *array, int *refArray, int numElements)
{
int i, j, hits = 0, pseudohits = 0, *hitsPseudoHits;

hitsPseudoHits = (int *) calloc(0, sizeof(int * numElements);

for (i = 0; i < numElements; i++) {
if (hitsPseudoHits[i] == 2)
continue;
if (array[i] == refArray[i]) {
hits++;
hitsPseudoHits[i] = 2;
}
else {
for (j = 0; j < numElements; j++) {
if ((array[i] == refArray[j] && (i != j)) {
if (array[j] != refArray[j])) {
hitsPseudoHits[j] = 1;
pseudoHits++;
}
else {
hitsPseudoHits[j] = 2;
numHits++;
}
}
}
}
}
printf("Hits = %d\nPseudo Hits = %d", hits, pseudoHits);
}

Reply    0 Vote Up   0 Vote Up