Up until ex06

This commit is contained in:
tosu 2023-03-30 01:56:30 +02:00 committed by Timo Schmidt
parent 5cbf5f4b5d
commit 13ea061fcc
8 changed files with 413 additions and 0 deletions

View File

@ -0,0 +1,29 @@
int ft_iterative_factorial(int nb)
{
int fact;
if (nb < 0)
return (0);
fact = 1;
while (--nb > 0)
fact *= (nb + 1);
return (fact);
}
#define START
#include <stdio.h>
int main(void)
{
printf("-10: %d\n", ft_iterative_factorial(-10));
printf("-1: %d\n", ft_iterative_factorial(-1));
printf("0: %d\n", ft_iterative_factorial(0));
printf("1: %d\n", ft_iterative_factorial(1));
printf("2: %d\n", ft_iterative_factorial(2));
printf("3: %d\n", ft_iterative_factorial(3));
printf("4: %d\n", ft_iterative_factorial(4));
printf("5: %d\n", ft_iterative_factorial(5));
printf("10: %d\n", ft_iterative_factorial(10));
printf("15: %d\n", ft_iterative_factorial(15));
return (0);
}

View File

@ -0,0 +1,24 @@
int ft_recursive_factorial(int nb)
{
if (nb < 1)
return (nb == 0);
return (nb * ft_recursive_factorial(nb - 1));
}
#define START
#include <stdio.h>
int main(void)
{
printf("-10: %d\n", ft_recursive_factorial(-10));
printf("-1: %d\n", ft_recursive_factorial(-1));
printf("0: %d\n", ft_recursive_factorial(0));
printf("1: %d\n", ft_recursive_factorial(1));
printf("2: %d\n", ft_recursive_factorial(2));
printf("3: %d\n", ft_recursive_factorial(3));
printf("4: %d\n", ft_recursive_factorial(4));
printf("5: %d\n", ft_recursive_factorial(5));
printf("10: %d\n", ft_recursive_factorial(10));
printf("15: %d\n", ft_recursive_factorial(15));
return (0);
}

82
ex02/ft_iterative_power.c Normal file
View File

