aboutsummaryrefslogtreecommitdiff
path: root/c05
diff options
context:
space:
mode:
Diffstat (limited to 'c05')
-rw-r--r--c05/ex08/ft_ten_queens_puzzle.c (renamed from c05/ex08/ft_queens.c)15
-rw-r--r--c05/main.c4
2 files changed, 12 insertions, 7 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);
}
diff --git a/c05/main.c b/c05/main.c
index f66caf9..628c5c3 100644
--- a/c05/main.c
+++ b/c05/main.c
@@ -9,7 +9,7 @@
#include "ex05/ft_sqrt.c"
#include "ex06/ft_is_prime.c"
#include "ex07/ft_find_next_prime.c"
-#include "ex08/ft_queens.c"
+#include "ex08/ft_ten_queens_puzzle.c"
int main()
{
@@ -96,5 +96,5 @@ int main()
/*printf("%d is %d\n", i, ft_find_next_prime(i));*/
printf("---------------------\n");
- // ft_queens();
+ printf("%d solutions\n", ft_ten_queens_puzzle());
}