diff options
| author | Charles <sircharlesaze@gmail.com> | 2019-08-07 20:33:02 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2019-08-07 20:33:02 +0200 |
| commit | aa34d515b7debdd8edf63fbdb58f2fa936ab9572 (patch) | |
| tree | 52f703515d381942d334c631ef98985f7269ace9 /c05/ex08 | |
| parent | 687a7211a8702a4ad0645491b9001d243c8c3099 (diff) | |
| download | piscine-aa34d515b7debdd8edf63fbdb58f2fa936ab9572.tar.gz piscine-aa34d515b7debdd8edf63fbdb58f2fa936ab9572.tar.bz2 piscine-aa34d515b7debdd8edf63fbdb58f2fa936ab9572.zip | |
ten queens updated for current subject
Diffstat (limited to 'c05/ex08')
| -rw-r--r-- | c05/ex08/ft_ten_queens_puzzle.c (renamed from c05/ex08/ft_queens.c) | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/c05/ex08/ft_queens.c b/c05/ex08/ft_ten_queens_puzzle.c index ba2c742..36d5402 100644 --- a/c05/ex08/ft_queens.c +++ b/c05/ex08/ft_ten_queens_puzzle.c @@ -1,4 +1,5 @@ #include <unistd.h> + #define TRUE 1 #define FALSE 0 #define BOARD_SIZE 10 @@ -15,7 +16,7 @@ static void print_cols(int cols[BOARD_SIZE]) i = 0; while (i < BOARD_SIZE) - ft_putchar(cols[i++] + '0'); // maybe +1 + ft_putchar(cols[i++] + '0'); ft_putchar('\n'); } @@ -35,13 +36,14 @@ static int valid_position(int cols[BOARD_SIZE], int x, int y) return (TRUE); } -static void solve(int cols[BOARD_SIZE], int x) +static void solve(int cols[BOARD_SIZE], int x, int *solution_counter) { int i; if (x == BOARD_SIZE) { print_cols(cols); + (*solution_counter)++; return ; } i = -1; @@ -50,13 +52,16 @@ static void solve(int cols[BOARD_SIZE], int x) if (!valid_position(cols, x, i)) continue ; cols[x] = i; - solve(cols, x + 1); + solve(cols, x + 1, solution_counter); } } -void ft_queens(void) // may have bad name +int ft_ten_queens_puzzle(void) { + int solution_counter; int cols[BOARD_SIZE]; - solve(cols, 0); + solution_counter = 0; + solve(cols, 0, &solution_counter); + return (solution_counter); } |