@ -0,0 +1,82 @@
int ft_iterative_power(int nb, int power)
{
int res;
res = 1;
if (power < 1)
return (power == 0);
while (power--)
res *= nb;
return (res);
}
#define START
#include <stdio.h>
int main(void)
{
printf("base: <-3>, power <-2>, result: <%d>\n", ft_iterative_power(-3, -2));
printf("base: <-2>, power <-2>, result: <%d>\n", ft_iterative_power(-2, -2));
printf("base: <-1>, power <-2>, result: <%d>\n", ft_iterative_power(-1, -2));
printf("base: <0>, power <-2>, result: <%d>\n", ft_iterative_power(0, -2));
printf("base: <1>, power <-2>, result: <%d>\n", ft_iterative_power(1, -2));
printf("base: <2>, power <-2>, result: <%d>\n", ft_iterative_power(2, -2));
printf("base: <3>, power <-2>, result: <%d>\n", ft_iterative_power(3, -2));
printf("\n");
printf("base: <-3>, power <-1>, result: <%d>\n", ft_iterative_power(-3, -1));
printf("base: <-2>, power <-1>, result: <%d>\n", ft_iterative_power(-2, -1));
printf("base: <-1>, power <-1>, result: <%d>\n", ft_iterative_power(-1, -1));
printf("base: <0>, power <-1>, result: <%d>\n", ft_iterative_power(0, -1));
printf("base: <1>, power <-1>, result: <%d>\n", ft_iterative_power(1, -1));
printf("base: <2>, power <-1>, result: <%d>\n", ft_iterative_power(2, -1));
printf("base: <3>, power <-1>, result: <%d>\n", ft_iterative_power(3, -1));
printf("\n");
printf("base: <-3>, power: <0>, result: <%d>\n", ft_iterative_power(-3, 0));
printf("base: <-2>, power <0>, result: <%d>\n", ft_iterative_power(-2, 0));
printf("base: <-1>, power <0>, result: <%d>\n", ft_iterative_power(-1, 0));
printf("base: <0>, power <0>, result: <%d>\n", ft_iterative_power(0, 0));
printf("base: <1>, power <0>, result: <%d>\n", ft_iterative_power(1, 0));
printf("base: <2>, power <0>, result: <%d>\n", ft_iterative_power(2, 0));
printf("base: <3>, power <0>, result: <%d>\n", ft_iterative_power(3, 0));
printf("\n");
printf("base: <-3>, power <1>, result: <%d>\n", ft_iterative_power(-3, 1));
printf("base: <-2>, power <1>, result: <%d>\n", ft_iterative_power(-2, 1));
printf("base: <-1>, power <1>, result: <%d>\n", ft_iterative_power(-1, 1));
printf("base: <0>, power <1>, result: <%d>\n", ft_iterative_power(0, 1));
printf("base: <1>, power <1>, result: <%d>\n", ft_iterative_power(1, 1));
printf("base: <2>, power <1>, result: <%d>\n", ft_iterative_power(2, 1));
printf("base: <3>, power <1>, result: <%d>\n", ft_iterative_power(3, 1));
printf("\n");
printf("base: <-3>, power <2>, result: <%d>\n", ft_iterative_power(-3, 2));
printf("base: <-2>, power <2>, result: <%d>\n", ft_iterative_power(-2, 2));
printf("base: <-1>, power <2>, result: <%d>\n", ft_iterative_power(-1, 2));
printf("base: <0>, power <2>, result: <%d>\n", ft_iterative_power(0, 2));
printf("base: <1>, power <2>, result: <%d>\n", ft_iterative_power(1, 2));
printf("base: <2>, power <2>, result: <%d>\n", ft_iterative_power(2, 2));
printf("base: <3>, power <2>, result: <%d>\n", ft_iterative_power(3, 2));
printf("\n");
printf("base: <-3>, power <3>, result: <%d>\n", ft_iterative_power(-3, 3));
printf("base: <-2>, power <3>, result: <%d>\n", ft_iterative_power(-2, 3));
printf("base: <-1>, power <3>, result: <%d>\n", ft_iterative_power(-1, 3));
printf("base: <0>, power <3>, result: <%d>\n", ft_iterative_power(0, 3));
printf("base: <1>, power <3>, result: <%d>\n", ft_iterative_power(1, 3));
printf("base: <2>, power <3>, result: <%d>\n", ft_iterative_power(2, 3));
printf("base: <3>, power <3>, result: <%d>\n", ft_iterative_power(3, 3));
printf("\n");
printf("base: <-3>, power <10>, result: <%d>\n", ft_iterative_power(-3, 10));
printf("base: <-2>, power <10>, result: <%d>\n", ft_iterative_power(-2, 10));
printf("base: <-1>, power <10>, result: <%d>\n", ft_iterative_power(-1, 10));
printf("base: <0>, power <10>, result: <%d>\n", ft_iterative_power(0, 10));
printf("base: <1>, power <10>, result: <%d>\n", ft_iterative_power(1, 10));
printf("base: <2>, power <10>, result: <%d>\n", ft_iterative_power(2, 10));
printf("base: <3>, power <10>, result: <%d>\n", ft_iterative_power(3, 10));
printf("\n");
return (0);
}

77
ex03/ft_recursive_power.c Normal file
View File

