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
YGTtK2M?Aa!E?&Qe>3>8J*|+ikFVZ_-o&W#<
literal 0
HcmV?d00001
diff --git a/lib/my/my/alphanum_helper.c b/lib/my/my/alphanum_helper.c
new file mode 100644
index 0000000..25a02b9
--- /dev/null
+++ b/lib/my/my/alphanum_helper.c
@@ -0,0 +1,24 @@
+/*
+** EPITECH PROJECT, 2019
+** Helper for the task 4
+** File description:
+** alphanum_helper
+*/
+
+int is_alpha(char c);
+
+int is_digit(char c);
+
+int is_alphanum(char c)
+{
+ return (is_alpha(c) || is_digit(c));
+}
+
+int first_alphanum(const char *str)
+{
+ for (int i = 0; str[i]; i++) {
+ if (is_alphanum(str[i]))
+ return i;
+ }
+ return (-1);
+}
diff --git a/lib/my/my/index_of.c b/lib/my/my/index_of.c
new file mode 100644
index 0000000..733857c
--- /dev/null
+++ b/lib/my/my/index_of.c
@@ -0,0 +1,15 @@
+/*
+** EPITECH PROJECT, 2019
+** String helper
+** File description:
+** Index of char in a string
+*/
+
+int index_of(const char *str, const char c)
+{
+ for (int i = 0; str[i]; i++) {
+ if (str[i] == c)
+ return (i);
+ }
+ return (-1);
+}
\ No newline at end of file
diff --git a/lib/my/my/my_compute_factorial_it.c b/lib/my/my/my_compute_factorial_it.c
new file mode 100644
index 0000000..37f87bc
--- /dev/null
+++ b/lib/my/my/my_compute_factorial_it.c
@@ -0,0 +1,22 @@
+/*
+** EPITECH PROJECT, 2019
+** CPool_Day05_2019
+** File description:
+** Factorials
+*/
+
+int my_compute_factorial_it(int nb)
+{
+ if (nb < 0)
+ return 0;
+
+ int ret = 1;
+ while (nb > 0) {
+ ret *= nb;
+ nb--;
+
+ if (ret < 0)
+ return 0;
+ }
+ return ret;
+}
diff --git a/lib/my/my/my_compute_factorial_rec.c b/lib/my/my/my_compute_factorial_rec.c
new file mode 100644
index 0000000..de2d6e4
--- /dev/null
+++ b/lib/my/my/my_compute_factorial_rec.c
@@ -0,0 +1,25 @@
+/*
+** EPITECH PROJECT, 2019
+** CPool_Day05_2019
+** File description:
+** Factorials but in recursive mode
+*/
+
+int compute(int nb, int ret)
+{
+ if (ret < 0)
+ return (0);
+
+ if (nb == 0)
+ return (ret);
+
+ return (compute(nb - 1, ret * nb));
+}
+
+int my_compute_factorial_rec(int nb)
+{
+ if (nb == 0)
+ return (1);
+
+ return (compute(nb, 1));
+}
diff --git a/lib/my/my/my_compute_power_it.c b/lib/my/my/my_compute_power_it.c
new file mode 100644
index 0000000..a9481bb
--- /dev/null
+++ b/lib/my/my/my_compute_power_it.c
@@ -0,0 +1,29 @@
+/*
+** EPITECH PROJECT, 2019
+** CPool_Day05_2019
+** File description:
+** Power calculator
+*/
+
+int my_pow(int nb, int p)
+{
+ int ret = 1;
+ int mult = 1;
+
+ if (p < 0)
+ return 0;
+ if (nb < 0) {
+ nb *= -1;
+ if (p % 2 == 1)
+ mult = -1;
+ }
+ while (p > 0) {
+ ret *= nb;
+ p--;
+
+ if (ret < 0)
+ return (0);
+ }
+
+ return (ret * mult);
+}
diff --git a/lib/my/my/my_compute_square_root.c b/lib/my/my/my_compute_square_root.c
new file mode 100644
index 0000000..16e03e6
--- /dev/null
+++ b/lib/my/my/my_compute_square_root.c
@@ -0,0 +1,22 @@
+/*
+** EPITECH PROJECT, 2019
+** CPool_Day05_2019
+** File description:
+** Square root calculator
+*/
+
+int my_sqrt(int nb)
+{
+ if (nb < 0)
+ return 0;
+
+ for (int i = 0; 1; i++) {
+ int power = i * i;
+ if (power == nb)
+ return i;
+ else if (power > nb)
+ return 0;
+ }
+
+ return 0;
+}
diff --git a/lib/my/my/my_evil_str.c b/lib/my/my/my_evil_str.c
new file mode 100644
index 0000000..3487c64
--- /dev/null
+++ b/lib/my/my/my_evil_str.c
@@ -0,0 +1,28 @@
+/*
+** EPITECH PROJECT, 2019
+** CPool_Day04_2019
+** File description:
+** Reverse string
+*/
+
+int my_putchar(char c);
+
+char *my_evil_str(char *str)
+{
+ int count = 0;
+ char buf[1598246];
+
+ while (1) {
+ buf[count] = str[count];
+ if (*(str + count) != '\0')
+ count++;
+ else
+ break;
+ }
+
+ for (int i = 0; i < count; i++)
+ str[i] = buf[count - i - 1];
+
+ str[count + 1] = '\0';
+ return str;
+}
diff --git a/lib/my/my/my_find_prime_sup.c b/lib/my/my/my_find_prime_sup.c
new file mode 100644
index 0000000..50ca6a8
--- /dev/null
+++ b/lib/my/my/my_find_prime_sup.c
@@ -0,0 +1,18 @@
+/*
+** EPITECH PROJECT, 2019
+** CPool_Day05_2019
+** File description:
+** Find a prime number greater than the given number
+*/
+
+int my_is_prime(int n);
+
+int my_find_prime_sup(int n)
+{
+ if (n <= 2)
+ return (2);
+ while (!my_is_prime(n))
+ n++;
+
+ return n;
+}
diff --git a/lib/my/my/my_getnbr.c b/lib/my/my/my_getnbr.c
new file mode 100755
index 0000000..e5832e0
--- /dev/null
+++ b/lib/my/my/my_getnbr.c
@@ -0,0 +1,69 @@
+/*
+** EPITECH PROJECT, 2019
+** CPool_Day04_2019
+** File description:
+** Int parser
+*/
+
+int my_putchar(char c);
+
+static int parse(const char *str, int digit_count, int neg)
+{
+ int n = 0;
+ int add;
+ for (int power = 0; power < digit_count; power++) {
+ add = str[digit_count - power - 1] - '0';
+ if (power == 10 && add > 2)
+ return 0;
+
+ add *= neg;
+ for (int i = 0; i < power; i++) {
+ add *= 10;
+ if (add * neg < 0)
+ return 0;
+ }
+ n += add;
+
+ if ((neg == -1 && n > 0) || (neg == 1 && n < 0))
+ return 0;
+ }
+ return n;
+}
+
+static int init_print(const char *str, int count, int s_index)
+{
+ int neg = 1;
+
+ for (char c = str[s_index]; c == '-' || c == '+'; c = str[s_index]) {
+ if (c == '-')
+ neg *= -1;
+ s_index++;
+ count--;
+ }
+
+ char buf[count];
+ for (int i = 0; i < count; i++)
+ buf[i] = str[s_index + i];
+
+
+ return parse(buf, count, neg);
+}
+
+int my_getnbr(const char *str)
+{
+ int count = 0;
+ int start_index = -1;
+ char c;
+
+ for (int i = 0; 1; i++) {
+ c = str[i];
+ if ((c >= '0' && c <= '9') || c == '-' || c == '+') {
+ if (start_index == -1)
+ start_index = i;
+ count++;
+ }
+ else if (count > 0 || c == '\0')
+ break;
+ }
+ return init_print(str, count, start_index);
+}
diff --git a/lib/my/my/my_getnbr_base.c b/lib/my/my/my_getnbr_base.c
new file mode 100644
index 0000000..e309364
--- /dev/null
+++ b/lib/my/my/my_getnbr_base.c
@@ -0,0 +1,75 @@
+/*
+** EPITECH PROJECT, 2019
+** Get number with any base
+** File description:
+** Int library
+*/
+
+int my_strlen(const char *str);
+
+int my_pow(int i, int p);
+
+static int indexof(char c, const char *str)
+{
+ for (int i = 0; str[i] != '\0'; i++) {
+ if (str[i] == c)
+ return (i);
+ }
+ return (-1);
+}
+
+static int parse(char *str, const char *base, long n, int i)
+{
+ int str_length = my_strlen(str);
+ int base_length = my_strlen(base);
+ int power;
+ int neg = 1;
+
+ if (i < 0) {
+ neg = -1;
+ i *= -1;
+ }
+ power = my_pow(base_length, i - 1);
+ n += indexof(str[str_length - i], base) * power * neg;
+ if ((n > 0 && neg < 0) || (n < 0 && neg > 0))
+ return (0);
+ if (str_length - i > 0)
+ return (parse(str, base, n, (i + 1) * neg));
+ return (n);
+}
+
+static int get_digit_count(const char *str, const char *base)
+{
+ int count = 0;
+
+ for (int i = 0; str[i] != '\0'; i++) {
+ if (indexof(str[i], base) != -1)
+ count++;
+ else if (count > 0)
+ return (count);
+ }
+ return (count);
+}
+
+int my_getnbr_base(const char *str, const char *base)
+{
+ int length = get_digit_count(str, base);
+ char num[length + 1];
+ int start_index = 0;
+ int neg = 1;
+
+ if (length == 0)
+ return 0;
+ for (int i = 0; str[i] != '\0'; i++) {
+ if (indexof(str[i], base) != -1) {
+ num[start_index] = str[i];
+ start_index++;
+ }
+ else if (str[i] == '-')
+ neg *= -1;
+ else
+ break;
+ }
+ num[length] = '\0';
+ return (parse(num, base, 0, neg));
+}
diff --git a/lib/my/my/my_is_prime.c b/lib/my/my/my_is_prime.c
new file mode 100644
index 0000000..18c5723
--- /dev/null
+++ b/lib/my/my/my_is_prime.c
@@ -0,0 +1,26 @@
+/*
+** EPITECH PROJECT, 2019
+** CPool_Day05_2019
+** File description:
+** Check if a number is a prime number
+*/
+
+int my_compute_square_root(int n);
+
+int my_is_prime(int n)
+{
+ int square;
+
+ if (n <= 1)
+ return (0);
+ if (n == 2)
+ return (1);
+ for (int i = 0; i * i <= n; i++)
+ square = i;
+ for (int i = 2; i < square + 1; i++) {
+ if (n % i == 0)
+ return 0;
+ }
+
+ return (1);
+}
diff --git a/lib/my/my/my_isneg.c b/lib/my/my/my_isneg.c
new file mode 100644
index 0000000..9a91bd3
--- /dev/null
+++ b/lib/my/my/my_isneg.c
@@ -0,0 +1,17 @@
+/*
+** EPITECH PROJECT, 2019
+** CPool_Day03_2019
+** File description:
+** Task 4
+*/
+
+int my_putchar(char c);
+
+int my_isneg(int n)
+{
+ if (n < 0)
+ my_putchar('N');
+ else
+ my_putchar('P');
+ return (0);
+}
diff --git a/lib/my/my/my_print_alpha.c b/lib/my/my/my_print_alpha.c
new file mode 100644
index 0000000..9139faa
--- /dev/null
+++ b/lib/my/my/my_print_alpha.c
@@ -0,0 +1,16 @@
+/*
+** EPITECH PROJECT, 2019
+** CPool_Day03_2019
+** File description:
+** First task
+*/
+
+int my_putchar(char c);
+
+int my_print_alpha(void)
+{
+ for (char i = 'a'; i <= 'z'; i++) {
+ my_putchar(i);
+ }
+ return (0);
+}
diff --git a/lib/my/my/my_print_comb.c b/lib/my/my/my_print_comb.c
new file mode 100644
index 0000000..12b5280
--- /dev/null
+++ b/lib/my/my/my_print_comb.c
@@ -0,0 +1,46 @@
+/*
+** EPITECH PROJECT, 2019
+** CPool_Day03_2019
+** File description:
+** Task 5
+*/
+
+int my_putchar(char c);
+
+static void print_c(char x, char y, char z)
+{
+ my_putchar(x);
+ my_putchar(y);
+ my_putchar(z);
+}
+
+static void increment_y(char *x, char *y, char *z)
+{
+ *x = *x + 1;
+ *y = *x + 1;
+ *z = *y + 1;
+}
+
+int my_print_comb(void)
+{
+ char x = '0';
+ char y = '1';
+ char z = '2';
+
+ while (1) {
+ print_c(x, y, z);
+ z++;
+ if (z > '9') {
+ y++;
+ z = y + 1;
+ }
+ if (y > '8')
+ increment_y(&x, &y, &z);
+ if (x <= '7') {
+ my_putchar(',');
+ my_putchar(' ');
+ }
+ else
+ return 0;
+ }
+}
diff --git a/lib/my/my/my_print_comb2.c b/lib/my/my/my_print_comb2.c
new file mode 100644
index 0000000..fc60b16
--- /dev/null
+++ b/lib/my/my/my_print_comb2.c
@@ -0,0 +1,36 @@
+/*
+** EPITECH PROJECT, 2019
+** CPool_Day03_2019
+** File description:
+** Task 6
+*/
+
+int my_putchar(char c);
+
+static void print_c2(int i, int j)
+{
+ my_putchar('0' + i / 10);
+ my_putchar('0' + i % 10);
+ my_putchar(' ');
+ my_putchar('0' + j / 10);
+ my_putchar('0' + j % 10);
+
+ if (i != 98) {
+ my_putchar(',');
+ my_putchar(' ');
+ }
+}
+
+static void get_group2(int i)
+{
+ for (int j = i + 1; j <= 99; j++)
+ print_c2(i, j);
+}
+
+int my_print_comb2(void)
+{
+ for (int i = 0; i <= 98; i++)
+ get_group2(i);
+
+ return (0);
+}
diff --git a/lib/my/my/my_print_combn.c b/lib/my/my/my_print_combn.c
new file mode 100644
index 0000000..2907386
--- /dev/null
+++ b/lib/my/my/my_print_combn.c
@@ -0,0 +1,62 @@
+/*
+** EPITECH PROJECT, 2019
+** CPool_Day03_2019
+** File description:
+** Task 9
+*/
+
+int my_putchar(char c);
+
+static int is_nbr_valid(int n, int i)
+{
+ if (n < 9) {
+ if (n >= i)
+ return (0);
+ else
+ return (1);
+ }
+ int j = n % 10;
+
+ if (j >= i)
+ return (0);
+ return is_nbr_valid(n / 10, j);
+}
+
+static void print_cn(int n)
+{
+ if (n > 9)
+ print_cn(n / 10);
+
+ my_putchar('0' + n % 10);
+}
+
+static void process_valid_number(int n, int starting, int last_valid)
+{
+ if (last_valid) {
+ my_putchar(',');
+ my_putchar(' ');
+ }
+ if (n < starting && starting != 1)
+ my_putchar('0');
+ print_cn(n);
+}
+
+int my_print_combn(int n)
+{
+ if (n > 10)
+ return 0;
+
+ int starting = 1;
+ int last_valid = 0;
+
+ for (int i = 0; i < n - 1; i++)
+ starting *= 10;
+
+ for (int i = starting / 10; i < starting * 10; i++) {
+ if (is_nbr_valid(i, 10)) {
+ process_valid_number(i, starting, last_valid);
+ last_valid = 1;
+ }
+ }
+ return (0);
+}
diff --git a/lib/my/my/my_print_digits.c b/lib/my/my/my_print_digits.c
new file mode 100644
index 0000000..69b9d48
--- /dev/null
+++ b/lib/my/my/my_print_digits.c
@@ -0,0 +1,16 @@
+/*
+** EPITECH PROJECT, 2019
+** CPool_Day03_2019
+** File description:
+** Task 3
+*/
+
+int my_putchar(char n);
+
+int my_print_digits(void)
+{
+ for (char i = '0'; i <= '9'; i++) {
+ my_putchar(i);
+ }
+ return (0);
+}
diff --git a/lib/my/my/my_print_revalpha.c b/lib/my/my/my_print_revalpha.c
new file mode 100644
index 0000000..c70547f
--- /dev/null
+++ b/lib/my/my/my_print_revalpha.c
@@ -0,0 +1,16 @@
+/*
+** EPITECH PROJECT, 2019
+** CPool_Day03_2019
+** File description:
+** The second task
+*/
+
+int my_putchar(char c);
+
+int my_print_revalpha(void)
+{
+ for (char i = 'z'; i >= 'a'; i--) {
+ my_putchar(i);
+ }
+ return (0);
+}
diff --git a/lib/my/my/my_put_nbr.c b/lib/my/my/my_put_nbr.c
new file mode 100644
index 0000000..6291012
--- /dev/null
+++ b/lib/my/my/my_put_nbr.c
@@ -0,0 +1,30 @@
+/*
+** EPITECH PROJECT, 2019
+** CPool_Day03_2019
+** File description:
+** Task 07
+*/
+
+int my_putchar(char c);
+
+static void get_digit(long digit)
+{
+ long n = digit;
+ char c = '0' + n % 10;
+ if (n > 9) {
+ n /= 10;
+ get_digit(n);
+ }
+ my_putchar(c);
+}
+
+int my_put_nbr(int n)
+{
+ long digit = n;
+ if (n < 0) {
+ my_putchar('-');
+ digit *= -1;
+ }
+ get_digit(digit);
+ return (0);
+}
diff --git a/lib/my/my/my_putchar.c b/lib/my/my/my_putchar.c
new file mode 100644
index 0000000..9e71ab6
--- /dev/null
+++ b/lib/my/my/my_putchar.c
@@ -0,0 +1,13 @@
+/*
+** EPITECH PROJECT, 2019
+** Putchar
+** File description:
+** Yes
+*/
+
+#include
+
+void my_putchar(char c)
+{
+ write(1, &c, 1);
+}
diff --git a/lib/my/my/my_putlong_base.c b/lib/my/my/my_putlong_base.c
new file mode 100644
index 0000000..afdcd5c
--- /dev/null
+++ b/lib/my/my/my_putlong_base.c
@@ -0,0 +1,38 @@
+/*
+** EPITECH PROJECT, 2019
+** Put nbr in a custom base
+** File description:
+** Might be useful later
+*/
+
+#include
+
+int my_strlen(const char *str);
+
+static void display_a_digit(char c)
+{
+ write(1, &c, 1);
+}
+
+static void put_digit(long n, int base_length, const char *base)
+{
+ if (n > base_length - 1)
+ put_digit(n / base_length, base_length, base);
+ display_a_digit(base[n % base_length]);
+}
+
+int my_putlong_base(long nbr, const char *base)
+{
+ int base_length = my_strlen(base);
+
+ if (base_length < 2) {
+ display_a_digit('0');
+ return (0);
+ }
+ if (nbr < 0) {
+ nbr *= -1;
+ display_a_digit('-');
+ }
+ put_digit(nbr, base_length, base);
+ return (0);
+}
diff --git a/lib/my/my/my_putnbr_base.c b/lib/my/my/my_putnbr_base.c
new file mode 100644
index 0000000..ac6ad41
--- /dev/null
+++ b/lib/my/my/my_putnbr_base.c
@@ -0,0 +1,38 @@
+/*
+** EPITECH PROJECT, 2019
+** Put nbr in a custom base
+** File description:
+** Might be useful later
+*/
+
+#include
+
+int my_strlen(const char *str);
+
+static void display_a_digit(char c)
+{
+ write(1, &c, 1);
+}
+
+static void put_digit(int n, int base_length, const char *base)
+{
+ if (n > base_length - 1)
+ put_digit(n / base_length, base_length, base);
+ display_a_digit(base[n % base_length]);
+}
+
+int my_putnbr_base(int nbr, const char *base)
+{
+ int base_length = my_strlen(base);
+
+ if (base_length < 2) {
+ display_a_digit('0');
+ return (0);
+ }
+ if (nbr < 0) {
+ nbr *= -1;
+ display_a_digit('-');
+ }
+ put_digit(nbr, base_length, base);
+ return (0);
+}
diff --git a/lib/my/my/my_putstr.c b/lib/my/my/my_putstr.c
new file mode 100644
index 0000000..62611d5
--- /dev/null
+++ b/lib/my/my/my_putstr.c
@@ -0,0 +1,18 @@
+/*
+** EPITECH PROJECT, 2019
+** CPool_Day04_2019
+** File description:
+** Put string
+*/
+
+int my_putchar(char c);
+
+int my_putstr(const char *str)
+{
+ for (int i = 0; 1; i++) {
+ char c = *(str + i);
+ if (c == '\0')
+ return (0);
+ my_putchar(c);
+ }
+}
diff --git a/lib/my/my/my_revstr.c b/lib/my/my/my_revstr.c
new file mode 100644
index 0000000..1de6af6
--- /dev/null
+++ b/lib/my/my/my_revstr.c
@@ -0,0 +1,21 @@
+/*
+** EPITECH PROJECT, 2019
+** CPool_Day04_2019
+** File description:
+** Reverse string
+*/
+
+int my_strlen(char *str);
+
+char *my_revstr(char *str)
+{
+ int length = my_strlen(str);
+ char dup[length + 1];
+
+ for (int i = 0; i < length; i++)
+ dup[i] = str[i];
+ for (int i = 0; i < length; i++)
+ str[i] = dup[length - 1 - i];
+ str[length] = '\0';
+ return (str);
+}
diff --git a/lib/my/my/my_show_words_array.c b/lib/my/my/my_show_words_array.c
new file mode 100644
index 0000000..f72f5a7
--- /dev/null
+++ b/lib/my/my/my_show_words_array.c
@@ -0,0 +1,19 @@
+/*
+** EPITECH PROJECT, 2019
+** Show an array of words on the screen
+** File description:
+** Nothing to say
+*/
+
+void my_putstr(const char *str);
+
+void my_putchar(char c);
+
+int my_show_word_array(const char *words[])
+{
+ for (int i = 0; words[i]; i++) {
+ my_putstr(words[i]);
+ my_putchar('\n');
+ }
+ return (0);
+}
diff --git a/lib/my/my/my_showmem.c b/lib/my/my/my_showmem.c
new file mode 100644
index 0000000..597ca1c
--- /dev/null
+++ b/lib/my/my/my_showmem.c
@@ -0,0 +1,74 @@
+/*
+** EPITECH PROJECT, 2019
+** Memory dump
+** File description:
+** Debug Library
+*/
+
+const char *hex = "0123456789abcdef";
+
+#include "my.h"
+#include
+
+int get_size(long n, const char *base);
+
+void my_putchar(char c);
+
+int is_printable(char c);
+
+void display_x_char(char c, int count)
+{
+ for (int i = 0; i < count; i++)
+ write(1, &c, 1);
+}
+
+void print_ptr(void *ptr)
+{
+ write(1, "0x", 2);
+ my_putlong_base((long)ptr, hex);
+}
+
+void print_hexa(char *ptr, int size)
+{
+ for (int i = 0; i < 16; i++) {
+ if (i >= size) {
+ display_x_char(' ', 40 - (i * 2 + i / 2));
+ return;
+ }
+ if (ptr[i] < 16)
+ my_putchar('0');
+ my_putlong_base((long)ptr[i], hex);
+ if (i % 2 == 1)
+ my_putchar(' ');
+ }
+}
+
+void print_str_to(char *ptr, int max)
+{
+ int overflow = 0;
+
+ for (int i = 0; i < max; i++) {
+ if (overflow || !is_printable(ptr[i]))
+ my_putchar('.');
+ else
+ my_putchar(ptr[i]);
+ if (!overflow)
+ overflow = ptr[i] == '\0';
+ }
+}
+
+int my_showmem(char *str, int size)
+{
+ int padding = size % 16;
+ int line_count = padding == 0 ? size / 16 : size / 16 + 1;
+ char *ptr;
+
+ for (int i = 0; i < line_count; i++) {
+ ptr = (str + i * 16);
+ print_ptr((void *)(ptr - str));
+ print_hexa(ptr, size - i * 16);
+ print_str_to(ptr, 16);
+ my_putchar('\n');
+ }
+ return (0);
+}
diff --git a/lib/my/my/my_showstr.c b/lib/my/my/my_showstr.c
new file mode 100644
index 0000000..fdcecd2
--- /dev/null
+++ b/lib/my/my/my_showstr.c
@@ -0,0 +1,33 @@
+/*
+** EPITECH PROJECT, 2019
+** Show Str With non printable values in hexa
+** File description:
+** Debugger Library
+*/
+
+#include
+
+int is_printable(char c);
+
+int my_putnbr_base(int i, const char *base);
+
+void puthex(char c)
+{
+ write(1, "\\", 1);
+ if (c < 8)
+ write(1, "0", 1);
+ if (c < 16)
+ write(1, "0", 1);
+ my_putnbr_base(c, "01234567");
+}
+
+int my_showstr(const char *str)
+{
+ for (int i = 0; str[i]; i++) {
+ if (is_printable(str[i]))
+ write(1, &(str[i]), 1);
+ else
+ puthex(str[i]);
+ }
+ return (0);
+}
diff --git a/lib/my/my/my_sort_int_array.c b/lib/my/my/my_sort_int_array.c
new file mode 100644
index 0000000..643dc42
--- /dev/null
+++ b/lib/my/my/my_sort_int_array.c
@@ -0,0 +1,24 @@
+/*
+** EPITECH PROJECT, 2019
+** CPool_Day04_2019
+** File description:
+** Int array sorter
+*/
+
+static void sort_linear(int *array, int size)
+{
+ for (int i = 0; i < size - 1; i++) {
+ if (array[i] > array[i + 1]) {
+ int buf = array[i];
+ array[i] = array[i + 1];
+ array[i + 1] = buf;
+ }
+ }
+}
+
+int my_sort_int_array(int *array, int size)
+{
+ for (int i = 0; i < size; i++)
+ sort_linear(array, size);
+ return (0);
+}
diff --git a/lib/my/my/my_str_isalpha.c b/lib/my/my/my_str_isalpha.c
new file mode 100644
index 0000000..046c0fe
--- /dev/null
+++ b/lib/my/my/my_str_isalpha.c
@@ -0,0 +1,24 @@
+/*
+** EPITECH PROJECT, 2019
+** Str is alpha
+** File description:
+** Duplicate of the string.h (I think)
+*/
+
+int is_alpha(char c)
+{
+ if (c >= 'a' && c <= 'z')
+ return (1);
+ if (c >= 'A' && c <= 'Z')
+ return (1);
+ return (0);
+}
+
+int my_str_isalpha(const char *str)
+{
+ for (int i = 0; str[i] != '\0'; i++) {
+ if (!is_alpha(str[i]))
+ return (0);
+ }
+ return (1);
+}
diff --git a/lib/my/my/my_str_islower.c b/lib/my/my/my_str_islower.c
new file mode 100644
index 0000000..56d38c5
--- /dev/null
+++ b/lib/my/my/my_str_islower.c
@@ -0,0 +1,33 @@
+/*
+** EPITECH PROJECT, 2019
+** Str is alpha
+** File description:
+** Duplicate of the string.h (I think)
+*/
+
+int is_digit(char c);
+
+int is_lowercase(char c)
+{
+ if (c >= 'a' && c <= 'z')
+ return (1);
+ return (0);
+}
+
+int my_str_islower(const char *str)
+{
+ for (int i = 0; str[i] != '\0'; i++) {
+ if (!is_lowercase(str[i]))
+ return (0);
+ }
+ return (1);
+}
+
+int my_str_islower_or_num(const char *str)
+{
+ for (int i = 0; str[i] != '\0'; i++) {
+ if (!is_lowercase(str[i]) && !is_digit(str[i]))
+ return (0);
+ }
+ return (1);
+}
diff --git a/lib/my/my/my_str_isnum.c b/lib/my/my/my_str_isnum.c
new file mode 100644
index 0000000..2978430
--- /dev/null
+++ b/lib/my/my/my_str_isnum.c
@@ -0,0 +1,22 @@
+/*
+** EPITECH PROJECT, 2019
+** Str is alpha
+** File description:
+** Duplicate of the string.h (I think)
+*/
+
+int is_digit(char c)
+{
+ if (c >= '0' && c <= '9')
+ return (1);
+ return (0);
+}
+
+int my_str_isnum(const char *str)
+{
+ for (int i = 0; str[i] != '\0'; i++) {
+ if (!is_digit(str[i]))
+ return (0);
+ }
+ return (1);
+}
diff --git a/lib/my/my/my_str_isprintable.c b/lib/my/my/my_str_isprintable.c
new file mode 100644
index 0000000..13a8f9e
--- /dev/null
+++ b/lib/my/my/my_str_isprintable.c
@@ -0,0 +1,22 @@
+/*
+** EPITECH PROJECT, 2019
+** Str is alpha
+** File description:
+** Duplicate of the string.h (I think)
+*/
+
+int is_printable(char c)
+{
+ if (c >= ' ' && c < 127)
+ return (1);
+ return (0);
+}
+
+int my_str_isprintable(const char *str)
+{
+ for (int i = 0; str[i] != '\0'; i++) {
+ if (!is_printable(str[i]))
+ return (0);
+ }
+ return (1);
+}
diff --git a/lib/my/my/my_str_isupper.c b/lib/my/my/my_str_isupper.c
new file mode 100644
index 0000000..ec4c8f7
--- /dev/null
+++ b/lib/my/my/my_str_isupper.c
@@ -0,0 +1,22 @@
+/*
+** EPITECH PROJECT, 2019
+** Str is alpha
+** File description:
+** Duplicate of the string.h (I think)
+*/
+
+int is_upper(char c)
+{
+ if (c >= 'A' && c <= 'Z')
+ return (1);
+ return (0);
+}
+
+int my_str_isupper(const char *str)
+{
+ for (int i = 0; str[i] != '\0'; i++) {
+ if (!is_upper(str[i]))
+ return (0);
+ }
+ return (1);
+}
diff --git a/lib/my/my/my_str_to_word_array.c b/lib/my/my/my_str_to_word_array.c
new file mode 100644
index 0000000..97a191a
--- /dev/null
+++ b/lib/my/my/my_str_to_word_array.c
@@ -0,0 +1,70 @@
+/*
+** EPITECH PROJECT, 2019
+** Convert a string to a char **
+** File description:
+** Split with every non alpha-numerical characters
+*/
+
+#include
+
+int is_alphanum(char c);
+
+int first_alphanum(const char *str);
+
+static int count_words(const char *str)
+{
+ int count = 1;
+
+ if (first_alphanum(str) == -1)
+ return (0);
+ for (int i = first_alphanum(str); str[i + 1]; i++) {
+ if (!is_alphanum(str[i]) && is_alphanum(str[i + 1]))
+ count++;
+ }
+ return (count);
+}
+
+static int get_word_length(const char *str, int n)
+{
+ int count = 0;
+ int word_length = 0;
+
+ for (int i = first_alphanum(str); str[i]; i++) {
+ if (!is_alphanum(str[i]) && is_alphanum(str[i + 1]))
+ count++;
+ else if (count == n && is_alphanum(str[i]))
+ word_length++;
+ }
+ return (word_length);
+}
+
+static char *get_word(const char *str, int n)
+{
+ int length = get_word_length(str, n);
+ char *ret = malloc(sizeof(*ret) * (length + 1));
+ int count = 0;
+ int word_length = 0;
+
+ for (int i = first_alphanum(str); word_length != length; i++) {
+ if (!is_alphanum(str[i]) && is_alphanum(str[i + 1]))
+ count++;
+ else if (count == n) {
+ ret[word_length] = str[i];
+ word_length++;
+ }
+ }
+ ret[length] = '\0';
+ return (ret);
+}
+
+char **my_str_to_word_array(const char *str)
+{
+ int count = count_words(str);
+ char **ret = malloc(sizeof(*ret) * (count + 1));
+
+ for (int i = 0; i < count; i++) {
+ ret[i] = get_word(str, i);
+ }
+ ret[count] = 0;
+ return (ret);
+}
diff --git a/lib/my/my/my_strcapitalize.c b/lib/my/my/my_strcapitalize.c
new file mode 100644
index 0000000..65b932f
--- /dev/null
+++ b/lib/my/my/my_strcapitalize.c
@@ -0,0 +1,32 @@
+/*
+** EPITECH PROJECT, 2019
+** ToUpercase
+** File description:
+** string.h
+*/
+
+int is_num(char c)
+{
+ return (c >= '0' && c <= '9');
+}
+
+int is_letter(char c)
+{
+ return ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'));
+}
+
+char *my_strcapitalize(char *str)
+{
+ int capitalize_next = 1;
+
+ for (int i = 0; str[i] != '\0'; i++) {
+ if (capitalize_next && str[i] > 'a' && str[i] < 'z')
+ str[i] += 'A' - 'a';
+
+ if (is_num(str[i]) || is_letter(str[i]))
+ capitalize_next = 1;
+ else
+ capitalize_next = 0;
+ }
+ return (str);
+}
diff --git a/lib/my/my/my_strcat.c b/lib/my/my/my_strcat.c
new file mode 100644
index 0000000..1bc8e8e
--- /dev/null
+++ b/lib/my/my/my_strcat.c
@@ -0,0 +1,19 @@
+/*
+** EPITECH PROJECT, 2019
+** String cat
+** File description:
+** The end of the string.h lib
+*/
+
+int my_strlen(const char *dest);
+
+char *my_strcat(char *dest, const char *src)
+{
+ int i;
+ int dest_length = my_strlen(dest);
+
+ for (i = 0; src[i]; i++)
+ dest[dest_length + i] = src[i];
+ dest[dest_length + i] = '\0';
+ return (dest);
+}
diff --git a/lib/my/my/my_strchr.c b/lib/my/my/my_strchr.c
new file mode 100644
index 0000000..8bd6717
--- /dev/null
+++ b/lib/my/my/my_strchr.c
@@ -0,0 +1,17 @@
+/*
+** EPITECH PROJECT, 2019
+** MUL_my_runner_2019
+** File description:
+** my_strchr
+*/
+
+#include "stddef.h"
+
+char *my_strchr(char *str, char c)
+{
+ for (int i = 0; str[i]; i++) {
+ if (str[i] == c)
+ return (&str[i]);
+ }
+ return (NULL);
+}
\ No newline at end of file
diff --git a/lib/my/my/my_strcmp.c b/lib/my/my/my_strcmp.c
new file mode 100644
index 0000000..e3a4972
--- /dev/null
+++ b/lib/my/my/my_strcmp.c
@@ -0,0 +1,25 @@
+/*
+** EPITECH PROJECT, 2019
+** StrCmp
+** File description:
+** String.h duplicate
+*/
+
+int my_strcmp(const char *str1, const char *str2)
+{
+ int i;
+ int ret;
+
+ for (i = 0; str1[i] != '\0'; i++) {
+ if (str2[i] == '\0')
+ return str1[i];
+ ret = str1[i] - str2[i];
+ if (ret != 0)
+ return (ret);
+ }
+
+ if (str2[i] == '\0')
+ return (0);
+ else
+ return -str2[i];
+}
diff --git a/lib/my/my/my_strcpy.c b/lib/my/my/my_strcpy.c
new file mode 100644
index 0000000..a1bf550
--- /dev/null
+++ b/lib/my/my/my_strcpy.c
@@ -0,0 +1,16 @@
+/*
+** EPITECH PROJECT, 2019
+** String copy
+** File description:
+** Copy an entire string
+*/
+
+char *my_strcpy(char *dest, const char *src)
+{
+ int i;
+
+ for (i = 0; src[i] != '\0'; i++)
+ dest[i] = src[i];
+ dest[i] = '\0';
+ return (dest);
+}
diff --git a/lib/my/my/my_strdup.c b/lib/my/my/my_strdup.c
new file mode 100644
index 0000000..1ae14cc
--- /dev/null
+++ b/lib/my/my/my_strdup.c
@@ -0,0 +1,21 @@
+/*
+** EPITECH PROJECT, 2019
+** Str dup replicate
+** File description:
+** MALLOC YES
+*/
+
+#include
+
+int my_strlen(const char *src);
+
+char *my_strdup(const char *src)
+{
+ int length = my_strlen(src);
+ char *ret = malloc(sizeof(char) * (length + 1));
+
+ for (int i = 0; i < length; i++)
+ ret[i] = src[i];
+ ret[length] = '\0';
+ return (ret);
+}
diff --git a/lib/my/my/my_strlen.c b/lib/my/my/my_strlen.c
new file mode 100644
index 0000000..82c15a2
--- /dev/null
+++ b/lib/my/my/my_strlen.c
@@ -0,0 +1,14 @@
+/*
+** EPITECH PROJECT, 2019
+** CPool_Day04_2019
+** File description:
+** Strlen
+*/
+
+int my_strlen(const char *str)
+{
+ for (int i = 0; 1; i++) {
+ if (*(str + i) == '\0')
+ return i;
+ }
+}
diff --git a/lib/my/my/my_strlowcase.c b/lib/my/my/my_strlowcase.c
new file mode 100644
index 0000000..54adc9b
--- /dev/null
+++ b/lib/my/my/my_strlowcase.c
@@ -0,0 +1,15 @@
+/*
+** EPITECH PROJECT, 2019
+** ToUpercase
+** File description:
+** string.h
+*/
+
+char *my_strlowcase(char *str)
+{
+ for (int i = 0; str[i] != '\0'; i++) {
+ if (str[i] > 'A' && str[i] < 'Z')
+ str[i] += 'a' - 'A';
+ }
+ return (str);
+}
diff --git a/lib/my/my/my_strncat.c b/lib/my/my/my_strncat.c
new file mode 100644
index 0000000..7e5622d
--- /dev/null
+++ b/lib/my/my/my_strncat.c
@@ -0,0 +1,19 @@
+/*
+** EPITECH PROJECT, 2019
+** String N Cat
+** File description:
+** End of the string.h lib
+*/
+
+int my_strlen(const char *str);
+
+char *my_strncat(char *dest, const char *src, int n)
+{
+ int i;
+ int dest_length = my_strlen(dest);
+
+ for (i = 0; i < n && src[i]; i++)
+ dest[dest_length + i] = src[i];
+ dest[dest_length + i] = '\0';
+ return (dest);
+}
diff --git a/lib/my/my/my_strncmp.c b/lib/my/my/my_strncmp.c
new file mode 100644
index 0000000..c5918a1
--- /dev/null
+++ b/lib/my/my/my_strncmp.c
@@ -0,0 +1,25 @@
+/*
+** EPITECH PROJECT, 2019
+** StrNCmp
+** File description:
+** String.h duplicate
+*/
+
+int my_strncmp(const char *str1, const char *str2, int n)
+{
+ int i;
+ int ret;
+
+ for (i = 0; i < n && str1[i] != '\0'; i++) {
+ if (str2[i] == '\0')
+ return str1[i];
+ ret = str1[i] - str2[i];
+ if (ret != 0)
+ return (ret);
+ }
+
+ if (i == n || str2[i] == '\0')
+ return (0);
+ else
+ return -str2[i];
+}
diff --git a/lib/my/my/my_strncpy.c b/lib/my/my/my_strncpy.c
new file mode 100644
index 0000000..cd39de4
--- /dev/null
+++ b/lib/my/my/my_strncpy.c
@@ -0,0 +1,21 @@
+/*
+** EPITECH PROJECT, 2019
+** String copy n first chars
+** File description:
+** Same but different
+*/
+
+char *my_strncpy(char *dest, const char* src, int n)
+{
+ int overflow = 0;
+
+ for (int i = 0; i < n; i++) {
+ if (overflow)
+ dest[i] = '\0';
+ else {
+ dest[i] = src[i];
+ overflow = (src[i] == '\0');
+ }
+ }
+ return (dest);
+}
diff --git a/lib/my/my/my_strstr.c b/lib/my/my/my_strstr.c
new file mode 100644
index 0000000..b93e9a8
--- /dev/null
+++ b/lib/my/my/my_strstr.c
@@ -0,0 +1,26 @@
+/*
+** EPITECH PROJECT, 2019
+** StrStr duplicate
+** File description:
+** A search in string function
+*/
+
+char *my_strstr(char *str, const char *to_find)
+{
+ int i;
+ int search_index = 0;
+
+ for (i = 0; str[i] != '\0'; i++) {
+ if (to_find[search_index] == '\0')
+ return (str + i - search_index);
+ if (str[i] == to_find[search_index])
+ search_index++;
+ else if (str[i] == to_find[0])
+ search_index = 1;
+ else
+ search_index = 0;
+ }
+ if (to_find[search_index] == '\0')
+ return (str + i - search_index);
+ return 0;
+}
diff --git a/lib/my/my/my_strupcase.c b/lib/my/my/my_strupcase.c
new file mode 100644
index 0000000..e2e87cc
--- /dev/null
+++ b/lib/my/my/my_strupcase.c
@@ -0,0 +1,15 @@
+/*
+** EPITECH PROJECT, 2019
+** ToUpercase
+** File description:
+** string.h
+*/
+
+char *my_strupcase(char *str)
+{
+ for (int i = 0; str[i] != '\0'; i++) {
+ if (str[i] > 'a' && str[i] < 'z')
+ str[i] += 'A' - 'a';
+ }
+ return (str);
+}
diff --git a/lib/my/my/my_swap.c b/lib/my/my/my_swap.c
new file mode 100644
index 0000000..84ff01c
--- /dev/null
+++ b/lib/my/my/my_swap.c
@@ -0,0 +1,13 @@
+/*
+** EPITECH PROJECT, 2019
+** CPool_Day04_2019
+** File description:
+** Swap int
+*/
+
+void my_swap(int *a, int *b)
+{
+ int n = *a;
+ *a = *b;
+ *b = n;
+}
diff --git a/lib/my/my/tostr.c b/lib/my/my/tostr.c
new file mode 100644
index 0000000..ce3e977
--- /dev/null
+++ b/lib/my/my/tostr.c
@@ -0,0 +1,60 @@
+/*
+** EPITECH PROJECT, 2019
+** Convering Between bases
+** File description:
+** Moldavie-Land
+*/
+
+#include
+
+static void put_digit(int n, const char *base, char *ret, int i)
+{
+ int base_length = 10;
+
+ if (n > base_length - 1)
+ put_digit(n / base_length, base, ret, i - 1);
+ ret[i] = base[n % base_length];
+}
+
+char *putnbr_in(int nbr, const char *base, char *ret, int ret_length)
+{
+ int base_length = 10;
+ int i = ret_length;
+
+ if (base_length < 2) {
+ ret = "0";
+ return (ret);
+ }
+ if (nbr < 0) {
+ nbr *= -1;
+ ret[0] = '-';
+ } else {
+ i--;
+ ret[i] = '\0';
+ }
+ put_digit(nbr, base, ret, i);
+ return (ret);
+}
+
+int get_new_size(int n)
+{
+ int base_size = 10;
+ int i = 1;
+
+ while (n >= base_size) {
+ n /= base_size;
+ i++;
+ }
+ return (i);
+}
+
+char *tostr(int n)
+{
+ const char *base = "0123456789";
+ int count = get_new_size(n);
+ char *ret = malloc(sizeof(char) * (count + 1));
+
+ putnbr_in(n, base, ret, count);
+ ret[count] = '\0';
+ return (ret);
+}
diff --git a/lib/my/my/utility.c b/lib/my/my/utility.c
new file mode 100644
index 0000000..291e646
--- /dev/null
+++ b/lib/my/my/utility.c
@@ -0,0 +1,20 @@
+/*
+** EPITECH PROJECT, 2019
+** Utility for the showmem
+** File description:
+** utility
+*/
+
+#include "my.h"
+
+int get_size(long n, const char *base)
+{
+ int base_size = my_strlen(base);
+ int i = 1;
+
+ while (n >= base_size) {
+ n /= base_size;
+ i++;
+ }
+ return (i);
+}
\ No newline at end of file
diff --git a/lib/my/my_compute_factorial_it.o b/lib/my/my_compute_factorial_it.o
new file mode 100644
index 0000000000000000000000000000000000000000..16e0397faeddcdf5be300fa83f998c589ebb7f89
GIT binary patch
literal 1296
zcmbtTJ4*vW5T48Vek&G2EMldCSws=kLL%W*L`1}t63%!*(KC`;!3fdfKnONAfw%XRVq=AURc%cTdPvCs=iw>{9^ShrJDOWAvFadVv`CV)&3E;jN0OaQr2`JUR0l;sxEnVfrg#GQ23&hT7*
z*WOR>a+awV2};KTRh#6;G|Vfw+};A_@qD0nq{W?M4s6@zHn1(v1BQ)V=K!&T9CsLA
zRNUisW)E22*|(Xqlg{RC*Abomr)YkmiSkGr%2S}A6*X~nKH>V=6XizqpCm^Seg0mIh4J4-;)cQ{
HQ|EsI8O>yh
literal 0
HcmV?d00001
diff --git a/lib/my/my_compute_factorial_rec.o b/lib/my/my_compute_factorial_rec.o
new file mode 100644
index 0000000000000000000000000000000000000000..f76995af54a0d66f4cba6295ebb6cd56267ce616
GIT binary patch
literal 1544
zcmbtTL2DC16n>kvP1I^*5h>I|1Q825SWjBCtc2Jgq96qH6t?NM6}wH@Y#N2zcBOOeDl6HZ{AK`)b8IcSQZH^TA{<0
zutX*M(03Bop&2?!je7L0KKxmZ265D#3KpP_IP$wi{HbGKI=eQtyY&SmscM&7ArT^b#)DT;B0Ehdj5#4
zUfEihDVAQb^gQzzzzU{2r^_!3)l<`b4&WvBZh>bkVv_y!bRSe6P}MQ|y`Q&d=XQ?B
z=3gFc&Xfn6rt@gdQapm6`isZ?<}&ppJz(yl=4GAS9csVdY_h%54U1J*tsofGU@U~qQ
zdcBa;x*NKr);b+hT($4*Ft^hVJ;g8QYA1AC&qyWV-d1xXaD7kC{a;(*1b7?fmvfi{
zHdAvjBQ}c#UZ6)#mSn%Kn^)Od(n)V)k%4*tGrX6lf1~wJGFrH%{tvYMj?@4E
literal 0
HcmV?d00001
diff --git a/lib/my/my_compute_power_it.o b/lib/my/my_compute_power_it.o
new file mode 100644
index 0000000000000000000000000000000000000000..7e95ece18d48f7aaf4265d42b94815588426d0a4
GIT binary patch
literal 1320
zcmbtTze^)Q6n>L<{<>462nvxif}nyo9D<-0MN?7AcMAt}mf<_1y3qr8D
z_Wp`%ENn$kOG`U#4#Jtn>b4N{z0FJ<*R|0HyYIbkzHi>lyqSID$4rDVP{!aJJY@<6
z$VQ&xq#q{XBecTOT={RgR4o@O=Y~hZbK{6nqZL0}HFt`(Fjs&(B46`a6$xus0ADqQ34FzIfMWsM+CpqACoGQr_~HmNvjIGB
zZJON5rq}YOZTWTH`-|fQ)RW-JB;~~QeaoD+)9pC~9d=
zx~saW`dvDRv8u29xQ6M}Gd