-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcheck.c
More file actions
71 lines (63 loc) · 1.71 KB
/
check.c
File metadata and controls
71 lines (63 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* check.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: bwebb <bwebb@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/18 13:00:53 by bwebb #+# #+# */
/* Updated: 2020/01/18 14:09:21 by bwebb ### ########.fr */
/* */
/* ************************************************************************** */
#include "./sudoku.h"
int cx(int grid[9][9], int x, int y)
{
int i;
i = 0;
while (i <= 8)
{
if ((grid[i][y] == grid[x][y]) && (i != x))
return (0);
i++;
}
return (1);
}
int cy(int grid[9][9], int x, int y)
{
int k;
k = 0;
while (k <= 8)
{
if ((grid[x][k] == grid[x][y]) && (k != y))
return (0);
k++;
}
return (1);
}
int cblock(int grid[9][9], int x, int y)
{
int ix;
int iy;
int kx;
int ky;
ix = x / 3 * 3;
iy = y / 3 * 3;
kx = 0;
while (kx <= 2)
{
ky = 0;
while (ky <= 2)
{
if ((grid[ix + kx][iy + ky] == grid[x][y]) \
&& ((x != (ix + kx)) && (y != (iy + ky))))
return (0);
ky++;
}
kx++;
}
return (1);
}
int check(int grid[9][9], int x, int y)
{
return (cx(grid, x, y) && cy(grid, x, y) && cblock(grid, x, y));
}