@ -0,0 +1,77 @@
int ft_recursive_power(int nb, int power)
{
if (power < 1)
return (power == 0);
return (nb * ft_recursive_power(nb, power - 1));
}
#define START
#include <stdio.h>
int main(void)
{
printf("base: <-3>, power <-2>, result: <%d>\n", ft_recursive_power(-3, -2));
printf("base: <-2>, power <-2>, result: <%d>\n", ft_recursive_power(-2, -2));
printf("base: <-1>, power <-2>, result: <%d>\n", ft_recursive_power(-1, -2));
printf("base: <0>, power <-2>, result: <%d>\n", ft_recursive_power(0, -2));
printf("base: <1>, power <-2>, result: <%d>\n", ft_recursive_power(1, -2));
printf("base: <2>, power <-2>, result: <%d>\n", ft_recursive_power(2, -2));
printf("base: <3>, power <-2>, result: <%d>\n", ft_recursive_power(3, -2));
printf("\n");
printf("base: <-3>, power <-1>, result: <%d>\n", ft_recursive_power(-3, -1));
printf("base: <-2>, power <-1>, result: <%d>\n", ft_recursive_power(-2, -1));
printf("base: <-1>, power <-1>, result: <%d>\n", ft_recursive_power(-1, -1));
printf("base: <0>, power <-1>, result: <%d>\n", ft_recursive_power(0, -1));
printf("base: <1>, power <-1>, result: <%d>\n", ft_recursive_power(1, -1));
printf("base: <2>, power <-1>, result: <%d>\n", ft_recursive_power(2, -1));
printf("base: <3>, power <-1>, result: <%d>\n", ft_recursive_power(3, -1));
printf("\n");
printf("base: <-3>, power: <0>, result: <%d>\n", ft_recursive_power(-3, 0));
printf("base: <-2>, power <0>, result: <%d>\n", ft_recursive_power(-2, 0));
printf("base: <-1>, power <0>, result: <%d>\n", ft_recursive_power(-1, 0));
printf("base: <0>, power <0>, result: <%d>\n", ft_recursive_power(0, 0));
printf("base: <1>, power <0>, result: <%d>\n", ft_recursive_power(1, 0));
printf("base: <2>, power <0>, result: <%d>\n", ft_recursive_power(2, 0));
printf("base: <3>, power <0>, result: <%d>\n", ft_recursive_power(3, 0));
printf("\n");
printf("base: <-3>, power <1>, result: <%d>\n", ft_recursive_power(-3, 1));
printf("base: <-2>, power <1>, result: <%d>\n", ft_recursive_power(-2, 1));
printf("base: <-1>, power <1>, result: <%d>\n", ft_recursive_power(-1, 1));
printf("base: <0>, power <1>, result: <%d>\n", ft_recursive_power(0, 1));
printf("base: <1>, power <1>, result: <%d>\n", ft_recursive_power(1, 1));
printf("base: <2>, power <1>, result: <%d>\n", ft_recursive_power(2, 1));
printf("base: <3>, power <1>, result: <%d>\n", ft_recursive_power(3, 1));
printf("\n");
printf("base: <-3>, power <2>, result: <%d>\n", ft_recursive_power(-3, 2));
printf("base: <-2>, power <2>, result: <%d>\n", ft_recursive_power(-2, 2));
printf("base: <-1>, power <2>, result: <%d>\n", ft_recursive_power(-1, 2));
printf("base: <0>, power <2>, result: <%d>\n", ft_recursive_power(0, 2));
printf("base: <1>, power <2>, result: <%d>\n", ft_recursive_power(1, 2));
printf("base: <2>, power <2>, result: <%d>\n", ft_recursive_power(2, 2));
printf("base: <3>, power <2>, result: <%d>\n", ft_recursive_power(3, 2));
printf("\n");
printf("base: <-3>, power <3>, result: <%d>\n", ft_recursive_power(-3, 3));
printf("base: <-2>, power <3>, result: <%d>\n", ft_recursive_power(-2, 3));
printf("base: <-1>, power <3>, result: <%d>\n", ft_recursive_power(-1, 3));
printf("base: <0>, power <3>, result: <%d>\n", ft_recursive_power(0, 3));
printf("base: <1>, power <3>, result: <%d>\n", ft_recursive_power(1, 3));
printf("base: <2>, power <3>, result: <%d>\n", ft_recursive_power(2, 3));
printf("base: <3>, power <3>, result: <%d>\n", ft_recursive_power(3, 3));
printf("\n");
printf("base: <-3>, power <10>, result: <%d>\n", ft_recursive_power(-3, 10));
printf("base: <-2>, power <10>, result: <%d>\n", ft_recursive_power(-2, 10));
printf("base: <-1>, power <10>, result: <%d>\n", ft_recursive_power(-1, 10));
printf("base: <0>, power <10>, result: <%d>\n", ft_recursive_power(0, 10));
printf("base: <1>, power <10>, result: <%d>\n", ft_recursive_power(1, 10));
printf("base: <2>, power <10>, result: <%d>\n", ft_recursive_power(2, 10));
printf("base: <3>, power <10>, result: <%d>\n", ft_recursive_power(3, 10));
printf("\n");
return (0);
}

60
ex04/ft_fibonacci.c Normal file
View File

