Mastermind
Számkitaláló játék
randommaster.c
1 #include <stdlib.h>
2 #include <stdio.h>
3 #include <time.h>
4 
5 typedef struct {
6  int black, white;
7 } Response;
8 
9 int randomGuess(void)
10 {
11  return rand() % 1296;
12 }
13 
14 void int2hex(int n, int digits[])
15 {
16  int i;
17  for (i = 0; i < 4; ++i) {
18  digits[4-1-i] = n % 6;
19  n /= 6;
20  }
21 }
22 
23 Response processGuess(int guess, int secret)
24 {
25  Response res = {0, 0};
26  int g[4], s[4], i, j;
27  /* számjegyek előállítása */
28  int2hex(guess, g);
29  int2hex(secret, s);
30  /* fekete tüskék */
31  for (i = 0; i < 4; ++i)
32  if (g[i] == s[i]) {
33  res.black++;
34  g[i] = -1;
35  s[i] = -2;
36  }
37  /* fehér tüskék */
38  for (i = 0; i < 4; ++i)
39  for (j = 0; j < 4; ++j)
40  if (g[i] == s[j]) {
41  res.white++;
42  s[j] = -2;
43  break;
44  }
45 
46  return res;
47 }
48 
49 int main(void)
50 {
51  int i = 0;
52  int secret;
53  Response response;
54 
55  srand(time(NULL));
56  secret = randomGuess(); /* Rejtő gondol */
57  do {
58  ++i;
59  int guess = randomGuess(); /* Fejtő tippel */
60  response = processGuess(guess, secret); /* Rejtő válaszol */
61  printf("%d: %d (%d, %d)\n", i, guess, response.black, response.white);
62  } while (response.black != 4);
63 
64  return 0;
65 }
66 
digits
void digits(int a, int d[])
egész szám jegyeinek előállítása
Definition: mastermind.c:41
Response::white
int white
a fehér tüskék száma
Definition: mastermind.c:18
Response::black
int black
a fekete tüskék száma
Definition: mastermind.c:17
main
int main(void)
a főprogram
Definition: mastermind.c:153
Response
egy választ tároló típus
Definition: mastermind.c:16