@ -0,0 +1,60 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_fibonacci.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: tosuman </var/spool/mail/tosuman> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/03/30 00:36:21 by tosuman #+# #+# */
/* Updated: 2023/03/30 00:36:22 by tosuman ### ########.fr */
/* */
/* ************************************************************************** */
#include <stdio.h>
#include <stdlib.h>
#define NUM_TYPE int
NUM_TYPE memoized_fibonacci(unsigned int index, NUM_TYPE *cache)
{
if (cache[index] == (NUM_TYPE) -1)
cache[index] = memoized_fibonacci(index - 1, cache)
+ memoized_fibonacci(index - 2, cache);
return (cache[index]);
}
int ft_fibonacci(int index)
{
int i;
NUM_TYPE *cache;
NUM_TYPE fibn;
if (index < 0)
return (-1);
cache = malloc(sizeof(NUM_TYPE) * (index + 1));
cache[0] = 0;
cache[1] = 1;
i = 2;
while (i < index + 1)
cache[i++] = (NUM_TYPE)(-1);
fibn = memoized_fibonacci((unsigned int) index, cache);
i = 0;
free(cache);
return (fibn);
}
/* ////
#include <stdio.h>
#define UNSIGNED_LONG_LONG_MAX_FIB 93
#define INT_MAX_FIB 46
int main(void)
{
int i;
i = -12;
while (++i <= INT_MAX_FIB + 1)
printf("%d-th fib num: %d\n", i, ft_fibonacci(i));
return (0);
}
*/ ////

64
ex05/ft_sqrt.c Normal file
View File

@ -0,0 +1,64 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_sqrt.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: tosuman </var/spool/mail/tosuman> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/03/30 01:42:42 by tosuman #+# #+# */
/* Updated: 2023/03/30 01:42:45 by tosuman ### ########.fr */
/* */
/* ************************************************************************** */
#define INT_MAX_SQRT 46340
int ft_sqrt(int nb)
{
int sqrt;
int old_sqrt;
int max;
int min;
min = 0;
max = nb;
if (nb > INT_MAX_SQRT)
max = INT_MAX_SQRT;
sqrt = max;
while (1)
{
old_sqrt = sqrt;
if (sqrt * sqrt == nb)
return (sqrt);
if (sqrt * sqrt > nb)
max = sqrt;
if (sqrt * sqrt < nb)
min = sqrt;
sqrt = (max + min) / 2;
if (sqrt == old_sqrt)
break ;
}
return (0);
}
/* ////
#include <stdio.h>
#include <limits.h>
int main(void)
{
int i;
printf("%d, %d\n", 0, ft_sqrt(0));
i = -20;
while (++i <= 4000)
if (ft_sqrt(i))
printf("%d, %d\n", i, ft_sqrt(i));
printf("%d, %d\n", INT_MIN, ft_sqrt(INT_MIN));
printf("%d, %d\n", INT_MAX, ft_sqrt(INT_MAX));
i = INT_MAX;
while (--i > INT_MAX - 1000000)
if (ft_sqrt(i))
printf("%d, %d\n", i, ft_sqrt(i));
return (0);
}
*/ ////

48
ex06/ft_is_prime.c Normal file
View File

@ -0,0 +1,48 @@
#define INT_MAX_SQRT 46340
int ft_int_sqrt(int nb)
{
int sqrt;
int old_sqrt;
int max;
int min;
min = 0;
max = nb;
if (nb > INT_MAX_SQRT)
max = INT_MAX_SQRT;
sqrt = max;
while (1)
{
old_sqrt = sqrt;
if (sqrt * sqrt == nb)
return (sqrt);
if (sqrt * sqrt > nb)
max = sqrt;
if (sqrt * sqrt < nb)
min = sqrt;
sqrt = (max + min) / 2;
if (sqrt == old_sqrt)
break ;
}
return (0);
}
int ft_is_prime(int nb)
{
}
#define START
#include <stdio.h>
int main(void)
{
int i;
i = 0;
while (i < 200)
if (ft_is_prime(i))
printf("Prime: %d", i);
return (0);
}

View File

@ -0,0 +1,29 @@
#include <unistd.h>
#define SIZE 10
int backtrack(cols[SIZE], int col, int sols)
{
if (col >= SIZE)
return sols + 1;
}
int ft_ten_queens_puzzle()
{
int cols[SIZE];
int i;
i = 0;
while (i < SIZE)
cols[i] = -1;
return (backtrack(cols, 0, 0));
}
#include <stdio.h>
int main(void)
{
printf("%d\n", ft_ten_queens_puzzle());
}