From 6f1b66db4626a8d87fae09981994287a42687cde Mon Sep 17 00:00:00 2001 From: tomoron Date: Sat, 14 Dec 2024 16:20:47 +0100 Subject: [PATCH] day 14 done --- 2024/14/Makefile | 6 +- 2024/14/a.out | Bin 44304 -> 0 bytes 2024/14/libft/Makefile | 99 -------------- 2024/14/libft/ft_atoi.c | 35 ----- 2024/14/libft/ft_atoi.o | Bin 3288 -> 0 bytes 2024/14/libft/ft_bzero.c | 26 ---- 2024/14/libft/ft_bzero.o | Bin 3216 -> 0 bytes 2024/14/libft/ft_calloc.c | 31 ----- 2024/14/libft/ft_calloc.o | Bin 3640 -> 0 bytes 2024/14/libft/ft_free_str_arr.c | 27 ---- 2024/14/libft/ft_free_str_arr.o | Bin 3104 -> 0 bytes 2024/14/libft/ft_isalnum.c | 19 --- 2024/14/libft/ft_isalnum.o | Bin 2824 -> 0 bytes 2024/14/libft/ft_isalpha.c | 18 --- 2024/14/libft/ft_isalpha.o | Bin 2784 -> 0 bytes 2024/14/libft/ft_isascii.c | 18 --- 2024/14/libft/ft_isascii.o | Bin 2760 -> 0 bytes 2024/14/libft/ft_isdigit.c | 18 --- 2024/14/libft/ft_isdigit.o | Bin 2760 -> 0 bytes 2024/14/libft/ft_isprint.c | 18 --- 2024/14/libft/ft_isprint.o | Bin 2760 -> 0 bytes 2024/14/libft/ft_itoa.c | 60 --------- 2024/14/libft/ft_itoa.o | Bin 3872 -> 0 bytes 2024/14/libft/ft_lstadd_back.c | 27 ---- 2024/14/libft/ft_lstadd_front.c | 19 --- 2024/14/libft/ft_lstclear.c | 27 ---- 2024/14/libft/ft_lstdelone.c | 20 --- 2024/14/libft/ft_lstiter.c | 21 --- 2024/14/libft/ft_lstlast.c | 19 --- 2024/14/libft/ft_lstmap.c | 41 ------ 2024/14/libft/ft_lstnew.c | 25 ---- 2024/14/libft/ft_lstsize.c | 26 ---- 2024/14/libft/ft_memchr.c | 28 ---- 2024/14/libft/ft_memchr.o | Bin 3432 -> 0 bytes 2024/14/libft/ft_memcmp.c | 28 ---- 2024/14/libft/ft_memcmp.o | Bin 3568 -> 0 bytes 2024/14/libft/ft_memcpy.c | 29 ----- 2024/14/libft/ft_memcpy.o | Bin 3456 -> 0 bytes 2024/14/libft/ft_memmove.c | 32 ----- 2024/14/libft/ft_memmove.o | Bin 3592 -> 0 bytes 2024/14/libft/ft_memset.c | 27 ---- 2024/14/libft/ft_memset.o | Bin 3352 -> 0 bytes 2024/14/libft/ft_printf/Makefile | 52 -------- 2024/14/libft/ft_printf/ft_convert.c | 85 ------------ 2024/14/libft/ft_printf/ft_convert.o | Bin 4128 -> 0 bytes 2024/14/libft/ft_printf/ft_isdigit.c | 18 --- 2024/14/libft/ft_printf/ft_isdigit.o | Bin 1000 -> 0 bytes 2024/14/libft/ft_printf/ft_parse_arg.c | 89 ------------- 2024/14/libft/ft_printf/ft_parse_arg.o | Bin 3344 -> 0 bytes 2024/14/libft/ft_printf/ft_print_hex_ptr.c | 97 -------------- 2024/14/libft/ft_printf/ft_print_hex_ptr.o | Bin 3632 -> 0 bytes 2024/14/libft/ft_printf/ft_print_int.c | 99 -------------- 2024/14/libft/ft_printf/ft_print_int.o | Bin 3136 -> 0 bytes .../libft/ft_printf/ft_print_unsigned_int.c | 55 -------- .../libft/ft_printf/ft_print_unsigned_int.o | Bin 1944 -> 0 bytes 2024/14/libft/ft_printf/ft_printf.c | 67 ---------- 2024/14/libft/ft_printf/ft_printf.h | 46 ------- 2024/14/libft/ft_printf/ft_printf.o | Bin 2224 -> 0 bytes 2024/14/libft/ft_printf/ft_protected_atoi.c | 37 ------ 2024/14/libft/ft_printf/ft_protected_atoi.o | Bin 1296 -> 0 bytes 2024/14/libft/ft_printf/ft_putchar.c | 18 --- 2024/14/libft/ft_printf/ft_putchar.o | Bin 1120 -> 0 bytes 2024/14/libft/ft_printf/ft_putstr.c | 19 --- 2024/14/libft/ft_printf/ft_putstr.o | Bin 1224 -> 0 bytes 2024/14/libft/ft_printf/ft_strlen.c | 22 ---- 2024/14/libft/ft_printf/ft_strlen.o | Bin 1000 -> 0 bytes 2024/14/libft/ft_printf/ft_write_str_part.c | 26 ---- 2024/14/libft/ft_printf/ft_write_str_part.o | Bin 1240 -> 0 bytes 2024/14/libft/ft_printf/libftprintf.a | Bin 26786 -> 0 bytes 2024/14/libft/ft_putchar_fd.c | 17 --- 2024/14/libft/ft_putchar_fd.o | Bin 2944 -> 0 bytes 2024/14/libft/ft_putendl_fd.c | 21 --- 2024/14/libft/ft_putendl_fd.o | Bin 3424 -> 0 bytes 2024/14/libft/ft_putnbr_fd.c | 33 ----- 2024/14/libft/ft_putnbr_fd.o | Bin 3680 -> 0 bytes 2024/14/libft/ft_putstr_fd.c | 18 --- 2024/14/libft/ft_putstr_fd.o | Bin 3048 -> 0 bytes 2024/14/libft/ft_set_color.c | 23 ---- 2024/14/libft/ft_set_color.o | Bin 3696 -> 0 bytes 2024/14/libft/ft_split.c | 73 ----------- 2024/14/libft/ft_split.o | Bin 5032 -> 0 bytes 2024/14/libft/ft_split_set.c | 84 ------------ 2024/14/libft/ft_split_set.o | Bin 5648 -> 0 bytes 2024/14/libft/ft_strchr.c | 30 ----- 2024/14/libft/ft_strchr.o | Bin 3176 -> 0 bytes 2024/14/libft/ft_strcmp.c | 34 ----- 2024/14/libft/ft_strcmp.o | Bin 3952 -> 0 bytes 2024/14/libft/ft_strdup.c | 36 ----- 2024/14/libft/ft_strdup.o | Bin 3344 -> 0 bytes 2024/14/libft/ft_striteri.c | 23 ---- 2024/14/libft/ft_striteri.o | Bin 3064 -> 0 bytes 2024/14/libft/ft_strjoin.c | 63 --------- 2024/14/libft/ft_strjoin.o | Bin 4016 -> 0 bytes 2024/14/libft/ft_strlcat.c | 38 ------ 2024/14/libft/ft_strlcat.o | Bin 3944 -> 0 bytes 2024/14/libft/ft_strlcpy.c | 32 ----- 2024/14/libft/ft_strlcpy.o | Bin 3672 -> 0 bytes 2024/14/libft/ft_strlen.c | 22 ---- 2024/14/libft/ft_strlen.o | Bin 3152 -> 0 bytes 2024/14/libft/ft_strmapi.c | 33 ----- 2024/14/libft/ft_strmapi.o | Bin 3464 -> 0 bytes 2024/14/libft/ft_strnstr.c | 39 ------ 2024/14/libft/ft_strnstr.o | Bin 3928 -> 0 bytes 2024/14/libft/ft_strrchr.c | 30 ----- 2024/14/libft/ft_strrchr.o | Bin 3152 -> 0 bytes 2024/14/libft/ft_strtrim.c | 78 ----------- 2024/14/libft/ft_strtrim.o | Bin 4512 -> 0 bytes 2024/14/libft/ft_substr.c | 37 ------ 2024/14/libft/ft_substr.o | Bin 3904 -> 0 bytes 2024/14/libft/ft_swap.c | 20 --- 2024/14/libft/ft_tolower.c | 18 --- 2024/14/libft/ft_tolower.o | Bin 2752 -> 0 bytes 2024/14/libft/ft_toupper.c | 18 --- 2024/14/libft/ft_toupper.o | Bin 2752 -> 0 bytes 2024/14/libft/gnl/Makefile | 42 ------ 2024/14/libft/gnl/get_next_line_bonus.c | 113 ---------------- 2024/14/libft/gnl/get_next_line_bonus.h | 46 ------- 2024/14/libft/gnl/get_next_line_bonus.o | Bin 3128 -> 0 bytes 2024/14/libft/gnl/get_next_line_utils_bonus.c | 119 ----------------- 2024/14/libft/gnl/get_next_line_utils_bonus.o | Bin 2768 -> 0 bytes 2024/14/libft/gnl/gnl.a | Bin 33020 -> 0 bytes 2024/14/libft/libft.a | Bin 162412 -> 0 bytes 2024/14/libft/libft.h | 77 ----------- 2024/14/main.o | Bin 5880 -> 0 bytes 2024/14/mlx | 1 - 2024/14/part1.o | Bin 6424 -> 0 bytes 2024/14/part2.c | 123 ++++++++---------- 2024/14/part2.o | Bin 13920 -> 0 bytes 2024/14/test | 23 ++-- 129 files changed, 68 insertions(+), 2770 deletions(-) delete mode 100755 2024/14/a.out delete mode 100755 2024/14/libft/Makefile delete mode 100755 2024/14/libft/ft_atoi.c delete mode 100644 2024/14/libft/ft_atoi.o delete mode 100755 2024/14/libft/ft_bzero.c delete mode 100644 2024/14/libft/ft_bzero.o delete mode 100755 2024/14/libft/ft_calloc.c delete mode 100644 2024/14/libft/ft_calloc.o delete mode 100755 2024/14/libft/ft_free_str_arr.c delete mode 100644 2024/14/libft/ft_free_str_arr.o delete mode 100755 2024/14/libft/ft_isalnum.c delete mode 100644 2024/14/libft/ft_isalnum.o delete mode 100755 2024/14/libft/ft_isalpha.c delete mode 100644 2024/14/libft/ft_isalpha.o delete mode 100755 2024/14/libft/ft_isascii.c delete mode 100644 2024/14/libft/ft_isascii.o delete mode 100755 2024/14/libft/ft_isdigit.c delete mode 100644 2024/14/libft/ft_isdigit.o delete mode 100755 2024/14/libft/ft_isprint.c delete mode 100644 2024/14/libft/ft_isprint.o delete mode 100755 2024/14/libft/ft_itoa.c delete mode 100644 2024/14/libft/ft_itoa.o delete mode 100755 2024/14/libft/ft_lstadd_back.c delete mode 100755 2024/14/libft/ft_lstadd_front.c delete mode 100755 2024/14/libft/ft_lstclear.c delete mode 100755 2024/14/libft/ft_lstdelone.c delete mode 100755 2024/14/libft/ft_lstiter.c delete mode 100755 2024/14/libft/ft_lstlast.c delete mode 100755 2024/14/libft/ft_lstmap.c delete mode 100755 2024/14/libft/ft_lstnew.c delete mode 100755 2024/14/libft/ft_lstsize.c delete mode 100755 2024/14/libft/ft_memchr.c delete mode 100644 2024/14/libft/ft_memchr.o delete mode 100755 2024/14/libft/ft_memcmp.c delete mode 100644 2024/14/libft/ft_memcmp.o delete mode 100755 2024/14/libft/ft_memcpy.c delete mode 100644 2024/14/libft/ft_memcpy.o delete mode 100755 2024/14/libft/ft_memmove.c delete mode 100644 2024/14/libft/ft_memmove.o delete mode 100755 2024/14/libft/ft_memset.c delete mode 100644 2024/14/libft/ft_memset.o delete mode 100755 2024/14/libft/ft_printf/Makefile delete mode 100755 2024/14/libft/ft_printf/ft_convert.c delete mode 100644 2024/14/libft/ft_printf/ft_convert.o delete mode 100755 2024/14/libft/ft_printf/ft_isdigit.c delete mode 100644 2024/14/libft/ft_printf/ft_isdigit.o delete mode 100755 2024/14/libft/ft_printf/ft_parse_arg.c delete mode 100644 2024/14/libft/ft_printf/ft_parse_arg.o delete mode 100755 2024/14/libft/ft_printf/ft_print_hex_ptr.c delete mode 100644 2024/14/libft/ft_printf/ft_print_hex_ptr.o delete mode 100755 2024/14/libft/ft_printf/ft_print_int.c delete mode 100644 2024/14/libft/ft_printf/ft_print_int.o delete mode 100755 2024/14/libft/ft_printf/ft_print_unsigned_int.c delete mode 100644 2024/14/libft/ft_printf/ft_print_unsigned_int.o delete mode 100755 2024/14/libft/ft_printf/ft_printf.c delete mode 100755 2024/14/libft/ft_printf/ft_printf.h delete mode 100644 2024/14/libft/ft_printf/ft_printf.o delete mode 100755 2024/14/libft/ft_printf/ft_protected_atoi.c delete mode 100644 2024/14/libft/ft_printf/ft_protected_atoi.o delete mode 100755 2024/14/libft/ft_printf/ft_putchar.c delete mode 100644 2024/14/libft/ft_printf/ft_putchar.o delete mode 100755 2024/14/libft/ft_printf/ft_putstr.c delete mode 100644 2024/14/libft/ft_printf/ft_putstr.o delete mode 100755 2024/14/libft/ft_printf/ft_strlen.c delete mode 100644 2024/14/libft/ft_printf/ft_strlen.o delete mode 100755 2024/14/libft/ft_printf/ft_write_str_part.c delete mode 100644 2024/14/libft/ft_printf/ft_write_str_part.o delete mode 100644 2024/14/libft/ft_printf/libftprintf.a delete mode 100755 2024/14/libft/ft_putchar_fd.c delete mode 100644 2024/14/libft/ft_putchar_fd.o delete mode 100755 2024/14/libft/ft_putendl_fd.c delete mode 100644 2024/14/libft/ft_putendl_fd.o delete mode 100755 2024/14/libft/ft_putnbr_fd.c delete mode 100644 2024/14/libft/ft_putnbr_fd.o delete mode 100755 2024/14/libft/ft_putstr_fd.c delete mode 100644 2024/14/libft/ft_putstr_fd.o delete mode 100755 2024/14/libft/ft_set_color.c delete mode 100644 2024/14/libft/ft_set_color.o delete mode 100755 2024/14/libft/ft_split.c delete mode 100644 2024/14/libft/ft_split.o delete mode 100755 2024/14/libft/ft_split_set.c delete mode 100644 2024/14/libft/ft_split_set.o delete mode 100755 2024/14/libft/ft_strchr.c delete mode 100644 2024/14/libft/ft_strchr.o delete mode 100755 2024/14/libft/ft_strcmp.c delete mode 100644 2024/14/libft/ft_strcmp.o delete mode 100755 2024/14/libft/ft_strdup.c delete mode 100644 2024/14/libft/ft_strdup.o delete mode 100755 2024/14/libft/ft_striteri.c delete mode 100644 2024/14/libft/ft_striteri.o delete mode 100755 2024/14/libft/ft_strjoin.c delete mode 100644 2024/14/libft/ft_strjoin.o delete mode 100755 2024/14/libft/ft_strlcat.c delete mode 100644 2024/14/libft/ft_strlcat.o delete mode 100755 2024/14/libft/ft_strlcpy.c delete mode 100644 2024/14/libft/ft_strlcpy.o delete mode 100755 2024/14/libft/ft_strlen.c delete mode 100644 2024/14/libft/ft_strlen.o delete mode 100755 2024/14/libft/ft_strmapi.c delete mode 100644 2024/14/libft/ft_strmapi.o delete mode 100755 2024/14/libft/ft_strnstr.c delete mode 100644 2024/14/libft/ft_strnstr.o delete mode 100755 2024/14/libft/ft_strrchr.c delete mode 100644 2024/14/libft/ft_strrchr.o delete mode 100755 2024/14/libft/ft_strtrim.c delete mode 100644 2024/14/libft/ft_strtrim.o delete mode 100755 2024/14/libft/ft_substr.c delete mode 100644 2024/14/libft/ft_substr.o delete mode 100755 2024/14/libft/ft_swap.c delete mode 100755 2024/14/libft/ft_tolower.c delete mode 100644 2024/14/libft/ft_tolower.o delete mode 100755 2024/14/libft/ft_toupper.c delete mode 100644 2024/14/libft/ft_toupper.o delete mode 100755 2024/14/libft/gnl/Makefile delete mode 100755 2024/14/libft/gnl/get_next_line_bonus.c delete mode 100755 2024/14/libft/gnl/get_next_line_bonus.h delete mode 100644 2024/14/libft/gnl/get_next_line_bonus.o delete mode 100755 2024/14/libft/gnl/get_next_line_utils_bonus.c delete mode 100644 2024/14/libft/gnl/get_next_line_utils_bonus.o delete mode 100644 2024/14/libft/gnl/gnl.a delete mode 100644 2024/14/libft/libft.a delete mode 100755 2024/14/libft/libft.h delete mode 100644 2024/14/main.o delete mode 160000 2024/14/mlx delete mode 100644 2024/14/part1.o delete mode 100644 2024/14/part2.o diff --git a/2024/14/Makefile b/2024/14/Makefile index 0aa7ff9..22de7c4 100644 --- a/2024/14/Makefile +++ b/2024/14/Makefile @@ -6,7 +6,7 @@ # By: tomoron +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2024/07/17 15:48:36 by tomoron #+# #+# # -# Updated: 2024/12/14 14:02:58 by tomoron ### ########.fr # +# Updated: 2024/12/14 15:46:23 by tomoron ### ########.fr # # # # **************************************************************************** # @@ -16,7 +16,7 @@ SRCS = main.c\ OBJS = $(SRCS:.c=.o) -FLAGS = -Wextra -Werror -Wall -g +FLAGS = -Wextra -Werror -Wall -g -O0 LIB = libft/libft.a @@ -54,7 +54,7 @@ part2.c: cp ~/Desktop/aoc/part2.c . a.out: main.c $(OBJS) $(LIB) - clang $(FLAGS) $(OBJS) $(LIB) -Lmlx -lmlx -lX11 -lXext + clang $(FLAGS) $(OBJS) $(LIB) clean: rm -rf $(OBJS) diff --git a/2024/14/a.out b/2024/14/a.out deleted file mode 100755 index 67e58c4831a2756703d41f8481b5112f6bf4e2ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44304 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 NJ&nUZLSRIc{U0^CK8FAR diff --git a/2024/14/libft/Makefile b/2024/14/libft/Makefile deleted file mode 100755 index 437ea4c..0000000 --- a/2024/14/libft/Makefile +++ /dev/null @@ -1,99 +0,0 @@ -# **************************************************************************** # -# # ::: :::::::: # Makefile :+: :+: :+: # -# +:+ +:+ +:+ # -# By: tomoron +#+ +:+ +#+ # -# +#+#+#+#+#+ +#+ # -# Created: 2023/07/28 00:35:01 by tomoron #+# #+# # -# Updated: 2024/07/17 23:19:01 by tomoron ### ########.fr # -# # -# **************************************************************************** # - -NAME = libft.a - -CC = cc - -SRCS = ft_atoi.c\ - ft_bzero.c\ - ft_calloc.c\ - ft_isalnum.c\ - ft_isalpha.c\ - ft_isascii.c\ - ft_isdigit.c\ - ft_isprint.c\ - ft_itoa.c\ - ft_memchr.c\ - ft_memcmp.c\ - ft_memcpy.c\ - ft_memmove.c\ - ft_memset.c\ - ft_putchar_fd.c\ - ft_putendl_fd.c\ - ft_putnbr_fd.c\ - ft_putstr_fd.c\ - ft_split.c\ - ft_strchr.c\ - ft_strdup.c\ - ft_striteri.c\ - ft_strjoin.c\ - ft_strlcat.c\ - ft_strlcpy.c\ - ft_strlen.c\ - ft_strmapi.c\ - ft_strcmp.c\ - ft_strnstr.c\ - ft_strrchr.c\ - ft_strtrim.c\ - ft_substr.c\ - ft_tolower.c\ - ft_toupper.c\ - ft_split_set.c\ - ft_free_str_arr.c\ - ft_set_color.c - -SRCS_BONUS = ft_lstnew.c\ - ft_lstadd_front.c\ - ft_lstsize.c\ - ft_lstlast.c\ - ft_lstadd_back.c\ - ft_lstdelone.c\ - ft_lstclear.c\ - ft_lstiter.c\ - ft_lstmap.c\ - -OBJS = $(SRCS:.c=.o) -OBJS_BONUS = $(SRCS_BONUS:.c=.o) - -FLAGS = -Wall -Wextra -Werror -g - -all: $(NAME) - - -$(NAME): ft_printf $(OBJS) - make --no-print-directory -C ./ft_printf - cp ./ft_printf/libftprintf.a ./gnl/gnl.a - make --no-print-directory -C ./gnl - cp ./gnl/gnl.a ./$(NAME) - ar rcs $(NAME) $(OBJS) - -.c.o: - $(CC) $(FLAGS) -c $< -o $@ - -bonus: $(OBJS) $(OBJS_BONUS) - ar rcs $(NAME) $(OBJS) $(OBJS_BONUS) - -clean: - rm -f $(OBJS) $(OBJS_BONUS) - make --no-print-directory -C ./ft_printf fclean - make --no-print-directory -C ./gnl fclean - -fclean: clean - rm -f $(NAME) - -re: fclean all - -so: - $(CC) -nostartfiles -fPIC $(FLAGS) $(SRCS) - gcc -nostartfiles -shared -o libft.so $(OBJS) $(OBJS_BONUS) - - -.PHONY: bonus so clean all re fclean diff --git a/2024/14/libft/ft_atoi.c b/2024/14/libft/ft_atoi.c deleted file mode 100755 index 3b0badd..0000000 --- a/2024/14/libft/ft_atoi.c +++ /dev/null @@ -1,35 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_atoi.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/17 13:41:15 by tomoron #+# #+# */ -/* Updated: 2023/10/31 15:35:21 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_atoi(const char *str) -{ - int res; - int inv; - - res = 0; - inv = 1; - while (*str == ' ' || (*str >= '\t' && *str <= '\r')) - str++; - if (*str == '+' || *str == '-') - { - if (*str == '-') - inv *= -1; - str++; - } - while (*str >= '0' && *str <= '9') - { - res *= 10; - res += *str - '0'; - str++; - } - return (res * inv); -} diff --git a/2024/14/libft/ft_atoi.o b/2024/14/libft/ft_atoi.o deleted file mode 100644 index 423cb72a306663b8c86d7d2208b963c4fda796a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3288 zcmb_d-D@0G6hAYQJDX&)nS3@$(8DnxdndwTNG>#nL9bo7rT^ZZ_;r zLKOU0CfdfVEj=*XJ2 zYkXCEU0He%T(<5T7mt>~!Of)yb<5U0Rc@}kqV+l)ad6> z@x{r~bp_}I=)?S*l}N{Cr-BQ1E}zQI1_wvXL30F>&UnnprpyHNPiHfBzmv`MKWFD> zoa|gl#7I0{m;4&0&f)w}@ajNhHN<~rrXbg~`W5qvI zdJ8A4DZQ#8dI~!Hx}nA2)y8goarQHF=g03OH2`%g1{9VSP=sE8d0y1di#k0j8pERf zg4mxFT~W~!7Dq0KN0Z`_s4&A?dR?em+d3ZpH$uHBd~c!_75=bj35$J6(H<51!$J>> zT76ph(9;kWKC-5SJ}=ZSMZJDT)NzHbr09%_gJErwvK~OH{;lw18yIL50(A^jKNt1q zMI$Cv{ZUoL4gQBug&+8z*G+WQ!0&t27#ft0slu&+R$;TDfzE1$)Z911<HjFFlU580Wk^2aLa1q(P^YjK3yro(;y|ka*C;KP&CS9(+RDeI9&L+Pp6s9rxD{ zNA@e9c0@{VelREP`25s(EFRC<3t&3-q620ko5|St(3m+p9g_@v zbjGvEWZri297OMs^rlm@_ISZ|g~TQ&k>CPSv&k%&vsuSBUwG-%vAh#Y%#>a>Go4<@ zj8jZLHB}Kt$t7SlS8l-``SFc}agL0Y#GOdwIEZj5MdCZW8J*%b}Z) zIR5@t%rno=A;i5oDP%~c{{Vb1i`L({J?N-b|GKPyM+Q=T_xr&0A4i<(4@e%1^RoUl z15$FYEKeiOx|{m7jIZ{++`L!NsMi0oyb#u%m}GTx1m?&WS2u{ke&TLL4V1l&KvpQ2K2{~uM^e*n20&-=fIn71d&-N!@eae7R+ ziri}TZ^-%)N`{NhpJvrt{{&)`(|dpVC@C(wU+%^AS+1c|JGqxd@xGf^@gs*0s!xmK XiWbf(D&Dgv--N8cEr}FY?f(1)WE@{# diff --git a/2024/14/libft/ft_bzero.c b/2024/14/libft/ft_bzero.c deleted file mode 100755 index 8e328c6..0000000 --- a/2024/14/libft/ft_bzero.c +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_bzero.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/10/30 12:39:29 by tomoron #+# #+# */ -/* Updated: 2023/11/02 10:41:24 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void ft_bzero(void *s, size_t n) -{ - unsigned long int i; - char *ptr; - - ptr = (char *)s; - i = 0; - while (i < n) - { - ptr[i] = 0; - i++; - } -} diff --git a/2024/14/libft/ft_bzero.o b/2024/14/libft/ft_bzero.o deleted file mode 100644 index 44a4e43eb9b30772e09e5f36ec46ee8491e8a33b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3216 zcmb_eUx*uJ5TD)6Cb>&5m%IMCmg}Er8+$@;b9bEOv{+N@*|eTTh4w+L=_c9y@si!R zySd8+#ma$jRHS_nQLu_nf-mipr4LdN6%^kr_#_1p&bRZe(1$pa{U*2B=B41kW@di# zn{Q^n{pKU@FD|_#OA@e1a1ypXMgguxw(U&U%)l;WUdV3zo!xlvL3X3LmA$%%dhvet z=fzE;pud?tvA8w5e!%nYXRp4p`BNzBMb__1$lmN!^n)}erBXXpC1p<}CMHv3 zljC7$0ze*xvpWHlBcP;C#$qvmkS0+uvsXzy7dsIX^uzbBT z1c|z5ULJ1H{(V%SdAGLy3l+N`z!B{!FE8@8nt zAYHNQM%uON>C=X@>{^YU)~!N%Zf0&iJv*PSRr4hm3KiY%<${Ad&@`QD*))pDnq`*3 zskV)r3sq>iHtfJARp{=H*Y3bhFtkg&jnsY}q*g+j+!2Xh!vnM*ae7F)8+t09_)vav zBrKms2Eb>CQ-N1eOOo_3K0=C49zJLslF{sng7&C-(DTFkonNo~b@$c>olpPx<^1nY z6GJ+7dh>~|Z+)`=PwnPI&8U<^07Kj9aY;=Kf3Jqa=hRU6Wp!v>jiD)@Qv6^BICY3c^LU9 z4rAQkEw4a0e)nEyyU`{g+;?@sp)Ts-^me>1YvTK-lm>x>ab7p!!96@Fe4Yp9FA02a zfd88Cc}AH3hQN~n{+q%-62RXQ{!{?33IA9CcZ5&35ee6AdTwt&XcGOWB`M;B`SB+O zPV4X<67*C6=RW2F_`2}V1n`fAuL~XQ2ehJ*ZxPMjZPawZ za9lfQl}e7`I-GD z;eFb-5Unl%qmnDxdcAM5H7xAvdC;7-I_dvGe#ABW^TA8r7NdNR0ikJM{X&yUSa9+) zg2eMET;MripK^n1QfxyIETLHixeW{iG2%WD3AWIzg4|^c&^?f0g3#X(h;q663xIzT z`tA#!&%=lZ*QAuU1vpQRPlDWo7#mbSDlV0%NTB-u`-kfvN1P};pJ;aFhR9oEKxnSd z`Xb_N`>7LRXa{{SKacLELH#Ghf#5!=f4c2?<{78^k?IHgKPu|)!I)pTSJv-hkZnKj zd6DnO$PRLEdRQY!&j?^4umJbZ@V96TdjF{b?>~ZE&gb|460u-Uw029>|AHK!1i7DM zY*77-sNWK~wEx|IwZiB6r_iT0gZsZ*Tnb+aJ}a)z`XdY|OC1{1E6gFy_XlHCpM>)~ W58yX6f_qP~+oJxKAX46-^Yb4pQZK{+ diff --git a/2024/14/libft/ft_calloc.c b/2024/14/libft/ft_calloc.c deleted file mode 100755 index 9314306..0000000 --- a/2024/14/libft/ft_calloc.c +++ /dev/null @@ -1,31 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_calloc.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/10/31 02:38:46 by tomoron #+# #+# */ -/* Updated: 2023/10/31 18:15:42 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void *ft_calloc(size_t nb, size_t size) -{ - char *res; - unsigned long int i; - - if (nb == 0 || size == 0) - return (malloc(1)); - if ((long long)nb < 0 || (long long) size < 0) - return (0); - res = malloc(nb * size); - i = 0; - while (i < (nb * size) && res) - { - res[i] = 0; - i++; - } - return ((void *)res); -} diff --git a/2024/14/libft/ft_calloc.o b/2024/14/libft/ft_calloc.o deleted file mode 100644 index 1261a0d8da4bddb8e0085834d0b994d10852dc17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3640 zcmb_eZ)h837=P|A?X2oU8x=n`AS&*6K&*cwIa^2U}`0PY2UOjgU z!p{ZK1;rYKFLt2#Ii;*oSbR3NeDfL!w&RtC<4fxaosTV(+sz45E@RH{2j^-catY0g zWR71xz8JqeLe`Pmz>WC6?=Hm_!d0GZ3Bp%zAn;;r;aw?wkx{;_c2sPMBER+pFhguH zUcDhK!AoUx2h5hqCjK1Q%V<;pW?sqkH=I3`PeAqs2lhYeCV#T=Z&WfN}~Z%9TQ{tY;ikr7)u>EFcD^ zUV(HzX+iW5w&&%?)~oUl z=mGFE;#A-Sa!HbIht?CLZH*5K+hi1NQcw=FyB%FR+$o)S^)L14{U5!4@ag3*$V1wF zu(ti}53g?dNxObq)AKnWKuaS$B(av(KUqi}Wt*}L-$6CU6!lHEL7iipQQvK&3Zmg} zSVSFWfl+evsYh8$72}3k`!EZRvaSnCE)Zd|()BRLf6M%6X&tuxlSFatj0rQX_nC%aMGNJ0aU!EP79O`wB2lq289keDmR!p_<6YxDkGK#1 zSZQWfpg!GIW(6afkpli^FeuQn2Hv^`-nIrF`4|2fA`w@g;=q55c(W|Kc?S9ds{S`# zVMN(AaB(!qSK&Uy+PO?Ph)uX6pc2Y;FCVou(ET0zU`sfk=7nM#@ZBxt5y zOlp=sWr3D9N+rFFf{i(D70XN**=$9(Dk2ggAr=c|9gi{Uu8?FVvl=Lrvj%8o!_u|G zkB{_KtYmr&v|@3xlptTc{#V6QQV!_(MAl4}bST+BIF0+GA>mD;VFy++g?ze1{Qscu zF^T&eiJa|xv3?N%=QL+G(eDspbcWnC#1(P=g-x6nq1*pFP#F>c=b!S!C-x`Rp?xLx zkT^$F+uIYR=;q)VQe5QqEuzhfk^2=6&bVSp^!nxyqx)tEA2-!_|ED=f{S)Nve-~oj zoD`zc$0F@@SpDtwy%#Ob>c{zl^zZWg%BzKb8~|2n^~VMMd~*LZ!J z4-w6u*3w)55MneF@BD+56zMI8)!$-%f?q<5a%{ywcE0X}LK`n6{HQ*W&>hYBkL#U1 R*{<{Y0Ukh%{`GkK{|AKZjK=@~ diff --git a/2024/14/libft/ft_free_str_arr.c b/2024/14/libft/ft_free_str_arr.c deleted file mode 100755 index c4bd417..0000000 --- a/2024/14/libft/ft_free_str_arr.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_free_str_arr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/12/10 14:42:28 by tomoron #+# #+# */ -/* Updated: 2023/12/10 14:53:07 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void ft_free_str_arr(char **arr) -{ - int i; - - if (!arr) - return ; - i = 0; - while (arr[i]) - { - free(arr[i]); - i++; - } - free(arr); -} diff --git a/2024/14/libft/ft_free_str_arr.o b/2024/14/libft/ft_free_str_arr.o deleted file mode 100644 index 437e39296ec30fa11538f8efde1813c25568adf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3104 zcmbtW|7%-S6hH61+?Tf5lC<0GYSjj9*g$<*N5SGojn2&Hmu7c{9)ig#bJLaD#UZ%yC;3Sd%+)e;N5fX=YGzY zd*69Cc`JAFxUOlyqQN}u%oqi@ZtmDw&&^>w%uLdhQxV+%Qv6G z;fLH7G40LVwq1H|%kCb%28nm4g3#vCYrhg_Gq=^fs%_-9ZvNEk_3X{{Z4b7)-zAs6 z)kd{+dXF&Dt?}geWO{UR%xsSX=$1xicE6E+Ja!~@VB(1h07HN-foJysL}qWBiUbg9 zPJ@x2kHun``DJ_rXhT$m2KVo5UWaAEP<%@}Z9v@6FLfdi&mkJoFS#ZpUm}J$LBk6; zn8MV|sEEKcA^7~Clxl@WCAH?X+SO(wH8W?;SaVQz^W~P~zSvW_Nv=F)7OP&DRcPH;n~d0Y^GK%mR;2wFanfT3N5HYwc)}pEJ=X3VZXT05@g+b zrPkhf5wuQHo7@#0x`+*OAL8_oc<1zFJo%n}Y`3ZBkpXZXaZ2(SYE9GriSH&worMn? zQ(lu9+LWFU4|q0QPW=&i_?u2SbK!&QAD#PqZvMcu?qcX4od>;vUTT#3M~UKqi^jtLV3J;KC* zXc!Cz3=hCZ2H?p7_}CrzX+*{Xb$ag*vG4H-i*igxpdC>5fAKRVd1V03?L}Nea!8Fz zn{bN7ynO*Ycp7wDkPx4)Am+0sJouSWbCWR6ad}USAMk0w{mr=dIpf-Xxz0GZ0{1-Q z70F8}{FV7H{?I$=TlL5Wjd_9e(t@JHm_mRgNJ0@kuqJX^^Zip7?* z23E_d6)e~3xL}o<^}2%>gpc_&x`CSIa@%p+?1>PYwQ9q=r0%$Kf*}ga%jn?c@ncpS zo=n)$_z{S1Y&CDTxG}6}%SvhU*>t}%Ahmy$?SRx@gav*+y~V6I%DYqAq_|HRN}xgCNtOYr4-$xS z$X8w;Q@?O;aQ{+nwI*`;mE2QEA3=;_@;RgF$vK&*#emeDpYW`eC^#xpEyH7%6Liz_W zvQ_RCA3LMcQxcd{0`U1W`~@0e`@a~n|2T5lpZEV6VroqkdqL*kph-Yf?kBhwmj6?k z-ko0!IN58WdOOJbQ|4zLoL diff --git a/2024/14/libft/ft_isalnum.c b/2024/14/libft/ft_isalnum.c deleted file mode 100755 index a1fe540..0000000 --- a/2024/14/libft/ft_isalnum.c +++ /dev/null @@ -1,19 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isalnum.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/10/30 12:09:17 by tomoron #+# #+# */ -/* Updated: 2023/10/30 23:17:18 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_isalnum(int c) -{ - if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') - || (c >= '0' && c <= '9')) - return (1); - return (0); -} diff --git a/2024/14/libft/ft_isalnum.o b/2024/14/libft/ft_isalnum.o deleted file mode 100644 index 8fb3cb66a607fad30de79a30e48e62e82338cb11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2824 zcmb_ePiP!v6o22$e%qwm?QWXJw2f_+)}=*sHYrt8m2^XmZDJ`XG+;|vXE!s+(%qf1 zGYPR!6$CL@V+B1af(YJ<;-MEk2p&}MP>ECkQ~LpI4HiRl!vLAbz%EbcayiU)3Lgz>fHEsM*x#Q8 zmk2|NEwx}nei~id`fyFhCS)=?1CJu8iTDs{wA{{8Y1Qk7&7f17oN^|eDe$9OGjv;> zmA2D>%5u>5DpAm`yx@gbqTuS5c7sOc_{8xOmB|y8R6n};q^@$3Vp}0Y#1`U*bGtaG5VB?D|doM&+Jw*5RNZqtFsZb zNeHKb6B%cNaN3>Z6-~G~0CXcs1ed(U7~aAUvoH5j_~#klm*Bt3zT8#eUuInTp(|*< zwGyurX5vzx@<=RE9r{5L{E66wv#gW(!CCa`D@!%EUhjIV;6&b91WqGpw>_Ltr|Y#` zW`t3<7WjVXMWF;CBxbAG@oGKa2yqt|kzfGLjvts`0jCp0o^$5>g(t(vZCnAT)mm-W zC@gF)ZHuJ*40y{mzw5R=BN2{>gT*7aj{5aB>HkT7#ysZzleEY9()=a>>-ZDW2Wb)r zOHNjmDRST01-WP9Q*1IPt$o6TIo6_*+$CH{V#NJ}15UFRmE_Vv(wtR=!1{YWl-JnD zKTX@_QSSc{#FIHG +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/13 18:10:01 by tomoron #+# #+# */ -/* Updated: 2023/10/30 12:14:17 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_isalpha(int c) -{ - if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))) - return (0); - return (1); -} diff --git a/2024/14/libft/ft_isalpha.o b/2024/14/libft/ft_isalpha.o deleted file mode 100644 index c409c1f98d9fd0311c7f2279c513e0e27e45b00f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2784 zcmbtVO^6&-5U$rfZ}Kyl%>Kk|!fJMij$YQDY!Y;hx|ubu$u1$FkbpuMduF?5$IMJG z)4j`@Um>6_N=Q72Cy`wA>Man+MbMiBJcx%tE;;0uoLn#vtEQ`F-Zq_!7W7orSKq68 zKlR>RnLGKOr4)!Ln1O*OD8PL^uq!>Y0=tlT`o#K!^-CL9FKxJmueW0Wt@DLz#n_td zV;>c+?Lh3exhMDw54XfNRr+e~$=P4juqu^CwO#6t4ULVLhQ~*;;TVABC^9R1?9!3k zo4Hr^&W|453t(%o7@8ji$h-u0X(pG;VYZ|AX;52H;p|=*ti^)kgrUTiI%7kA23^~_ zv8H1aG8vtL=MgkkOG7qEz2$Zq#Z|8xHiJ%aYTB7{rooS@&CqQvFS$+~%1c4pD@Q@Q z{H_#AQ?K?cyn^^B;g(8&cyt zwrstQ+ewqBkEFNY*_}h5TgUQQ>m6hOTtJ+%zm8fd_0P^cDLM!I(3l_-Y&BsO^uC@A zZ-4*C%YR-R`Fs8GCzJQG>T(8Pn?)=VJFj$Z`-&dPF6c2|Pb}z?uO}Dul&=x7vkh(C z)@mi2d&{yg|9{&V+|p;s<$SGQkGnv^vQvnsBq(sryI-m%KwU z+{gE`FMTNdQ;hFP@IPc#c$ld210k^`PDM@HRSKujMi$jJnmp_d_oVWe`GQwwfKU+VhPe?&2a6 z44~QZ18_P)e%Eb##(ROc!oiA>TSNV6 zoAlrn;^qEtbq6z;{nt;(P4ibDh>iHk7=UyW2ut3q3R9%t*#+q{@o8)_C&j*C!aQqH zNp1rJNsPF6dB8E&qLSPi2I!tuguwbc-jt8o$G@RX_fh))MZ}XiX~-ypMRE*Da`#~@ zt^Nkrzs_T+zInf;{%eR+&I8O7b%+a91z;`pMV~=jY?Jy8gK6hw^4>=$ZT?>ph$8c( z`O|AEcUf?Hf2dS){x`Y)Zj6~Ca}^z8P;8TTD-BHH{upD+=G#MgWc)NahRFN{x`{^G z`hQ4Se;&CqUe^CDVrf%-#NZVv#5&2nfp}W|TU=k>McRM5tI7Jah*8eu{s+7vZ(z(6 ssW18}2JMqi15}@xyiI>P7@+zjGA{N2enlg>_Z0hy!ADG_acTYYFEsn)r~m)} diff --git a/2024/14/libft/ft_isascii.c b/2024/14/libft/ft_isascii.c deleted file mode 100755 index 5b85ccc..0000000 --- a/2024/14/libft/ft_isascii.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isascii.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/10/30 12:15:36 by tomoron #+# #+# */ -/* Updated: 2023/10/30 12:31:38 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_isascii(int c) -{ - if (c >= 0 && c <= 127) - return (1); - return (0); -} diff --git a/2024/14/libft/ft_isascii.o b/2024/14/libft/ft_isascii.o deleted file mode 100644 index 2117f1e1316a90ed5584eb6ff08bcb0d644b7454..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2760 zcmb_eO^ggt5U$rfJ-cg+*&i%f>;@AK^jL)TlQpuI9T9@8L_$W-Y|rSJnchtIZkEJP zA`wDZac~hKad2_q%FO{sM>hu&Zrmius+xW^^K_bnsHD59zV}ttd#~%gnTw+b_G&@^ zi-2Khd5i+QHd=PJVP;_=GRMcReY|%5+vW4$Aa!Fg4xn{0b!$FauSS1Rrq6AGjc>R< z`s3tF(IwL99z##pdpmpk(p`PsajzFZGX$Vn<@l(p=B3r2x7CnuKya0I}7e zr-u`X1ZLZXj{%~cG7DJVnzsg<2tx@haZHEgFuJ;Sd&US%h{cQ;EJILP8HM~N#fnuc z4@}#2&v9!5gG1(^IRqs??|7D1bR4q?nbU67&iHOMv&Z(%`0iv=TW&G4al^*VnZeDO zic={0N+38jABsTRWI$s9LD|T9G_)`n2XXEQh?!2&H@~fY7PprcKo3b{(YqIPUeQL9 z@fs2kbMc`HTTu%kzAs3UqVIwa8vSH~F8Z~Uv7%wa+7tKhbN5VMg?F`^1zEb+!f6PB9@g*Vtap`kUGXJE+c|O!?>Q@_( z{^PWtsQFOd1*-WDu8OAHI0=M> zPgYh^xZgQ~`;2{x4dsQM3N zeZCiI|LIpNTz@xWlry~lN9BfW!!cF3KI@w}s2`Z4zZ;iS9^W5~QGF7Q3p{|gXoUBk P#%3k>MG`44s(*d~f1%yd diff --git a/2024/14/libft/ft_isdigit.c b/2024/14/libft/ft_isdigit.c deleted file mode 100755 index fe77533..0000000 --- a/2024/14/libft/ft_isdigit.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isdigit.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/13 18:10:01 by tomoron #+# #+# */ -/* Updated: 2023/10/30 12:13:53 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_isdigit(int c) -{ - if (!(c >= '0' && c <= '9')) - return (0); - return (1); -} diff --git a/2024/14/libft/ft_isdigit.o b/2024/14/libft/ft_isdigit.o deleted file mode 100644 index adcec86d6aab4c0e02b2913f27ceaa21c9f7a136..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2760 zcmb_eO=uHQ5T3W2O|>yLwQ7~BEn*NsH?0cRA8JIaR*HgBK~Ul*-K0yC-ICpwD)@tf zC~B!!@u1+rix)2*^d_Q$7mwZq5%eJFO;FI8?3?7dtRBRH-I@93do%C7o%fOp!=w8( zA%I1|5VSl-0bUv{JKr$#uoRhN2d{m&cJABdbKm+qZnR?nt?eCii_m&8{DX*}+CrPM zULXE(>Y3;i*=(1gXY1XW?w)LC&yu9y4WOBV%=`*HyCbzTwSMJD*Y1@7x&fMmM!EnJ z>p;&ArBW%(wi_P1eKN1kl&bY=1KFrkdLFO1aJbo44i$ zw&to%u^cD^!Epm90d123jRk~dW9w09X&47__9%$ijOba^wqPE&lomh_Nn_D_7H6(# zd(%l535a?4P=#%%g%IBtr%BPbzz2<9GC>!;T8FWwVZ;6-uZJ$Vk8iyneSS0J-u|2b zSf~+;L{AH&y?xr~Odc|pmkoUD$%>&pF~oE-wM)}5=fCX;Zsp(PDFzep^=BMM$Il!m zI_PmQqRBtt%9l_WIxJMYmZ?KW%TX*HIu$Q8*PvRW%#$0GE7H+XXUiD~#}Cl#k!5I; z5Kae+rB@n+)9N@cYr@q=r_Li`obzTvxQVZoKKCE<4@-PSgnvT%+>^{dC2^h)wVL|X z`ed9i73cbthsP4tq!$X~8$%ZkN*&D)=D1y)t`w|dv2M?R8Q8M{m?f`Pv+*RhPBfTx zyJ|_YAJhw8x$N74&*Kqdv+B5Zq2Vh-tnqOqD1hUZJuqD_u+0O9$2R$aRhk5|TAisC zi0eC*-{_Q70`^3qT(@erGCMpZCRPlrBI+|W(*H?bVIH;rIPFJjK9skiYQDp(qUknH z0%6gUm6sImcOJog#y*XW=A@V}2_sUoigN21h+@R0dxK!>o3QcDm+)#=P}5( z%DW#2#&92n*pzzrP@V^J{2)1s@cbEih(_G{ug0uDja(kj>%WIs+*IF5kk0|vi*oP$ zq5fT2pYKK5fBMym)*nTTaz^+6nB0)<7*mDov!27CKKhgXZd_D(e19-T^+|YK=mESz SBf9q#o0s4hNu+Uc{qqavW!^ae diff --git a/2024/14/libft/ft_isprint.c b/2024/14/libft/ft_isprint.c deleted file mode 100755 index 7b5ceb6..0000000 --- a/2024/14/libft/ft_isprint.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isprint.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/10/30 12:31:55 by tomoron #+# #+# */ -/* Updated: 2023/10/30 12:34:32 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_isprint(int c) -{ - if (c >= 32 && c <= 126) - return (1); - return (0); -} diff --git a/2024/14/libft/ft_isprint.o b/2024/14/libft/ft_isprint.o deleted file mode 100644 index bb269826f5d6ce4bd68acd35d60c4150f454fde5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2760 zcmb_eO=uHQ5T3W2Op>jYotbaGH}l@xc`vy8^U08K(834q8( z&{Ko4SPZib;bVYkrpyA?HRi3s4#H4;OPtgpK8UWa-JLOf6Cx2K0&5XeRz^dXNWNrM zCX&;3)h#-eWdDHKZw^4g%NE_qYO&&(c}Smg%68gw%ISl)d){*<>)LYi>FwLL?@aga zOqYtef~O1w91MA&Z8D&?0KaT#JqoS#;~*{`2QkwjdRv>C=W%;!0rZg67QMf%eAM;y+w1PPH*UI*KScmq zG-8qHabYyCm@?X;M~y_mz_%WqFtitjn2N^sX&UDIw;jQ){F}VQU<7{r4&&(fnZrZ} zJq$)Px(u#-35B6Ui{dp*9oid?V(HMSc)qy`RhKePZcwhc0^{mzIRoMN0qQ+Mc}NJS zgT>M(4Z>-4oR>A>YNJ!nI-4Z%sb_>jfc{#+9gYp zU9XyT3I*5pTpo`Qo26pK&enWoh&4Wr1O+Ho3J#bR$Ft4D$Hun0o|QijW~nq?&Jx!x zPAs8QQVH1SvW2Quwv}rG4~dBtJu8R$LYee`l6RO#?LSWYg_;lLqp#|3|Ej3FwUah={DuF%y<$pDixgnZCRiGTByQvWj%{QwpHH4 zFffGs%*Q6xyNB{TlH&)+QH1Bu&=WMm)_*-@{c+^-cwYYl#KNY!AVEF{TrbGIw@m%} zvOeF7wEy(06|6ss808G^{|UJvyD_E;*JphjgZk)i`nz#O-zAa8h4s%L@_^ro diff --git a/2024/14/libft/ft_itoa.c b/2024/14/libft/ft_itoa.c deleted file mode 100755 index e076598..0000000 --- a/2024/14/libft/ft_itoa.c +++ /dev/null @@ -1,60 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_itoa.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/01 02:36:12 by tomoron #+# #+# */ -/* Updated: 2023/11/02 10:16:45 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -static int get_number_len(long int n) -{ - int res; - - res = 1; - if (n < 0) - { - res++; - n *= -1; - } - while (n > 9) - { - res++; - n /= 10; - } - return (res); -} - -char *ft_itoa(int n) -{ - char *res; - int nb_len; - int i; - long int temp_nb; - - temp_nb = (long int)n; - nb_len = get_number_len(n); - res = malloc((nb_len + 1) * sizeof(char)); - if (!res) - return (res); - i = 0; - if (temp_nb < 0) - { - res[0] = '-'; - temp_nb *= -1; - } - while (temp_nb > 9) - { - res[nb_len - i - 1] = (temp_nb % 10) + '0'; - temp_nb /= 10; - i++; - } - res[nb_len - i - 1] = temp_nb + '0'; - res[nb_len] = 0; - return (res); -} diff --git a/2024/14/libft/ft_itoa.o b/2024/14/libft/ft_itoa.o deleted file mode 100644 index ded9f9a63fd4b197bfb969569afb314439a6c8a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3872 zcmbVOU1%It6h1SvcXpFavPt@r^v@=3qXq3IDM3TKjS<~COm)dHJAo!%@N%9ai0V)0jy8gy9h@9#8;!J#T>Y8Gt%f{zF!4kzGW67ABT!P4jS{lyaa5`RIp2NYd_yRrw-SZH6 zt)5JD--H9knfUxFm3v^b7JxS6AM$zSoo`pn?ne> zNtk9PzJP5_#}}5buCA_<-k%hY_Cn=fPYE$bMV&ov98ev5r!hQS+3gVNTvNoZ}wruwEG zZ4Emb^->dnx(~Fro^Ut}phXozdz-bkL*c{W`?ek1^zb%-fB;oO$2I|ou609wV-P?v z0z`!?_!FRnP~j`ywYDKtNXpHjY9ge;DiKZvp!H2O0_v<4g4TD?6zc3q73?Jx&7o@8 zC(+YkXp`nZ4cxmI37{)Ud@84Oh>#1@OoSjpE{wIRpn*^bUdD$ibVUt{0Cba=;Jc7? zHkr?~jGM*MXd&Oy*&XeScEhlh7_|z?Xd2o_3OTdgD&*Q9GfQWz!dOKo3+eWQ9S6JG zJGalvzw<%{+|eEyzRBEI~fy0AQK9u|z%vo3V8P z_8PCBgl~VuCQ;5k4a!8lvZE##x`gjyCt~y?p|=5#)YZSNK3c1*e!`zeMrcS2=(D2k ztPN@Uh@ByfVd@*A0a@w*<{J@vkhuSf(E3EMPt?UkV@zl<(GOl+)$5a)U=l|@LwH@ZHl>hT+~L8;<+#g(Ps%Y}yd>P`d1qKzKiY=wUCQfI z!R0<}k#WRz^LxFxCj9TV| z1<`aNmoxFkb})xlvWkhq@NmhrN*sw0o7vI4nXt!p8ku=$2njA=G(TMMei@?qf@MY@ zf8ykUl9f!KfoL{6o=YS#v^1Jo7fm%JV2&h)i^-e`xnwq5Nb{!$zgkgj!b+x4zmOv> zZyP!5yI0>~sOA&?n>;ADJwExmDkz-;!rW(xoW1lw;r|oPXyaWFK?j}lUM5KWwoJ(9 ziR#ck;`7Tm)%Ny8Dc+T!MFW?3xpc0)7}2*-F_iZlRe5^38T9z|e^vH>T1Ha;?t6>- zr}OO1Ng*H0`uuGtjKs^Ozfpem>*Xh)TLw^l_dUq<56hfUL(`TwWc{rSNX_+G)BMiRY}3|0~N$ExPOK}Lc?$V_!rq0o)^u(4u2fa>-qs=e*N1?(bwZ~dWP^m za{TJg$wCJDNvM83{=D^%B1Sp6Pc&`mq0Nr+pra~JuFv`{^k~Od3#eYKkkI%=7UFfK a`Xn6Zi~znzgE@?mo{;rhWB@6@{qrBxCAe4s diff --git a/2024/14/libft/ft_lstadd_back.c b/2024/14/libft/ft_lstadd_back.c deleted file mode 100755 index 3aa43d7..0000000 --- a/2024/14/libft/ft_lstadd_back.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstadd_back.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/01 15:44:09 by tomoron #+# #+# */ -/* Updated: 2023/11/02 01:13:03 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void ft_lstadd_back(t_list **lst, t_list *new) -{ - t_list *current; - - if (!lst) - return ; - current = *lst; - while (current && current->next) - current = current->next; - if (!current) - *lst = new; - else - current->next = new; -} diff --git a/2024/14/libft/ft_lstadd_front.c b/2024/14/libft/ft_lstadd_front.c deleted file mode 100755 index 4e6a56a..0000000 --- a/2024/14/libft/ft_lstadd_front.c +++ /dev/null @@ -1,19 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstadd_front.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/01 15:51:22 by tomoron #+# #+# */ -/* Updated: 2023/11/02 01:12:41 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void ft_lstadd_front(t_list **lst, t_list *new) -{ - new->next = *lst; - *lst = new; -} diff --git a/2024/14/libft/ft_lstclear.c b/2024/14/libft/ft_lstclear.c deleted file mode 100755 index fc79c03..0000000 --- a/2024/14/libft/ft_lstclear.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstclear.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/01 15:52:45 by tomoron #+# #+# */ -/* Updated: 2023/11/02 01:12:06 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void ft_lstclear(t_list **lst, void (*del)(void*)) -{ - t_list *next; - - if (!lst || !del) - return ; - while (*lst) - { - next = (*lst)-> next; - del((*lst)-> content); - free(*lst); - *lst = next; - } -} diff --git a/2024/14/libft/ft_lstdelone.c b/2024/14/libft/ft_lstdelone.c deleted file mode 100755 index 80bbcfb..0000000 --- a/2024/14/libft/ft_lstdelone.c +++ /dev/null @@ -1,20 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstdelone.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/01 15:56:36 by tomoron #+# #+# */ -/* Updated: 2023/11/02 01:13:47 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void ft_lstdelone(t_list *lst, void (*del)(void*)) -{ - if (!lst || !del) - return ; - del(lst->content); - free(lst); -} diff --git a/2024/14/libft/ft_lstiter.c b/2024/14/libft/ft_lstiter.c deleted file mode 100755 index 0430cfd..0000000 --- a/2024/14/libft/ft_lstiter.c +++ /dev/null @@ -1,21 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstiter.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/01 16:35:30 by tomoron #+# #+# */ -/* Updated: 2023/11/02 01:13:21 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void ft_lstiter(t_list *lst, void (*f)(void *)) -{ - while (lst) - { - f(lst->content); - lst = lst->next; - } -} diff --git a/2024/14/libft/ft_lstlast.c b/2024/14/libft/ft_lstlast.c deleted file mode 100755 index 6fa8909..0000000 --- a/2024/14/libft/ft_lstlast.c +++ /dev/null @@ -1,19 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstlast.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/01 15:47:49 by tomoron #+# #+# */ -/* Updated: 2023/11/02 01:13:36 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -t_list *ft_lstlast(t_list *lst) -{ - while (lst && lst -> next) - lst = lst -> next; - return (lst); -} diff --git a/2024/14/libft/ft_lstmap.c b/2024/14/libft/ft_lstmap.c deleted file mode 100755 index 7715da4..0000000 --- a/2024/14/libft/ft_lstmap.c +++ /dev/null @@ -1,41 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstmap.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/01 17:29:05 by tomoron #+# #+# */ -/* Updated: 2023/11/02 11:47:05 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)) -{ - t_list *res; - t_list *current; - - if (!lst) - return (0); - res = malloc(sizeof(t_list)); - if (!res) - return (0); - res -> content = f(lst->content); - lst = lst->next; - current = res; - while (lst) - { - current->next = malloc(sizeof(t_list)); - if (!current->next) - { - ft_lstclear(&res, del); - return (0); - } - current = current->next; - current->content = f(lst->content); - lst = lst->next; - } - current->next = NULL; - return (res); -} diff --git a/2024/14/libft/ft_lstnew.c b/2024/14/libft/ft_lstnew.c deleted file mode 100755 index 8e78fb4..0000000 --- a/2024/14/libft/ft_lstnew.c +++ /dev/null @@ -1,25 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstnew.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/01 15:39:52 by tomoron #+# #+# */ -/* Updated: 2023/11/02 01:11:12 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -t_list *ft_lstnew(void *content) -{ - t_list *res; - - res = malloc (sizeof(t_list)); - if (!res) - return (0); - res->content = content; - res->next = NULL; - return (res); -} diff --git a/2024/14/libft/ft_lstsize.c b/2024/14/libft/ft_lstsize.c deleted file mode 100755 index 4fdfadf..0000000 --- a/2024/14/libft/ft_lstsize.c +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstsize.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/01 15:46:36 by tomoron #+# #+# */ -/* Updated: 2023/11/02 01:12:32 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -int ft_lstsize(t_list *lst) -{ - int res; - - res = 0; - while (lst) - { - res++; - lst = lst->next; - } - return (res); -} diff --git a/2024/14/libft/ft_memchr.c b/2024/14/libft/ft_memchr.c deleted file mode 100755 index 1691bba..0000000 --- a/2024/14/libft/ft_memchr.c +++ /dev/null @@ -1,28 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memchr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/10/30 13:35:44 by tomoron #+# #+# */ -/* Updated: 2023/11/02 11:28:37 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void *ft_memchr(const void *s, int c, size_t n) -{ - unsigned long int i; - unsigned char *p; - - i = 0; - p = (unsigned char *) s; - while (i < n) - { - if (p[i] == (unsigned char)c) - return ((char *)p + i); - i++; - } - return (0); -} diff --git a/2024/14/libft/ft_memchr.o b/2024/14/libft/ft_memchr.o deleted file mode 100644 index dbd3464d3ce11f986ee8cd9f09816af66c006e5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3432 zcmbtWPiP!v6n`_bGrQ>~yGdJ{l-4x0jrP!;ZAvVu4K>BaZr4^?p(2QG_Rs7evpbW{ zO#Wi2G^i{=O+Y~qL>a@aeJ9|A~GqwD! zguv#VjqUAi%zO`V%6#vI@1;IzczBnp4BP#^{riUd_U+W1egHWR=XU`phd~)W9gRi- zLb^o8i2-H!vFNGjBYV&9dK~ksD#!w&0By8Q4ac!i}7;hd2L36*fmeAh9S1>iBnw=dmTkhUVE+^ zdf)QIOFhtc2t^3XH}D-%B5J6MY*A^avLhS;I#(5+|4R94)+`Op8Mafg%%PDneMBFF zqMNB1wS3vu^N=iCH6!U-wd7gDnRcz2CeK>=4CTvN z8yc@>DsUhV71IT?xk zFYbQC=^<)-lQXg2*W@R9G}%TEfOW*F!X@OAB;Ako5ThH94+;ll6dR>a5 z`1FtTZwsF+tz2L3|AjoHqi1g){Am51{lDv<-`96&{n+(2m>cz_J?B(rTCX zlo~}Yr`51lMiqHl9Zak7akYC~4eRP|t)%WjIF#1bRC(h?Ra(}fX<5cq{hLpaG%E{9 z$F*!DSvHH)HRohuaeA(NV#J&;TwN?I)pDh!CHv9p{Nk}h<8%}Ac6MgQuoK?5PuhlK z&Dwb*VOy4)teE-gY{6)|5t)qR779i&<9#{3>>XIg_cw@!;IHjYMg^Lu)n-;eY13Iz zKx46uEB+hfvnbHz(^{ee)ZhOk1!xqt(`8h5`qs&P&UbVN+Wo8L420u-Xs+x5l!*ur zHze=V!u{<{9YVx7=k4|2CVo)p+$ZdRQQ!js|L29yy~F-f0v{5b@t1^t zIDl7$ek6dKLO&Y7ZJ{3v;I7a|1NaT0j|K3$&}keJ@j6#LwRx`8>Hb?cB=evGetXFYabChmUgo_(4EB^@&8RXF@wL)IN_>jre7Hl zoW8T4sN)F>PLK)V#C??rYdns1%fe_LD#UMH=eel@t~8K*hhY5nhu`g_ps zCtfRa`oG7r-|q_%@5e|E`mTG}Owj#n0gMF_@cJ44424en=N}{9C+)unAC71I1H^)B zLI}1*{Vz%JQPB52v~{XKAo_Pf#8Q3g)nNTIh*8eq{rOl7g%8o@C$7(&?w4|5+d}q= h-;d`9V^p7r<2()EClrEbPqq|o3Tew@jkr$t=Wi}RRJZ^D diff --git a/2024/14/libft/ft_memcmp.c b/2024/14/libft/ft_memcmp.c deleted file mode 100755 index dc57e59..0000000 --- a/2024/14/libft/ft_memcmp.c +++ /dev/null @@ -1,28 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memcmp.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/10/30 13:59:31 by tomoron #+# #+# */ -/* Updated: 2023/11/02 10:23:04 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -int ft_memcmp(const void *s1, const void *s2, size_t n) -{ - unsigned int i; - unsigned char *str1; - unsigned char *str2; - - str1 = (unsigned char *)s1; - str2 = (unsigned char *)s2; - i = 0; - if (!n) - return (0); - while (str1[i] == str2[i] && i < n - 1) - i++; - return (str1[i] - str2[i]); -} diff --git a/2024/14/libft/ft_memcmp.o b/2024/14/libft/ft_memcmp.o deleted file mode 100644 index 48c2183ce7a74fd0d792e256ef89153b6d9785ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3568 zcmbtWU1%It6h1SvcXpFac9S$V>3?b)tyOYjL z(j*XD46TVl+KPQpL8~AX3}O+q(wBk{iTGfB@+C-L3hj&32T^Dtp0jiB?qr-7>4ClH zobUYIIdkusJsUrMSe7IZB*6iwYXSv$5UR^VRdEQ~(Q_m*e>X8d^B^%lelIaUawoA6 zM>&2QIqLD{rT7YYCuV2vK=gbQic9fFgxnveg(P&ny)e8I{jMp5;_|`>itR1ExAy%y z7hj5=Z%3Df_)217_)cQ>zLeOv9R1)HTHcEj0FUpmZMyhr<8? zO(Nq^r_%jgcz^im4M*3#umONEkU2yFYX2HF_!Mp^v>tOgQK((P9|Nh{MhUjmn=Hc( zG!eCq#4mb-3zlo9JzueL%;Kf$IeO?zh?iI&DPK^s69Ewn&?r zuw!^3HX}wqqU!rP7-_j6zu2tG-=YV=&xlir6UZe=dKhUYMmGt6C~T8atdfFqlx=nN ztsBp6`BeVn%lWToe)xWWXP!Ky-G}aN|Kj?U&A)5kJk<0;J^;{A506M}W8>c}s2*b* z)t9O~Kzy93>T66<^Gv?U8c=LsWUY&Av(2{U*p5NgeT;2CrsOX%S=lhi0_smpzQ`J1 zXYJ}DYg=Tp#w7K5H9RQGxZnTtzG9W)WX!S+Q;!uYxzVzp-m7Ol9 z^V8Gjv!ydrdwQyk?>S?p#>RBB$2ll5Q@4z9Go$yIhGEBwl}u?otJhyV9-m~=va?w| zmvr8=R&ZMBv))830DrFfm_UJA7uT2-wD^$%svnHruA}7gP@uu3)kOuOb;Ttq(CX40 zF^#OvwNEh{M8!t5yLT%x5RT`hwzDTtCL%mom7HZ8mkFn*6L|$E+&vBG>JSNB&n z;=wO+J;k|qKcHpx^msm*N~cYI0yJBnv_Z=l<+6@rSTprfihJOMO&YnJrQ4PWLP&_E zVnxTxi@GZ$mCd>byW3Q({MnHv{GrJoTMoHGOWo&={cYmk~uR~ zUOPB6EN!RKpjlI8;*U*Bn8AJjM8Zz~a()v4=hRm>(IgXq@5z{wG>9kHr1ofw(s(h2U4G zN{1X)TfM$p(c)J>#2Z@R0aTwLac4yRy@-*Exc?|t=`gSVnE*H!^#wnPxRBkhcX_=&X!NUpmDiu-!PI}c ztKRwt5u=>m^V2~|kv?}=Z58zee;+N%@l^xaxtbFSVtxpW>Jy1LM+2be^Y)%>H+cOA K+>zq^&d +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/10/30 12:42:28 by tomoron #+# #+# */ -/* Updated: 2023/11/02 11:05:58 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void *ft_memcpy(void *dest, const void *src, size_t n) -{ - unsigned int i; - char *d; - char *s; - - d = (char *)dest; - s = (char *)src; - i = 0; - while (i < n && d && s) - { - d[i] = s[i]; - i++; - } - return (d); -} diff --git a/2024/14/libft/ft_memcpy.o b/2024/14/libft/ft_memcpy.o deleted file mode 100644 index 45c08812bcf83a93193444df6d035229f3de77ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3456 zcmbtWPiz!r6n`_bv%Brm-L_O(EJ{JD9O!IIs#ZZ*V^_*Q(~w|Dlq}ob*+1#-OqrQ2 zZ6iWbP?iP-6ZBw$N{oTT19&hoCI*YSR~j3b;K;d*>K%X)XW5QVdT-V>K|j((|?auD-Xu1NAHa- zB+*VTqeh%ux|>{~=!N7;_4}baW4jLDyO3Or&G#aQaQ^f%5Iz?{jA#jBSMMNkF}Zj{ zik(-Hy}y-Q3(2L0!z&lN!e}j{b)hSaL(boks>zl6pRBH~5`X+hsYB}TU#}|tR(E@M zZ+}N`XVC5jkYliaJ%F+el>R-D2o?)y5;+q+O8<+IU6E%t?q9!mBY>)cEGS9{4mZG1 z45t!)8Xqkia6mT|(FgcbL8`5g1W(l0Plor4NyZWL$Ywqsg)ykO)e%k~S|*~#g`b3?|d?8({e zTzMitH)lOtIyE~uP+Qx9Q&xIvO1B2wy^mYEZC0#|K46)q6E7N>QYEX`Hx*ArDrGy_ zte#7`+o%=X6>IkV7Rdnox!TO9z}jjxxD`+uFargGY&K}cdt5vo1zJ3)ZYn?x{-`L> z@d!yLqti1_Zgf7Nt?2j8mPa5S&%@fx9z&ai_)yJqADe|uJiQ%{%bIv^cT;-*z9R6TkAF+xVINPI zDanYd*4}qP;N3o+Zc7qgPufrKsp}&r3UOY3YmIf+nRAJvuL23J5ApmyJBdVLe%^(! zPiW@f7ns-2Kc9M^ftJ-LD*04;V#3m=L38vO2egb?F6($zYL;F~iwN7XQf4k^>yFJy zNU>Qe8annXVoypsn{6bDM$QDyFdbdn_uA0`+ev38K`WJ}%PES*ySpKu1{H)}Nad__ zx$%b3u%MHk0L`8)lm6dw7f0~+84q|vG}A9k2u=agjjvz4sW`Pasbr+~;W4)17n-bpD$ycC(WO}8r<{D(>+aN`se?RsJ{VyUg7$zPotAYX(iAJ;c?-BjO?@909hCj|{{!`@qb3zKjqA9;7;1Pf9$LMQTe^At) z5xG>q_V-(0u740Qjp<+i??nC2L_905&zimi%Ar*g)me@q&G!d$RG) +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/10/30 13:20:17 by tomoron #+# #+# */ -/* Updated: 2023/11/02 10:23:24 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void *ft_memmove(void *dest, const void *src, size_t n) -{ - unsigned int i; - unsigned char *d; - unsigned char *s; - - d = (unsigned char *) dest; - s = (unsigned char *) src; - i = 0; - while (i < n && d && s) - { - if (d > s) - d[n - i - 1] = s[n - i - 1]; - else - d[i] = s[i]; - i++; - } - return (dest); -} diff --git a/2024/14/libft/ft_memmove.o b/2024/14/libft/ft_memmove.o deleted file mode 100644 index 1b638ddfe941b7af4bf89f01b75abc2c037ae203..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3592 zcmb_eU1%It6h1SvcYm@;Hh*mrQrl=7tCewTQCapV=R?yAx+- z(3%Tcf z-~G}aBjf9rqjy6KJ;)(kIC~!mUkD;bvIC)UtgMBi#>lYwy+^x>F`%1M3#|!NaW=X|3(LwFO9Ep z4SG0$>sh!ZEk@TilAD{G82jj*Z>3hLudkgceMViPn*~51du~;tQ|nv14`e) zU=Ua8Q6(B2?Na()3XTMy>ps^0N;d#wAajZWyhAn67s93ZpT#b)9TVE2h(5+Y29h5Q z9_LeAhcCmA#9@>7Vy7s6$y1@ElOAY(A1NlU%(ALG?SHpW3DkMtT-Wkm>^LnXwa9ABw zhaqFdi(0X$&uD52!a2RDg)O}pKBAdZmOfpz2|X3wKd^r&JUA3CEijD~l(sYly_5wrKd;3t$Zyg4k_Blnp%J&lpmN;y=ISmL@3!5f`8PnC zZIOB!eg0)Ej2%eRAGON&In>;8Nj}`Pv7|J>W<&kn~zm3m-XN`+6r%$SXaZ} z%;OznUEbHoVjn28p!XCDEwi=^>$tAu{cTKEIwQ>I{ecBg>KkM2-YnaOZuc0&fu0C! zA7h>fL#APj`6H|`!dfd#(EApqz0Lv_nwK%p{4#4e&17$IOqOvo|K<~hOZnNbY3YU* z&XqD#Mf1h<+|*3&z+mZ2`n|dId@-4wpEq78oS7TwuY8gIGe%;1S~L3X%M&&4gfE1WN-3gxusxC?lt;&IbTr?pJn{`zXpKIpprH^_S6;by%-1*)f9GpvA8g9T8) zE8H5ZIIo#wL;=TRTEo*D@nln=^$C({y3Mgp@m7e7-GJlH)rt(n<2|abY#aL2i1$@I zyW7Qm;%Rpxudu{B9|$TdYJwMeTWq?@Kf|%8FQGrd`7W3KZH`6F34NCHy)J!$<2^2Z zn&Z7L-r#tji$BltfQ$c-;~^Kn$nmg?|Aga+i@(OPI8S;ZoVTu*j}zzQ#re@Wh**-+ z4+}NHi~a1k=_BXXk536cug#=fa zmJ!!88B?=N5rmX*3;B|UWs2All1Qg(iF_%egIdxpO+9*Ivfs24sVPtkg_&ZUwD@b_ zsQj8#l%Eq?E}k(GMb{&t;^bB$3930)B>O+L?=g?F-bC8H{3HD$2yW?oosBA=IQL63 z%0;5SIRsHx0#mFzCyfO;IU|JJy0uhKZjPiMa8lf39{z-u4wBxLQ6b=Vl|K@vImUmC zYTh4F@4Jz&H-D#W2aejN+Pk$oaire-1N=ZIcmU1se9y%E2aqR;sCRTL?M*)ar-I;C z%rERop`t=aCFL-)y>#bknmvXzErrL|O3TyKC zs(?G4^)7WC?bkLp&9_@k)5YV5tBmc4^$Yq-bn5N@TAlqjp;p9;{eO;}*o(+Xc7o6U zr;|kAt^EwSdh_4p^Uv~lI{(Ul@*Io#4t<8 diff --git a/2024/14/libft/ft_memset.c b/2024/14/libft/ft_memset.c deleted file mode 100755 index a8408d0..0000000 --- a/2024/14/libft/ft_memset.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memset.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/10/30 12:36:09 by tomoron #+# #+# */ -/* Updated: 2023/11/02 10:23:45 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void *ft_memset(void *s, int c, size_t n) -{ - unsigned int i; - char *p; - - p = (char *)s; - i = 0; - while (i < n) - { - p[i] = c; - i++; - } - return (s); -} diff --git a/2024/14/libft/ft_memset.o b/2024/14/libft/ft_memset.o deleted file mode 100644 index 4e3655c774887496e5b4031c05e31f38c3012b1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3352 zcmbtWO>7%g5T4!juAR7XlBV=W{Y#;NBGv1p3MkN0jHs!b{-~-bR6ubZ?>aWIchlWX zngmr;3ZR%$pa&!*4*ZBChxUfV1;L@c@FS3*Cr&{MH;{UW)I*r@zOgs2z5pZb&dfL8 zym{~Kn`gg~JMo;VD8Qn?VQ71d0&GpR?QGM`!X{*%%{TtYH!iO>X71)2XIJu9bF2AA z?#`{;GLf$4mh%U5E4_<5o6g;(Z;^24>dED$O$m%Gexo#U%YXj5wzfuz=f6|>m7$>l zT^sVY^ljNb)W3bB;co#@d*RpsfVLO3p~J~!5+G(O6wGebhMr6wOg^&h*uc}<0CXKx z0a1c6y3URF;w%!IajY;4y|?huL1`{dft~H8t8fZKBb%0{g#p3pYLV{iz49iRUy zrCQOM9Gta1zv?=JBV*=>IR@pRP`B&89hfD^RNT6q3EX<-i0w}W?sQ8R-BRYj@PX0H z$Y`ckohS!TsuaC;GWbw}suO?%Gmc-KbZl#|<~oz$R~PI;0M#~3tZCSQi_jr*U^-4N zTU&##w#QJ9Ap_uJ#Hq$<)QY0qOZAYV zlZy`;yHzxsqM_ZZ?+X3lAAb7TOr;o>KHw_lh1f#*O28*NmPt4(aN+-fdKL%{Zqg0t`K+tJn1I^SWvz$5j>U|C`;; zIMum~AGn^KsW|1Sy8nbVKQ&uJyU-3*KY3OY_6&=1!(BdBy2z+e?R^ zIpf*BJL8q?wCB1(rs|YxGnU={e)#bV1wXJXyIcrAnOO<9ro;Pd#A5LGT89v5(At%C zVGSdlL<6G}jO@tSh%hwhig;~P18Us+MT7qPz+H%JjLeg}m@9T;JUUw*fpGlpt(iT5 zHVNVJrWL++3!89S9goYJ@Ms@XFOV?KviFeN%&>qACmBQgwOj)9UVP&gCb5? z6n{|Qv=5w1(8ChW>p39di^4xD;qME-D6~8uFfDsxX0lM6nDFdbFavuo0JG%Q>o(qn ztqT}T&#n~(*AKjcTQ1|h>~lIoY}TrdjqQqlB&BFs>w&6McENPqz&4MbI-B-`VrdG@ zT5YyoATD0h>+)$(0oav7*(=u9Ul1l142lzA`txD2*FpP{wL%_ zMCQ`}t4{TAi~4gSm-fH;w_5mI|2XXUF@=mGqQhP?L_TNU;H5=6@DbbkH;^qNCc diff --git a/2024/14/libft/ft_printf/Makefile b/2024/14/libft/ft_printf/Makefile deleted file mode 100755 index e691c80..0000000 --- a/2024/14/libft/ft_printf/Makefile +++ /dev/null @@ -1,52 +0,0 @@ -# **************************************************************************** # -# # -# ::: :::::::: # -# Makefile :+: :+: :+: # -# +:+ +:+ +:+ # -# By: tomoron +#+ +:+ +#+ # -# +#+#+#+#+#+ +#+ # -# Created: 2023/11/04 08:03:00 by tomoron #+# #+# # -# Updated: 2024/10/28 23:08:30 by tomoron ### ########.fr # -# # -# **************************************************************************** # - -NAME = libftprintf.a - -CC = cc - -SRCS = ft_protected_atoi.c\ - ft_convert.c\ - ft_isdigit.c\ - ft_parse_arg.c\ - ft_print_hex_ptr.c\ - ft_print_int.c\ - ft_print_unsigned_int.c\ - ft_printf.c\ - ft_putchar.c\ - ft_putstr.c\ - ft_strlen.c\ - ft_write_str_part.c - -OBJS = $(SRCS:.c=.o) - -FLAGS = -Wall -Wextra -Werror - -$(NAME): $(OBJS) - ar rcs $(NAME) $(OBJS) - -.c.o: - $(CC) $(FLAGS) -c $< -o $@ - -all: $(NAME) - -bonus: all - -clean: - rm -f $(OBJS) - -fclean: clean - rm -f $(NAME) - -re: fclean all - -.PHONY: bonus clean all re fclean diff --git a/2024/14/libft/ft_printf/ft_convert.c b/2024/14/libft/ft_printf/ft_convert.c deleted file mode 100755 index 61cc97c..0000000 --- a/2024/14/libft/ft_printf/ft_convert.c +++ /dev/null @@ -1,85 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_convert.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/03 23:24:31 by tomoron #+# #+# */ -/* Updated: 2023/11/07 23:55:33 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "ft_printf.h" - -size_t ft_fill_width(char c, int n) -{ - int res; - - res = n; - if (res < 0) - res = 0; - while (n > 0) - { - ft_putchar(c); - n--; - } - return (res); -} - -size_t ft_print_char(int c, t_flags flags) -{ - int res; - - res = 0; - if (flags.min_width && !flags.left_justify) - res += ft_fill_width(' ', flags.min_width - 1); - res += ft_putchar((char)c); - if (flags.min_width && flags.left_justify) - res += ft_fill_width(' ', flags.min_width - 1); - return (res); -} - -size_t ft_print_str(char *s, t_flags flags) -{ - int nb_to_print; - int res; - - res = 0; - if (!s && (flags.precision >= 6 || flags.precision == -1)) - s = "(null)"; - else if (!s) - s = ""; - nb_to_print = ft_strlen(s); - if (flags.precision != -1 && nb_to_print > flags.precision) - nb_to_print = flags.precision; - if (flags.min_width && !flags.left_justify) - res += ft_fill_width(' ', flags.min_width - nb_to_print); - write(1, s, nb_to_print); - if (flags.min_width && flags.left_justify) - res += ft_fill_width(' ', flags.min_width - nb_to_print); - return (res + nb_to_print); -} - -size_t ft_convert(char *s, t_flags flags, va_list args, int err) -{ - if (*s == 'c') - return (ft_print_char(va_arg(args, int), flags)); - else if (*s == 's') - return (ft_print_str(va_arg(args, char *), flags)); - else if (*s == 'p') - return (ft_print_ptr(va_arg(args, void *), flags)); - else if (*s == 'd' || *s == 'i') - return (ft_print_signed_int(va_arg(args, int), flags)); - else if (*s == 'u') - return (ft_print_unsigned_int(va_arg(args, unsigned int), flags)); - else if (*s == 'x') - return (ft_print_hex(va_arg(args, unsigned int), flags, 'L')); - else if (*s == 'X') - return (ft_print_hex(va_arg(args, unsigned int), flags, 'U')); - else if (*s == '%') - return (ft_putstr("%")); - else if (err != 2) - return (ft_putstr("%")); - else - return (0); -} diff --git a/2024/14/libft/ft_printf/ft_convert.o b/2024/14/libft/ft_printf/ft_convert.o deleted file mode 100644 index 92b117f30c6b97618304ae1c9616e912518ca0db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4128 zcmbtWUu;uV7(ZR-7%;d+`7=esOh&{YH;fmDpy?u4@54qw)5rs4t6gCYUAJtvP>qd) zw#xNVvKNvW6B83mNO;+c4<=-cfnkr55GB!s7ciY6rfN-Ygjm1dx#zTJx0_+{OYS}A z`+dLjo!|NHIj8;D=zXgx5Ma^*>~|n zZObEE%WoEqkZBubJNx*S;UbdDY-Czqr=IB;AKRkcD0Uhye>uoWF|*jitRbDXSP$aSQ&`zn;Rs^y;p+371eMrB`5 zyLMp>_l=ShZl{mq&8}3hq*kv))!Uh__^Vgu)hnA$+BIX5$~9~fuZVmt{%o>t|DBDB zA0$0f^vyf)&BNaJKJyR-6D7P$B`lkEx@1T0lk&1Q!*Xs+E1VH)qC(9(%r@@i+#TAd z&vUeI-ih2XV{>M(CzP9OwKouHb^#lYsxognJ*}oaXHvwp57T4JQsTQ5nsxS?4gqbQ zrejju+u2GT+IYR4A=K_bXS>)q^l`Q|Bb^X5t`*MK1x-WHRaMZm6S?XWbXf|TZWMG` z2%>fcii$x+(dZ&YQ&4nCRW#*9F8LHqN<~wRiYA33YFD7>QIn!*P|NcTE^C(13ZK<$ zHUWj_xx#JUhnjFA=NBt1WayGu5W9P#K_m}*I*VYgMCoBwX<93MUQ<>WLMmn#ENZ#F z?L1cG_(h;Tl>-DVyig}K3I#(5MRz4aFVo4Rq24*jXoWB9LJuJo2|Y@!DwN|Ff%=4+ z1WBPFH3|ho2u0V~JJZYOd(uPlx2Miidt{N?Zsa4i2dGuma{MAtpW597Nwpv~ss%%+ zMVHh@R;1Qjo2cz}t*{BBi?7pL{*chQe~G+Y_I{I=UozZ^G2%Chw7BM(o4C!6-Pn;z zCzCHTM!P4LjHXU>oQjW)Cq_~oUEO+@-c1~`jb6h7AHKr^nNVPB+p5+{`r^3P@W77X z)w4eINz0H1h;J z()jv?pl0@awK2k2kkOg)S&IAsjgW@F2(UKN1YG)%2nz}vRfWln-%$VQnkQ;P*jajT z$@r~E0QdtUz-vVPsK7&FLS7rfzMyBRJhzv@pA~ry34y$Zgr%3^zqSnCxeN|@OX+!U z8C>oKR2nsXOveHC74>1jTj-Jaw*blf{J%W7fgcg|!gA?Xr%f*@CO2iT%?rzUlsla1#cDy!p~nVaLlXnJIIHDFG|AwFn`za0pZJ5 z^5r?05OImieciIEb@iIH>(*1(z6Y2OE z;0Ngewi}LOX)%7Yf}!gl|FwdtRL8e&8I$9s|FbuK6l+s$QjDKcLF&u(OZZ3XELFen zajB6F@V9p-BBdNJ>vw~&U~hGVnhAPpwp)CEk%r%?2>SIuBFwKHyd7eqX)yo|_K1J} Fe*q-U3Ml{p diff --git a/2024/14/libft/ft_printf/ft_isdigit.c b/2024/14/libft/ft_printf/ft_isdigit.c deleted file mode 100755 index fe77533..0000000 --- a/2024/14/libft/ft_printf/ft_isdigit.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isdigit.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/13 18:10:01 by tomoron #+# #+# */ -/* Updated: 2023/10/30 12:13:53 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_isdigit(int c) -{ - if (!(c >= '0' && c <= '9')) - return (0); - return (1); -} diff --git a/2024/14/libft/ft_printf/ft_isdigit.o b/2024/14/libft/ft_printf/ft_isdigit.o deleted file mode 100644 index 383482ea16a3e4f95f36bda487990e7a52f01b6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1000 zcmb`F&r1S96vt=Pw8BavBCvzUAR3e|dXbH=JV=MYqu92NwzNNDcMuDtAPA%g|BU{R z4)u?8=-ADJVDGsz+q&7U2haE3=e_UDIy1MG+EGkVh%|+i$xkIIAul1QPO(asV6t8v zd<^=d`~E1u_OuKQ$VzL^X~^CxV;uZU`8h7|SQ$57iEe6kC)Z`JXE=7QP^1M~#7VRb zKM>{SlqkK7l1--;halYsj*hmEKL@LshuGmt(uM)7|FA0X1o@iGYsX3K7tR1#5Ao?< zz;a>|6*DTzS&tK{JC?<4PTIU_crBx20J9y==M~QK z?4sFrHH(FGR43HqF4xW>URxOd!RoL^e9k(mxK|eG2^>(Y(USr36IImmoMao%F>Lq< zP@fM&$URYSM!4Kx#w_$@9v&Tpi%=e&E&KYbnY#lv6q?`xiaPqHO28A~s_4tGBR1L+ u0CfxCQZM-~uy}3aK)3@BOrF04QWyRH1`I^M9X0PlcqSt1@Sf#5a{q5;jZVk_ diff --git a/2024/14/libft/ft_printf/ft_parse_arg.c b/2024/14/libft/ft_printf/ft_parse_arg.c deleted file mode 100755 index 09af1e2..0000000 --- a/2024/14/libft/ft_printf/ft_parse_arg.c +++ /dev/null @@ -1,89 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_parse_arg.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/03 11:43:10 by tomoron #+# #+# */ -/* Updated: 2023/11/15 14:32:59 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "ft_printf.h" - -int ft_is_char_in_flags(char *s, char c) -{ - int i; - - i = 0; - while (s[i] == '-' || s[i] == '0' || s[i] == '#' - || s[i] == ' ' || s[i] == '+') - { - if (s[i] == c) - return (1); - i++; - } - return (0); -} - -void ft_get_width_precision(char **s, va_list args, t_flags *flags, int *err) -{ - if (**s == '*') - flags->min_width = va_arg(args, int); - else - flags->min_width = ft_protected_atoi(*s); - while (ft_isdigit(**s) || **s == '*') - (*s)++; - flags->precision = -1; - if (**s == '.' && *(*s + 1) == '*') - flags->precision = va_arg(args, int); - else if (**s == '.') - { - if (ft_isdigit(*(*s + 1))) - flags->precision = ft_protected_atoi(*s + 1); - else - flags->precision = 0; - (*s)++; - } - while (ft_isdigit(**s) || **s == '.' || **s == '*') - (*s)++; - if (flags->min_width == -2 || flags->precision == -2) - *err = 3; -} - -void ft_get_flags(char **s, va_list args, t_flags *flags, int *err) -{ - flags->left_justify = ft_is_char_in_flags(*s, '-'); - flags->zero_padding = ft_is_char_in_flags(*s, '0'); - flags->always_sign_number = ft_is_char_in_flags(*s, '+'); - flags->blank_positive = ft_is_char_in_flags(*s, ' '); - flags->zero_x_prefix = ft_is_char_in_flags(*s, '#'); - while (**s == '-' || **s == '0' || **s == '#' - || **s == ' ' || **s == '+') - { - (*s)++; - } - return (ft_get_width_precision(s, args, flags, err)); -} - -size_t ft_parse_arg(char **s, va_list args, int *err) -{ - t_flags flags; - size_t res; - - res = 0; - if (**s == '%') - { - (*s)++; - ft_get_flags(s, args, &flags, err); - if (*err == 3) - return (0); - res += ft_convert(*s, flags, args, *err); - if (**s == 'c' || **s == 's' || **s == 'p' || **s == 'd' - || **s == 'i' || **s == 'u' || **s == 'x' - || **s == 'X' || **s == '%') - (*s)++; - } - return (res); -} diff --git a/2024/14/libft/ft_printf/ft_parse_arg.o b/2024/14/libft/ft_printf/ft_parse_arg.o deleted file mode 100644 index 7ed91ecf0f5924df8a379125e8ecbb40ae211969..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3344 zcmb_eVQ5=b6uz(N+H7{cQL6?N7g!Z>GVKu5~<^eU~W5Ey7lvzN4uwrNPRnTgKH zd(pf;216$dfB8oc1lyna6|#1i{*wLHL4zPmKv?}3p{$;B-@Pxlujzhy;JthA_nmX@ zJ?EbDk}ve>HwH9~NYThy(pyQCkQ>K(^EjWz$uZDOF#E4~b%)uX?^N{%O}&jAbMzf% z%(Q8JB)G1b|4vl(`_wY}Fq52ls}FOMGq3bvBAj_@A2S#Q22iW|{hu^iIRbp= zRi6^A&pbG@MJpqKH}zc%w1bWuy=^u$TW@!!_V)IG0Sv(1*-ea(nSakgfL&%^ffSbDKkR;}tRP`pUJgL(B zn3$jDs^0YS(^CmD^R~w9VCQE@0B+EXhhc_OFU}~ftf)TYnm_g$#@#*Otj6K|0RJVf=-~{igP+8+CF}s9X&wE6SnN63Fxe9k4b6E@vW+H7~&FDV5~mrBiNv1Ffi4Gc{UM0Ga_wH z`k9c+$kaf`Z&OQjgz413MQT-iP@Y-^AC#t6(g$U!HSL2gQR|EkDpTu4A9TU1 ze>GF0oB@)VlFfxtz=gnL-pS8y5@RWqTZmlF6pGoET;y~tdO8||EeILoZ$h+B-zQo* zq&+(_9J~QJ#7`YlUIXHC&0_$p2u}zezeE7& zhhr_!v#|1%QlFCY?-`Rj7BCd9yyE +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/05 15:58:57 by tomoron #+# #+# */ -/* Updated: 2023/11/05 15:58:58 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "ft_printf.h" - -int ft_calc_hex_len(long unsigned int n, t_flags flags) -{ - int res; - - res = 1; - if (n == 0 && flags.precision == 0) - return (0); - while (n > 15) - { - res++; - n /= 16; - } - return (res); -} - -void ft_put_hex(unsigned long int n, char mode) -{ - if (n > 15) - ft_put_hex(n / 16, mode); - if (mode == 'L') - write(1, &"0123456789abcdef"[n % 16], 1); - if (mode == 'U') - write(1, &"0123456789ABCDEF"[n % 16], 1); -} - -size_t ft_print_ptr(void *ptr, t_flags flags) -{ - int len; - int res; - - res = 0; - if (!ptr) - return (ft_print_str("(nil)", flags)); - len = ft_calc_hex_len((long unsigned int)ptr, flags) + 2; - if (flags.min_width && !flags.left_justify) - res += ft_fill_width(' ', flags.min_width - len); - ft_putstr("0x"); - ft_put_hex((unsigned long int)ptr, 'L'); - if (flags.min_width && flags.left_justify) - res += ft_fill_width(' ', flags.min_width - len); - return (res + len); -} - -size_t ft_write_blank(int blank_len, t_flags flags, char mode) -{ - size_t res; - - res = 0; - if (blank_len > 0 && ((flags.left_justify && mode == 'A') - || (!flags.left_justify && mode == 'B'))) - { - if (flags.zero_padding && flags.precision == -1) - res += ft_fill_width('0', blank_len); - else - res += ft_fill_width(' ', blank_len); - } - return (res); -} - -size_t ft_print_hex(unsigned int nb, t_flags flags, char mode) -{ - int blank_len; - int zero_len; - int number_len; - size_t res; - - number_len = ft_calc_hex_len(nb, flags); - res = number_len; - zero_len = 0; - if (flags.precision > number_len) - zero_len = flags.precision - number_len; - blank_len = flags.min_width - zero_len - number_len; - blank_len -= flags.zero_x_prefix * 2; - res += ft_write_blank(blank_len, flags, 'B'); - if (flags.zero_x_prefix && nb && mode == 'L') - res += ft_putstr("0x"); - if (flags.zero_x_prefix && nb && mode == 'U') - res += ft_putstr("0X"); - res += ft_fill_width('0', zero_len); - if (flags.precision != 0 || nb != 0) - ft_put_hex(nb, mode); - res += ft_write_blank(blank_len, flags, 'A'); - return (res); -} diff --git a/2024/14/libft/ft_printf/ft_print_hex_ptr.o b/2024/14/libft/ft_printf/ft_print_hex_ptr.o deleted file mode 100644 index 007b24d21d56678ea3f90f00db4054e0a0bfb6a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3632 zcmbtXU1(fI6rRn-G;Pz|RieZnY?KHsp_imTHm$90+TMD>tOl{r2gADAY?{!`kLjje z#b98Qn#(1nFG3%DDEOogK8b%wVn}I3g;Mk((3jv3Y+=%!REUwC<$2hfhQ&^3p0S<3>=`R$JJz!8jOQ1v z9L?>_cwQJ&PjTv6%b9c|R&`h{T18slZRLkEY8u96YPwb~^FzR~axlr;^Vw=R&ELJV zwzdX|V-;Pi*uBu_k!kFnq_w|)CKn1%=dpcZ+Ij$o1vq>ZLfaiL*z^BZ8?$2%veY(a ztp}Mxr!n=MC$$Q8X4$Z34pC+YZq70E@A%QQ&umfK&fExfFL?RL%8;mfewtma*Ji6J&C;c{^@p?ZA%?zJ8Rx02|MCmejnuR(hS>l2_Nt z22ti~C~yHWq6{~}-3!Lp2raCL&p9yf|&G+KW~mTZ_ziQ5aWPd>CeVkjY(G zpt7r(LWeOaTh5bAb(bV3jHxbVldgu*p3!3N_HF-W@@{02pwvxgl=TW`^!qUdzANyjmoDKz5WOsmBb@fwPFKy(*g%Nx)e< z7}l2VR5{*dl(4INp|x%QfrE!$JluXH))Vhd^ocUiapL4D>$KQ2G?3gYTGOKStPt^J zZ0KCm#l+}^f#IR1wsy14Y!^HnDe(TAB9IORp03+gdlfIrGr%}V@AA`8AG%z1a#u}N z5*ohj7;(^5eoAt;B!8PY=otK!Cf&y%uGWhGE%E261gi0w_!FG^yr!g}&%_;Y;%rKi z!ch ze>TD2ka?#cJ^r6G+|c3)P!U9Tdi*sKC)49Us_AcoOr7hMP4wT=aQ$3U8m{NzD-GA< zY{Fh7#wm~Pt;628j8Dk*I~BOP2THE|sQ$fPsW0IpNs}Kb}N?v~M&v zm?#Ip4X~jZ7Yrg5>j8gn(BocM=0O>sc|c9}t4SNY4)?}VF`BlSZ8BB=i~S61nc{VR zqP*;&dU;R$mH+;!Ir*~~R8j9NF;dw33h|5VBe~r0<~<1kRl-U^^6PABP*^q@!{L;7 ziPY#b!5ZH!Eu+K1gSpJrInL%lvd2csUs_a$%J_Z)-TpI?Pz$npKS$|mu b&z{1{`1wynW$e_el?|cZaoTb3%KiTXEQlA; diff --git a/2024/14/libft/ft_printf/ft_print_int.c b/2024/14/libft/ft_printf/ft_print_int.c deleted file mode 100755 index b710860..0000000 --- a/2024/14/libft/ft_printf/ft_print_int.c +++ /dev/null @@ -1,99 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_print_int.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/05 15:52:46 by tomoron #+# #+# */ -/* Updated: 2023/11/05 15:53:56 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "ft_printf.h" - -int ft_calc_signed_int_len(int nb, t_flags flags) -{ - int res; - long int n; - - res = 1; - n = (long int) nb; - if (flags.precision == 0 && nb == 0) - return (0); - if (n < 0) - { - n = n * -1; - } - while (n > 9) - { - res++; - n /= 10; - } - return (res); -} - -size_t ft_putsign(int nb, t_flags flags, int sign) -{ - if (nb < 0) - return (ft_putchar('-')); - if (sign && flags.blank_positive) - return (ft_putchar(' ')); - if (sign) - return (ft_putchar('+')); - return (0); -} - -int ft_print_signed_int_blank_sign(int nb, t_flags flags, size_t *res) -{ - int blank_len; - int zero_len; - int number_len; - int sign; - - number_len = ft_calc_signed_int_len(nb, flags); - sign = (nb < 0) || flags.always_sign_number || flags.blank_positive; - zero_len = 0; - if (flags.precision > number_len) - zero_len = flags.precision - number_len; - blank_len = flags.min_width - zero_len - number_len - sign; - if (blank_len > 0 && !flags.left_justify && ((!flags.zero_padding - && nb != 0) || (flags.zero_padding && flags.precision != -1))) - *res += ft_fill_width(' ', blank_len); - *res += ft_putsign(nb, flags, sign); - if (blank_len > 0 && !flags.left_justify && flags.zero_padding - && flags.precision == -1) - *res += ft_fill_width('0', blank_len); - *res += ft_fill_width('0', zero_len); - return (blank_len); -} - -void ft_put_lu_nbr(long unsigned int nb) -{ - if (nb > 9) - ft_put_lu_nbr(nb / 10); - ft_putchar("0123456789"[nb % 10]); -} - -size_t ft_print_signed_int(int nb, t_flags flags) -{ - int blank_len; - long int n; - size_t res; - - res = ft_calc_signed_int_len(nb, flags); - n = (long int)nb; - if (n < 0) - n *= -1; - blank_len = ft_print_signed_int_blank_sign(nb, flags, &res); - if (flags.precision != 0 || nb != 0) - ft_put_lu_nbr((long unsigned int)n); - if (blank_len > 0 && flags.left_justify) - { - if (flags.zero_padding) - res += ft_fill_width('0', blank_len); - else - res += ft_fill_width(' ', blank_len); - } - return (res); -} diff --git a/2024/14/libft/ft_printf/ft_print_int.o b/2024/14/libft/ft_printf/ft_print_int.o deleted file mode 100644 index 941e2d1392b0f7c682e5123eb05fc06b898a7d83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3136 zcmbtWUuauZ7(Z#dHg(-@)H&)OScD3Wvdc1ct2jnDELrB9|U0;R7jx@85R~H7=Pcn=cK2%EfoCV-tT2mW!hGSX$zFsoG>a4(=jS*>k@y!#KQ{@!Rb;CGC=Yt#pqwIc<%y?X5RFx5mf$J%i6RomLYRQJQb zbPTTwG2yMP4PanfRi+gmB?zytXwj9CS-laSk)E}hyd8V#wvD*_-^!2 zuTg>BYm^;h-L}@5ws=9N?!)Pwlg3ONEIJ9QN}GK|#fy(Ot?q_ad&uO?VBN_=HkyE z75!31zwEVF%#Wzy&7^@2!zS~#me;FF*Q<&u%am;)k5k`E_t9~comkDg%gs|S@=NPl zRlW{>y%%5gcA;$JFpAGfgCB;s{WWEiTTv%n_Xogp^EIVIqz4Xu9kKt>!R6zT6Hh$( z)X7tQPcxQGCo-eqOR4Pi_*5nw>C+>6A7h6o01|lTbrzTj1s?9|2wuhKi29Qr5{F*T z9t_R3oITLqQUt^EohBTzK(D5MzUhCHaLAAJd6WLu8v!Cv?sv%vd5vDu-_qZV|CDgZ z;Vtp^@_5g){rv-=Hg>16-NRTbYuN@L1rk7nl>K5b4Sk=&=X(I`C4pZRJic~}&)^9O zOjU2dpgdt(1BCAd^e1?B;?sp9epQsp_XZgK3J^ZfiUEZ03G_8?(V7`+$5Y4Go#gf| z_`kd07esxOhaQ>dsHlT59D5T_DL7qE$^TlxRsJu#;17!RQ2tIOk1lWuqoK@yO5v;P zeP6-V`u|Yy4kb@R!PR*q6b$jN_my4nFlRH~DPoBniTZHaFK_v9*%t*LF3G9D_YB-J|)00z^lPMbX>(jX`=j3zobUvOL zl2&poA%_&XQ=a$`z8w=hF}ah8bW)imo=#<$o|(#}^cT;aKQ^69BqxYAGM-My-yR>% zjWIo)zBCz63=iYuGb)Nsjm1Z@iOJOFgs50gGAcBe7=pe$$#r&WIFU;b9ML0UJN~!& z4H-lWY{@l8O$+(kQ_Z)y9!;Bik1*1zM1?UT`bGNucb#I15|sp@=S9MTn2>%usINp> ztXuF_p^0)r*iwBi=9S+uiHmeRhOjUm!svUW%2y(uew^b{iAy?o-o7MmT diff --git a/2024/14/libft/ft_printf/ft_print_unsigned_int.c b/2024/14/libft/ft_printf/ft_print_unsigned_int.c deleted file mode 100755 index e324164..0000000 --- a/2024/14/libft/ft_printf/ft_print_unsigned_int.c +++ /dev/null @@ -1,55 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_print_unsigned_int.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/05 16:06:48 by tomoron #+# #+# */ -/* Updated: 2023/11/05 16:06:49 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "ft_printf.h" - -int ft_calc_unsigned_int_len(unsigned int nb, t_flags flags) -{ - int res; - - res = 1; - if (nb == 0 && flags.precision == 0) - return (0); - while (nb > 9) - { - res++; - nb /= 10; - } - return (res); -} - -size_t ft_print_unsigned_int(unsigned int nb, t_flags flags) -{ - int blank_len; - int zero_len; - int number_len; - size_t res; - - number_len = ft_calc_unsigned_int_len(nb, flags); - res = number_len; - zero_len = 0; - if (flags.precision > number_len) - zero_len = flags.precision - number_len; - blank_len = flags.min_width - zero_len - number_len; - if (blank_len > 0 && !flags.left_justify && flags.zero_padding - && flags.precision == -1) - res += ft_fill_width('0', blank_len); - else if (blank_len > 0 && !flags.left_justify) - res += ft_fill_width(' ', blank_len); - res += ft_fill_width('0', zero_len); - if (flags.precision != 0 || nb != 0) - ft_put_lu_nbr(nb); - if (blank_len > 0 && flags.left_justify && flags.zero_padding) - res += ft_fill_width('0', blank_len); - else if (blank_len > 0 && flags.left_justify) - res += ft_fill_width(' ', blank_len); - return (res); -} diff --git a/2024/14/libft/ft_printf/ft_print_unsigned_int.o b/2024/14/libft/ft_printf/ft_print_unsigned_int.o deleted file mode 100644 index 932f2c13b22bbeb5b6584a39d1dace0743d82ed2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1944 zcmbtU&ubGw6rOF`+LqP?trGl!rSu>amsU_BibU$_9#Rj5f|s(U+f5tXY-_ryQHT~c zmM%++|Ae3i#fyk1l?uIk^Hu~Q1rHSh<`9VA+nq_bX)A~iX5M?>y!YmtH?#XxN!@Cb zBql^+*V(QoP{!gNyLQqyldK1kldAheT~lJJt5n=lZBwaIwo|IH=(AI>R8Ofm#W=iP zc$-R{a2V^G~@x#>1Qh4tZHP#da1gpKp5cM$itg zQ2RIn)F+@ulnV82dlX1eY*1uSu@i78VE}q>0syR3L#2YlsF8709OoUUE;^+;h>(Tu zxto5OV5>{O=tRUj#FTi`#r+G@^52 z>-T5Iq{kCXD#oPKy+^v9<0+j1PJ`qDO*f9lR@%n;I@?S{1Z&p_hrFSuC)OjcBtO7k z**~oTYG=P1`&Sr?u(o~h6(Gk#xX%R`y=uajp-FrW(9;+(0$OAk{z3SA9@h>X!KmZa zlO*`ZNH~3h0?!_TJBQ$JLwIMX&i4==u78}jpmpB?GxJyX_Ap&3aJ)EVZlgW9* zOv|=Wv{}a17V=rk)(X~QcGfaxG&oGw=W{s&1}ztC%`9lvbe=ptZR&esHPf(|Y|Yz- zeEZJig+)89->1M#)-<(;*%^C|$)>rK)6z3Dcx1DDb7M}+CJG z!`nm*kTVWh*7R(% diff --git a/2024/14/libft/ft_printf/ft_printf.c b/2024/14/libft/ft_printf/ft_printf.c deleted file mode 100755 index 19a0964..0000000 --- a/2024/14/libft/ft_printf/ft_printf.c +++ /dev/null @@ -1,67 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_printf.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/02 23:41:38 by tomoron #+# #+# */ -/* Updated: 2023/11/08 14:51:19 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "ft_printf.h" - -int ft_check_placeholders(const char *str) -{ - int err; - - err = 0; - while (*str) - { - while (*str && *str != '%') - str++; - if (*str == '%') - { - str++; - while (*str == '-' || *str == '0' || *str == '#' - || *str == ' ' || *str == '+' || ft_isdigit(*str)) - str++; - if (*str != 'c' && *str != 's' && *str != 'p' && *str != 'd' - && *str && *str != 'i' && *str != 'u' && *str != 'x' - && *str != 'X' && *str != '%') - err = 1; - if (!*str && err == 0) - err = 2; - if (*str == '%') - str++; - } - } - return (err); -} - -int ft_printf(const char *str, ...) -{ - va_list args; - size_t res; - char *s; - int err; - - if (!str) - return (-1); - va_start(args, str); - res = 0; - s = (char *)str; - err = ft_check_placeholders(s); - res += ft_write_str_part(&s); - while (*s) - { - res += ft_parse_arg(&s, args, &err); - if (err == 3) - break ; - res += ft_write_str_part(&s); - } - va_end(args); - if (err >= 2) - return (-1); - return (res); -} diff --git a/2024/14/libft/ft_printf/ft_printf.h b/2024/14/libft/ft_printf/ft_printf.h deleted file mode 100755 index dfffefe..0000000 --- a/2024/14/libft/ft_printf/ft_printf.h +++ /dev/null @@ -1,46 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_printf.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/02 23:42:00 by tomoron #+# #+# */ -/* Updated: 2023/11/15 14:31:34 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef FT_PRINTF_H -# define FT_PRINTF_H -# include -# include - -typedef struct s_flags -{ - int left_justify; - int zero_padding; - int always_sign_number; - int blank_positive; - int zero_x_prefix; - int min_width; - int precision; -} t_flags; - -int ft_printf(const char *str, ...); -size_t ft_write_str_part(char **s); -size_t ft_parse_arg(char **s, va_list args, int *err); -size_t ft_convert(char *s, t_flags flags, va_list args, int err); -size_t ft_putchar(char c); -size_t ft_putstr(char *s); -size_t ft_strlen(char const *s); -int ft_protected_atoi(const char *s); -int ft_isdigit(int c); -size_t ft_print_unsigned_int(unsigned int nb, t_flags flags); -size_t ft_print_signed_int(int nb, t_flags flags); -size_t ft_fill_width(char c, int n); -size_t ft_print_hex(unsigned int nb, t_flags flags, char mode); -size_t ft_print_ptr(void *ptr, t_flags flags); -size_t ft_print_str(char *s, t_flags flags); -void ft_put_lu_nbr(long unsigned int nb); - -#endif diff --git a/2024/14/libft/ft_printf/ft_printf.o b/2024/14/libft/ft_printf/ft_printf.o deleted file mode 100644 index 395280030a22accf8cf024ccb0268f21deabd06c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2224 zcmb_d&u<%55PoZi#6aO0L?HqMmQV$u>XL9F2ULvc(uWjKg@~F<dr?dO@MA)Jn;bBm4oCYN>}b&B2u-%*^;b=XsUf7-@IjeDlq` zdGp5WZ>+hGQ-;Bm80;k5w-n0Q^!WZdPs==e3Yhbvb58^hvZCYnHmzOsh&8LXI?H(Y z5E6A2!f$70;@~m6Vm;zvR?_%w7W9ts^%&5r)}xySZ$AO9?sL*Fg4hrptJnR#-|u5y z8PNU#QlqU117GGhBY1q`inYT-cen$A(*%Ao3cf+$2cuw)z_&-i;{+ZZg0uHw38gbC zednsRb9m{tUV4#-KMu1%f))?I*X;%mFX?uPhh^P{uAbFxmxrfydzpvt>Glc_-_-2| z9=@d8$9OmaHryOuy1KbG_CN4<8E;E(YBZ>QMB1wVbj{t=zy1E2wJUiUm`Rk|H zU_LHCz?lkT9=-!{e5ySSJ>gSPp49poQa_(3^-F_Pb(K#oU*}W)jk!+r7C>{Ib`F&2 zM3bb}v!rfiNcr0$@VB8}ENs)-1F+xy1B;BTzeE%^LY)YS^&eT#IHb7S^ywFCsR>vfMJIY;x8P6_W(y3lMhV<^!y*0 z7x6Sa3csh}_^DI)(?|kAKHiMNk88Nj&jAMo)5(-%=jpwVtMjGD#wVEBbSk##IV&Dp z^a_`nuICh5UbE1!n;tWZ^=j3rk;`qB+_Fo{;*wLmP-s-_qO(-5lwd5FS*v@FdHS>Y z6D`j!Ucg+Cq2(0pW|^6l%EfBIE|p+@%H(RgHE&Vw?JN}*n|9UNcbG+HLJgk%CFrlJ zsQ(Z736jXxjid|lyAN`6poVW8OVD%dc`@{I%<%>Q`ETQ>}I0pNYDaFUkFO5Z}PsbctpBf)2u3 z)vsV576+aGjO@QU7oHz`tm4)A9l+9a{W_>sc!shn<7FGEf9Oose*>^&?Z}&yfiW5& K7>7qn?*AWhtl~ug diff --git a/2024/14/libft/ft_printf/ft_protected_atoi.c b/2024/14/libft/ft_printf/ft_protected_atoi.c deleted file mode 100755 index 09dcfc9..0000000 --- a/2024/14/libft/ft_printf/ft_protected_atoi.c +++ /dev/null @@ -1,37 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_atoi.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/17 13:41:15 by tomoron #+# #+# */ -/* Updated: 2023/11/15 14:31:19 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_protected_atoi(const char *str) -{ - long long res; - int inv; - - res = 0; - inv = 1; - while (*str == ' ' || (*str >= '\t' && *str <= '\r')) - str++; - if (*str == '+' || *str == '-') - { - if (*str == '-') - inv *= -1; - str++; - } - while (*str >= '0' && *str <= '9') - { - res *= 10; - res += *str - '0'; - str++; - } - if (res > 2147483647) - return (-2); - return ((int)res * inv); -} diff --git a/2024/14/libft/ft_printf/ft_protected_atoi.o b/2024/14/libft/ft_printf/ft_protected_atoi.o deleted file mode 100644 index a70ff377e60cea4939b2115fb0e1fc7ca388b2d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1296 zcmb`G&ubGw6vtNFaD>Ax=svs1+NL)ADT9VC{%~IMzsghQ* zsftH0>cLBI`WHyRL$3Y_rj4+<#hZoT`rc+{v)S&^2a`ANGw=K6?aXACE#1vX5)mem zTVxaoO307QXs(7+mCQiqvgZBLyq&(*W!MscV14D=^jE2Vl54PIWp9223$6Oe zOoJUMud@*(^*?jU#}?2gI|4zI9Un@{{uxN-RndK``6^Wb?}2SeXT7 z|9ZSE#8VKLSvT-l7iCc$z@ky?Dc@k7L{B%vo;pp|iMpXEDl`8qwBm~{{Ji#FlOg6T z+TsJY`f|qyx2wFJ1#O!R{zB9{H{9G;zOb&x1_x~L=1C9gjKA!yT^VwIKJ9Cq=CP7Nb(|#TToFKo0v^AN; zE}JLhz+a52zukT5}y&e+GWbLjPaPfGToIrN{i^YKb*G z^0;A)V=@k5uJTx%n^?xT8#jEbsL#hC%-`^hE+;t0p$3<*o?!9R&uK6vmkrta*j)lU z +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/01 04:10:53 by tomoron #+# #+# */ -/* Updated: 2023/11/05 15:51:33 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "ft_printf.h" - -size_t ft_putchar(char c) -{ - write(1, &c, 1); - return (1); -} diff --git a/2024/14/libft/ft_printf/ft_putchar.o b/2024/14/libft/ft_printf/ft_putchar.o deleted file mode 100644 index bb8886f36087262d58e30b205f6baef4895b1ea3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1120 zcmb_aOH0E*5T3N9K2QmwBB;1_Wh5=dliC6`A(L}2)TQG>3JGtxE z+~vDzwLV+R;R9vmZW`e|Id7DA*Oo4y&D|$(JiAg%9l1fhT&<+i8Icwl%0Y}p1jgwW z7){fd8tUu6#nNfi$q2LbSr{>|VvEDcA|_D$2ewg9z(?3?IS#R3@;EA^n%?e(S{BXx zl?^bXv;;EQR~R9sbn2jYNq`7k&lb{cN)S%f_uYzwg3Q+%(ka;ih)PwuVs&F@t}boo z5QOI)`FZ=`0EbnC^5Jb+B|<~PCm5Neb97O;nbh^(@Ymf9nG$U%)(L3qx{|)}HTG{{r diff --git a/2024/14/libft/ft_printf/ft_putstr.c b/2024/14/libft/ft_printf/ft_putstr.c deleted file mode 100755 index c742ffc..0000000 --- a/2024/14/libft/ft_printf/ft_putstr.c +++ /dev/null @@ -1,19 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putstr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/01 04:13:29 by tomoron #+# #+# */ -/* Updated: 2023/11/05 14:42:32 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "ft_printf.h" - -size_t ft_putstr(char *s) -{ - if (s) - write(1, s, ft_strlen(s)); - return (ft_strlen(s)); -} diff --git a/2024/14/libft/ft_printf/ft_putstr.o b/2024/14/libft/ft_printf/ft_putstr.o deleted file mode 100644 index 5809448bc380d11b8cc502559f96566ebeeda2c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1224 zcmb_bK}%af5T2JrYm2rIu~M+mP`vcer5*&mNQy-FpdJKomGBx@BYp2BysS1Y1Pdu* z$i-h!`V;yO3fe>Q7xWJldgwuKIS6qk&Y0zq-a4@R&3^OE?CidMN5!?3jOT%v2TL$m z2@9Yz1HaIB3-ADyTe|&QxBmLN-R$aCvkQ+tKgY1{6uY`zywsg$_YcW+=ipMe&%RS_ zCM44O;cuTqISk^x{Gmze`_(u)Ml;K(AY!<^K{^LlyAysOVMPo28mj^sckCJdA{4GXGVjUp3U*tMnFfvwwwJcQ81pyH}EYIS4lW!(nl zcc8-XFe(K*J9zbb@IKkMhHIHhX*UTXGbp3Vps*{&uuOJHsSAFLjZ`fC zMn^GD9HDCkUdVToSo+&hF5PoM1dJ8lNb>I^Pxn5?@h6Pqh$MZ*Yk?DXriEbSvUmU5 z3*?1!rC;2I +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/10/30 12:34:41 by tomoron #+# #+# */ -/* Updated: 2023/11/04 08:19:20 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "ft_printf.h" - -size_t ft_strlen(const char *str) -{ - unsigned int n; - - n = 0; - while (str[n]) - n++; - return (n); -} diff --git a/2024/14/libft/ft_printf/ft_strlen.o b/2024/14/libft/ft_printf/ft_strlen.o deleted file mode 100644 index 2fefa23cffe35cd0fd9614c62d1c2f042309ae94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1000 zcmb_aO-sW-5S_HOt)R7th^U7iMR2ir=|LqTu{~4|N>3s+rfC)PAx$V%5DSVBdg;&b zX9ynjZ+P(FQOKdUI2(7{ZLBv3CbRF&yqV4J-YMn1m?Qx=3ASN~I1BJ3ka9@NFo~6w zlJ`;aZu_r_PuWse>38@2&Sn~B9x_OD761NO@)ZB`JqQ9sCoiBGs@2G~^rmxRTe*CJ z1tg5vd z{&oXMQ#VwipI7Tm)zpVFq5;7Mu6l;?+NAMc>rt{sNwBRrqa<09tyS}gTMAgrUcTR-}%k-I~#$25Zn$Z+&c(R>13 zW_cb~*q{YQP~8MN*K>Xqxp+CSF?7%e#?PMK{F&0GkPBm{#c*-Kx(R=27`225B CXjFXw diff --git a/2024/14/libft/ft_printf/ft_write_str_part.c b/2024/14/libft/ft_printf/ft_write_str_part.c deleted file mode 100755 index 3dc57ff..0000000 --- a/2024/14/libft/ft_printf/ft_write_str_part.c +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_write_str_part.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/03 11:16:38 by tomoron #+# #+# */ -/* Updated: 2023/11/05 15:50:41 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "ft_printf.h" - -size_t ft_write_str_part(char **s) -{ - size_t i; - - i = 0; - while ((*s)[i] != '%' && (*s)[i]) - i++; - if (i) - write(1, *s, i); - *s += i; - return (i); -} diff --git a/2024/14/libft/ft_printf/ft_write_str_part.o b/2024/14/libft/ft_printf/ft_write_str_part.o deleted file mode 100644 index 98ca5308dae147df9168bbe421d148d4db89a590..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1240 zcmbtS&1(};5T8wAT_tv-s0d2gi+J*poXklgviiU(A_Sx$%bIRKFuN(6M~p&M*jkLa zc=71PQ}K_`fP(*mUWGynLf2b_!ggl+Uiw&b^9Qpt^P8`?!@P9nZxsv!6b!fyN1kE< z9u|)5MrJnPBxW}GV4KIkZ9Z5Z^Y2bVAwG1*e2D69Vtp=~wNd={@*8K*+PIJpmdtnz z*834g-#U9+hV}XwrtF?R%u9GYGWftrc0Z+Q%H#C}tc`P%9#uYUCST~WJ1E(>Y;w`$ z0~0MQ|7Jh>3az#mF55jn>aKP|yH;m4R)@1xf-s&x0Ha?qE|!m*@37Y;2qVY zvRSx!YNqf3Gl-au1*A*xC!H28g0?)FP)2=5~ce^5T*StsoYjuLa577ua!e_VdHLrGs*Lni1-R=dhx44Mg zT86AjcJf!;rN|5Xf4i|3FzhV6$EcqLr2iWsb|_Bi@>3q?i(D*!vojbcjIj@sw%eE7JMdS3;vF>QLs#nx~ zG>}`Px9L#zb)7_8ysFhp* diff --git a/2024/14/libft/ft_printf/libftprintf.a b/2024/14/libft/ft_printf/libftprintf.a deleted file mode 100644 index a188b2a00b29157d35d384e4af73f828df1eb11c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26786 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 diff --git a/2024/14/libft/ft_putchar_fd.c b/2024/14/libft/ft_putchar_fd.c deleted file mode 100755 index f63e488..0000000 --- a/2024/14/libft/ft_putchar_fd.c +++ /dev/null @@ -1,17 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putchar_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/01 04:10:53 by tomoron #+# #+# */ -/* Updated: 2024/10/29 20:36:57 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void ft_putchar_fd(char c, int fd) -{ - (void) write(fd, &c, 1); -} diff --git a/2024/14/libft/ft_putchar_fd.o b/2024/14/libft/ft_putchar_fd.o deleted file mode 100644 index 645440cfbffd1a989e1fc0111927ba20082a364c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2944 zcmb`J&ubiY6u{qiW@od>wwq02O=`3WHcJcD*`yQy9#rrsf~O*aLOuBpC>}hBLJ<$`EugZ#H}hWe?Y9#J@xjh}-_Q5` zn(w@s_u7m0c-~> z2InRKGIL;;PUrJ^O!hqf98ft*tl+WTRxLP63?;GDiVX$Zdgp2e3d=~*+{!}X9C>7% ztjY{I8JNR`L*!qi(e}Elvzvae-wM043ybc8y9hy4Ti=KpYhJGwG~EW2*TRlpj>1m) zIlq4;3fJ#xFKm>L&mTWgUN}*1x9UN3e=IbBvOv&;RyTru*o*`59VTt1R)2_FR9m!2N!`UTAW%J)#Sxobv&jQc! zpXEE;&cNM4nwO2wK225sKD?-yrB3$xH@4`!o8_1jrzsP)w zweT9RWp;&o%x4Y%fY);dZ}D3CrxDhtVwU%b>HKl#R99jNxdwlN*HzYL{t;Cg+b8wqrOBU60_av`n7l+r{T=aCOT-K z)eS;$yJ6(JXD?iOvLAVkE8w=|H~Xm z{nL?}{U1eU=A@9n=z>D~x|qI)aWk#{6hV}4;w!}80s8Kk^-m$Aob&7_s>Fpl0$59Z z(JvtvTX%hzq4~T`-xUl>>;DJtU!F6apZ;wS{s`AM`~QRsJ*+pyzJ#QYEzKq_a#I`x zur~1*$dRqnZ0aKMi#kMG&R_6nXr$f$os|18Xz_CYA0sn+qTF{F%6FO=iRt?xvb6d+ ze*dd+R5CyGETw;`e};3K=fA=Svc&PCq`v5F+_29NLR4>v59t@UzWCAeCy{ls0{9sX T^XzHweTF#>AVvRGnEn3^bG-6s diff --git a/2024/14/libft/ft_putendl_fd.c b/2024/14/libft/ft_putendl_fd.c deleted file mode 100755 index 8d6b9c5..0000000 --- a/2024/14/libft/ft_putendl_fd.c +++ /dev/null @@ -1,21 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putendl_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/01 04:13:29 by tomoron #+# #+# */ -/* Updated: 2024/10/29 20:39:37 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void ft_putendl_fd(char *s, int fd) -{ - if (s) - { - write(fd, s, ft_strlen(s)); - write(fd, "\n", 1); - } -} diff --git a/2024/14/libft/ft_putendl_fd.o b/2024/14/libft/ft_putendl_fd.o deleted file mode 100644 index 594c108dd477b45ee407a53058b598c2019b9708..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3424 zcmbuBU1%It6vxlZ?96Vm`A(apjha=v*oStu36Z8B#trS(NeL38DNUeE_G31?c0a=I zBuxt;)`++SLGeY!mp)k$Uwrhz2U{Nn@k#K-hZX|*B1Q;Qi09nBCz%WrP&_bu&i&2* z+;i`pduMh%HFZT*6ktdRcH==SDBVgt z-m7czT7OsnV7z;<$Ef!MsG~61dp>$0sty2XiZa;?5PBBb*(iX10<`#eG>V}?VKh39 zVc1kCJ2{}mDe;A4FCPPl=%7kKU9@y!7dV6>UOFfdbU44K_g6zz=82)Hr|Gv>y$9Mk z3_>pv16?x|BNPdTg-*GqLq|mYaMgg0EZ)b^4MRr(LujEaJ)(!;Bn5>2g=I_W%3^HA zsnv_sN^E${95%-w@7hbtu2adC?0nA5LZVPDI|;X1PF!~CH{I&eo=;b^iIFoSqlw|s zM5&m`yO1rUYhc?GGcyx&_Un`LDf^AN>6C3B>=f#d&q1-`!Vwq{;r4mWUQO$p_Y zDR*W-S?y8=+rp6#@JT;~j4m>qw@2Z#D4Rsb30Jo7-t+VJAMS0TEPL8$+UKk8f zh);h=?bM$UF?`?J^6;ZC`c`lKb$8(E{d1Q>xX>!8$g~bcH(DPX*Yy^optl=&{rKB@ z*HvA6gkTOI-9=q7qLCx2fxZ8iMf5*_X1POuf5AH;_+vLnpy4L++cg9VX0Uk`nuqg! z^4cL=N(*{+Lf`65--|WCqZ42nbO%tXOXugH{eaCL&%F2utt0O`C>5>G58>j(;XPW3 zHoX4cZQ4bQ$%wb(#rz6EG+HkWFXqz((foSe)wB}c1IaTbZs5hbqZpGBZxK=RXGq4x zNy~cn#67Q4F&9c<&i(S*FprZ6jn5PF*P0mcRVa)(?He*aW6a-dVu(r4d{wqj`1l>! zKI!9Yvd#0NBS>q?#^WdM-Lo+%Am-)INlxRTi_Me)^HZ{IN$>B!y$#HqlUZK0)0s@o zSpl==l+vc_th!)ktL3tTFR~_U%Ia>-uIBS~$E|ZFA`VN%ieroRlqsC(O%}-IQ0D=~ zO1?_(P861$3Ye9u>zJ>+I(xeArn5J}ER|Nub{ezl#YMPPE4t2sbgCtRQ?T>3blLH} ziT&>y8j_pNfLXs?7QR-^rQI~)VRM+5@PGN=Fq_Vg-+rRQfYwS6z+=9q*ssK-d{3E_ z5x)=k2JahgcVa;MD#<|l`*O1_$TpoD+E2V6`8+&9M)gPV^4h1e;oXCTc>G?^u{ZxS z*;w&HPd?*%0Hb?7vePmPrT5pWAP<^9{&^9$&~!la_r9Na{&a5reNxK0gnXWek@>aH zBMYiukoA8SSs?1u+WXi4g6#8*)Uo?g7P`wodalntgPdcp^pt#XJWsyo*WSPzLE}%# z4awu8^`ozyfBeUhQJ<{CP}pTzzmI|RT%UadImce%!WN&-`m-LF4~e*5~g4%7po~Um*>u|DLRG$vmo0-&%kDE6Au% z|N0-5FD3r|qeK|jXa5OOZEClQ?kypZKR?R)yslKAjPsf;fIl%{4KwoBW<HKrU$i F`~#^wJ23zN diff --git a/2024/14/libft/ft_putnbr_fd.c b/2024/14/libft/ft_putnbr_fd.c deleted file mode 100755 index 6a3a8a1..0000000 --- a/2024/14/libft/ft_putnbr_fd.c +++ /dev/null @@ -1,33 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putnbr_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/11 23:27:29 by tomoron #+# #+# */ -/* Updated: 2024/10/29 20:40:28 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void ft_putnbr_fd(int nb, int fd) -{ - if (nb >= 10) - { - ft_putnbr_fd(nb / 10, fd); - ft_putchar_fd((nb % 10) + 48, fd); - } - else if (nb < 0) - { - if (nb == -2147483648) - write(fd, "-2147483648", 11); - else - { - ft_putchar_fd('-', fd); - ft_putnbr_fd(nb * -1, fd); - } - } - else - ft_putchar_fd((nb % 10) + 48, fd); -} diff --git a/2024/14/libft/ft_putnbr_fd.o b/2024/14/libft/ft_putnbr_fd.o deleted file mode 100644 index 9df9287acbdfd66de1b1d0f4e79b5aa34506944f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3680 zcmbW2T})g>6oAjYcjxYw1$Ke9Kv4@?A}03oBU-eGG?sR28q-v11k+sh=PtW}-NoGt zZHt5?z{KUz%NAoL{er zy!I%LUmjV%UW5AW-~U+p;_~e3&lID;#m{>#tsswlS{}Od5{_dyM6Mh~E0!Etk3EUT z`N+jqikx4KU7>m5Mi_s*+3t7)v#U4vGntxS-{4$#+K~QJLL7$J;&Sx#t^Iwy{RjF7 z9(k;P0JH|Jv$IJUoyF#8b6aOaTccTO2GINASkn{XgJHb|z|gc~O#p!oWCySuu@8*S zp>P;Ylgw~<2+g3SQS@+&(Mf?1wmyaRh6Lym&=iouCP4ExSA%=EwqDnksX!E+mIp2R z`(QkdMu2vu7KCAHW*`&{dVbm|0resM%~wpQPvSV5XG3KZL{J2v3!%XFZzMS#&ri0` zImJ@8kZn>t=dcK7x4^>_F7 zcTZ;%X%~{2coA&-(8-gB#_Z>gjgQ#RkDVB??TR@epMY%Mg>(vbVvz#8EvYQGYGKla zf=INNPl9$fs>^;0JWxRYxQ-c=muaz zW3P7^3~jF-5%+mEtlhYzU%Wf`;SY0}wYtzkT>xN*jscz+^_tjG^NldgXGGM@h$eGT zw7x5hLD6WAiCx%hyC50{MTbR9Hy1_ym`PgJS`T z7#EG>{)vo<3qmu)M#l@fiB2*L&x0_(Rf{ zc7m!}-zdvrh11?J&q+=@YAF1SFG9 zOU^@lhqOuUl{RtmWq;PhgVKi-p9|(ZFYht)eKLmcIr9^eC#S%go}SCuar7-^C*e#n>pB%dltBU~W2cMp zoKyK_D8Eqj6~S*$#Sngos30%)jcjJV6tzO>6|F7?2DBVN9d@T=gZTXw9 zIqd6tA2VWfcT^dcon;lG&F6-31PwY@!wjUJkeBqD?9;uW^Tg+o@57(SD1RR|RRXe5 zzJEN%^{bj~_8}dWu%JS;{l29tj6xQqV}?44_~Y|9R&D(uxuFv>me#MnPrUvv2C!{ri6q8O_;)O_e5j`Om8mZO+d+p)l3;s*LA# z@)*Z)|1=ua>K~Tpm+PYX={w=Ce-E;1^?xMu@5XUeI6vzJ9AsPd`%K2GjBLN}^)j3B zyMHOcfNuh>pYg|NR9pXyTtDw0t)K21$1}f%%wH3t%}3$3*V+2<`+k5!)$(7G`C~Ga z^3%80pZ^Flnv?%0G(EX3A0;|ps&IbRuj8O`e1op(dDU-4=I6JK@{@2}xd-qY8vebf Qu_!GH<%A3%Rqg!z1$df^5C8xG diff --git a/2024/14/libft/ft_putstr_fd.c b/2024/14/libft/ft_putstr_fd.c deleted file mode 100755 index f2b20e2..0000000 --- a/2024/14/libft/ft_putstr_fd.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putstr_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/01 04:13:29 by tomoron #+# #+# */ -/* Updated: 2024/10/29 20:40:22 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -void ft_putstr_fd(char *s, int fd) -{ - if (s) - write(fd, s, ft_strlen(s)); -} diff --git a/2024/14/libft/ft_putstr_fd.o b/2024/14/libft/ft_putstr_fd.o deleted file mode 100644 index d95dc13cf070a4fdc2ffb0002d9c15b4690a215f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3048 zcmb`JPiP!v6u{p%vomS3&1REYlQz{XnzbJ6Y*GsbD|M@G9ZPA8rA3jl?w{GslHHxK zGl@|NN+X3O9#rt|sR&-gi%>j>iilUecoC5ng7l*F5LAfo&3w;%`J6=%AI!e@{pS6f zZ{B>#8>Mq+3?YC;z$w^WF$MV0-nEO7S%ib=dD-pXb~oey8w^7c7PT^544R*9ynyj-M#ZpD46j)ke4{ z6auI%R(jB=L#rFYer&~p=po~#5^LWh8y2rU4`MAVruPr+dk0_e5#)4{M4NItlf7;{ zJ!%`L(F0%^Ic0wgwGiTu%qS_E47|{oiH5`!Gsc*8e`G`E_ZzAAUpME>ACHKq9{nMg z0vI+hAQCepEPLd({em@YH?2{-VI96^WzSmXElb$x7Y!Se{@0DcJsl|D;hhxxx|8H! z;us`}i4jR+!cY5~U|4S7{&l(LI_%$+ocpKISEnc^?-Nt`1Cmo7jwR%1{1Lf!rPlMON5H9j z)s<$sQmyv9Rd9M@99!>6MN9ot?PoUR{w&a>w)9}B`tZ3&!qd$m)pU{ug*!YjR2=vnqgIna>3sv-{X1Z z^%xrTy%ZTpy(OEPlWVGD;Keh-b4<1Mo+#ux{h&mDvtl#))qUGYbw-ZgN8SLJq-Lf2 z(%dKYKSdDb<>(ip?~%4t@Bd+BdQJ*CDk0rhMfZIWZzk2pKi!dh9;>K6oj-d0lgKD1 z@3VA=3$oA>1F5+_>z9zTt-9WnP=DXL?-dM6>VHAbAHQdM|LPgR{IIOA_y4Udbg$Z! z^d-c7TvKe~EI+XW1F3cV8FFOHG@Gh${DKP6=KW{M$6~HfOun#lR-$ +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/01/10 10:56:11 by tomoron #+# #+# */ -/* Updated: 2024/01/10 14:10:42 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void ft_set_color(int r, int g, int b) -{ - ft_printf("\033[38;2;%d;%d;%dm", r, g, b); -} - -void ft_reset_color(void) -{ - ft_printf("\033[0m"); -} diff --git a/2024/14/libft/ft_set_color.o b/2024/14/libft/ft_set_color.o deleted file mode 100644 index c071402fdb0c23555ec22f6187d685047ef45dd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3696 zcmb_eT}&KR6h3!mXLn&sSxSYrSV7y>n%G%DlA<6k5$cknHYiPNLx%mCg-v%EvO6F( z{v}u|l17^JNux=heKGo?&luB3O-vdS-;72RAFB3&C<&f3bI&q+U1FMe!pu46yWhFz z+&kyq<<0TQ)0z;#B47k|Jw^fUM0f3!XQrS7nbYaDpVF(p#n)cnUR&B)o4&igw7ovP zwf@}Q^tGpm_bL2BD!uwud}gz-;qmK6W;VMnK0Y|qKa|M(e`V;p*jonCCK8EuLr+vX zllv$YTS+*uRv z<{%5lv33Ij9kth58rJQRX-`PRt5YCW;-YI`B)Wl(dp~0IkkBT>=>GUS+A}TTA`;N0 zv0=hdyg7LM1%JGXIF)t^wGiU({Vk;EMBsx)w|6*n(XF)_4|q1@${+Xl=2vh0Ir;Su zv%jWeA?zj%13b}Ng>kGo+HO1?9yT5wHnd?wgk!f2xMFC{XABX$t!X&#y==bn-8fTY z{UgF5_&>L2y}jcLwKNIsTnj#o zQy-DgPSY6UBLt$Td_EMk6Jd|xzj)sXkKn_+`y_|(;O=z?@TLHtPQTNdcg>jyj z_l9v^C+`R2XZ>)%OW6~~r=`zllJTO%d!%N3S^AuZ@hcKPq42Lt|1kw$mp*?#p68mx zdF^zBgT2h_Wt{h&*F|{n)bz;t80UP96F10DNj~Gue@Nm~XRzD3PZ{TRrX`>AN*8<2 z%-h+eIV+RRR_tXkD|RVky7r0-X3i;>ZM=eg%%@e|iscjvcuQ9~5+OEA#Rc2){7I9P za-#=tqPkf#`8>|yrS{Vl7YYuT3yy1>&ptnWvg&4Xm%uEQmdh4#tHn8*d$EGQ5QVxx zsz3tvyj7@V%68q44E}IYWo{;m`f}ORUae*yhB^6+o1yVObpIFm181RgugbS{C{d2k z2MLJcdiMxn!Lv>D6unT!d{ujMKQhpY2HhDc2BhwlO*|`oI=|Fo+~?fCF-%VR`z4Rn z+tTP@Kx(c(sM!uuKadX3!(%F!{?Sn};>zDrxWR!^tK9bxZ?yi62J5FiR@Z+5F?CK# z^_c_*$O(wbJ%(eA^52p9qcVW@pK`1DhY%wQpL;Yt`B}!%{se{dvwi~y*$(oS=wqYM z`huczFXLdN`nP05&dOk_pY9>G{v(LdoNE0a$^8G-KOf3?RCV&XjIRUHQS1NS#}-xk z7ZNzHOu+Rs{2dyN)_-1}UtSljpUxV`^ZB`jm|7D;5SN$2E93-3722@dL$I}WP1g1m2Je&$hr683!$;4d`Py{EBTGXJ~` LAVvREsP+E?WY +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/25 10:30:03 by tomoron #+# #+# */ -/* Updated: 2023/11/01 15:18:57 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -static int ft_count_parts(char *str, char charset) -{ - int res; - - res = 0; - while (*str == charset && *str) - str++; - while (*str) - { - while (!(*str == charset) && *str) - str++; - while (*str == charset && *str) - str++; - res++; - } - return (res + 1); -} - -static int ft_strlen_sep(char *str, char charset) -{ - int res; - - res = 0; - while (*str && !(*str == charset)) - { - res++; - str++; - } - return (res + 1); -} - -char **ft_split(const char *str, char charset) -{ - int nb_str; - char **res; - int i; - int j; - - if (!str) - return (0); - nb_str = ft_count_parts((char *)str, charset); - res = (char **)malloc(nb_str * sizeof(char *)); - i = -1; - while (res && *str && *str == charset) - str++; - while (++i < nb_str - 1 && *str && res) - { - res[i] = malloc(ft_strlen_sep((char *)str, charset)); - j = 0; - while (res[i] && *str && !(*str == charset)) - res[i][j++] = *(str++); - res[i][j] = 0; - while (*str == charset) - str++; - } - if (res) - res[i] = 0; - return (res); -} diff --git a/2024/14/libft/ft_split.o b/2024/14/libft/ft_split.o deleted file mode 100644 index 05c97f5c98b3497a7925cdbee224a749b3d823f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5032 zcmb_fYfK#16}~gGXIOTDVFBCtfmz$ZO{;VO2dOxoq#Gq`kJqM3TVWxT6qfa_q1jh= z2iJL6vAnotL8-8n_GkV!icpk4Rg@~Spsj)(sgG2OLnVG#ZLLC88yZzHQLDJ;%-p*> z9@bS_^`PP2`=iZrpC3^CxEJ;j|#GYW)l|UIAZ>r8C_B6t_q2!=hzGasF))SfD zFw5sRrlad->HG%ME;XW%xfI;!JIKOHx{zX|O39}r% zxfETwht#`(7H+cX=*QaB!^E16qMpBZq4b#pwpKuJ)U!~rK!yisZZ)mTExklB~4Q(n&AO)lS z7(LvWiQcGqxNXbxjE>1Dm)PW)`~oAsX(k3%%yQecrRXwBViE%g4X#jf#)p{4N7~d^ zY}}n3g4-%!HMzcfC_fYZsN(!lE@YM$P0YqD4{XddSG>;puFVcCmw!`wUn);7n~Cew zZT_{FumElejBojUpPyG(_`0;EaI__BOP`~%U5BY=$F-B+lJ6QW$;M5r@+OX(X6aWw z&;2r`Yn@ZXvirm7jm_!k-KFRTfh359)~*iTbv9sKyTlD6&Ptn3!PjS^>y?~&Waz-& z(#^GZ#Fmn^3;j%+dJ|3Co4m#T9Zdx8wtr_Pdglw;zc1R`HKV;f6TSVPtzjc$@YIgS zF?MH#wIcdL_2Nfhz0xI=3?6~I_7R{ixvyfoupAYa&ff6S&AZ%7A*rjY6_l>Rj^-V^ zyF$BL)Zz}tWQ`rigQh&hl&&X&K|BdQT_R?rUFmu(cqI6xoyS|hzLPNkCUb}s)V}+c zbz7Af^B=TrGwKCkk{<`WNjj?cj?5Mn0x=A_0Te}*6t;(0j1FYwkGaU`GUXn%h*#>rqqeG4CQJS(kX+PdZ(kWmXtlXS;`tI=F=0Fo?zYMxlFR#%4NErP8OfHa{0;_&n3DK^&IN!?(OSN zPmHB3mKcv0D!MdDOGJK!&IvB&n08Op!We4ffh|cH(Et zOK+EM#fqQxzW3WJS28}v>M1gt6kUS4fd3$<>JTXE8Q6avf@%!v=b&AE96E6tiUIO` z>ItZyghuss2&JGo2HWOgXA0V55H_GArX0NpvhtXLcCLf`?l9D&jy4C|4QMoAmj!!M zCHR04C6Y6F^usIK|q98Db6lKNs-_#AqeU)`g(B= z0;ABR8XyM^jPO%;d`^5jGLPN?hhNED;RP}?)Aio2F=Y*~-V~6}V2hDXp zMZb8*KOx{_f4}F&X|1qIn^o9!r^)yi<}CXRAodE!pHUo9yZ4ycDEKvO->rB=4>s#Xux*VOQiN@USgaz5fJ$lH=`s6!=3i@FJ1^t-5!z(v1@xjnMswiEH-!p^7%7k2h@oZ_TMkj^Ip7xgkZF5(gL zN&|kZoKB8So*9XcjTMq-nO;byntji)EFN&A)TR*9cJ?Y!WtFL5_}BAd!FJ)5(V`mt{eezj=D6VEd}oj#ixA46HljeiONR=et_s0locPt@r4YH|0kj^D1N2gXE8y)Gm$=b zhRT212RG4o24QsO-4x*q@xdv0qVL37!wKCz5drY=4c;8$e2^dNJJHYXKJ~^#CM13( zi}Obqkyn<^j~64km%08wXyGES?5oJD75_4if0XM|{B&P>sT`u{d!BqHjJQ=8uA{(m9>J_`S0EFv!EZqcK>A;NC3hHMtG zTJcZw3tyanil0jAjh}vu)rvpG{clIUn?$T)d>xr$?v{Jm+t8fpmHoY=pQqk*(*>@7 z&JE&R#4q4qaJ3s&K`qSAJ@eBXo zL5ysA`{yu!+0*X;Hwph@d<&V%$$L2*F1Y1Jxqopt(f$(&J!i$(r#SJXXtVO%e?M2C KfsTYX{(l4ChY6$r diff --git a/2024/14/libft/ft_split_set.c b/2024/14/libft/ft_split_set.c deleted file mode 100755 index 023f0ce..0000000 --- a/2024/14/libft/ft_split_set.c +++ /dev/null @@ -1,84 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_split_set.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/25 10:30:03 by tomoron #+# #+# */ -/* Updated: 2023/11/21 15:37:48 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include - -int ft_is_sep(char c, char *sep) -{ - while (*sep) - { - if (*sep == c) - return (1); - sep++; - } - return (0); -} - -int ft_count_parts(char *str, char *charset) -{ - int res; - - res = 0; - while (ft_is_sep(*str, charset) && *str) - str++; - while (*str) - { - while (!ft_is_sep(*str, charset) && *str) - str++; - while (ft_is_sep(*str, charset) && *str) - str++; - res++; - } - return (res + 1); -} - -int ft_strlen_sep(char *str, char *charset) -{ - int res; - - res = 0; - while (*str && !ft_is_sep(*str, charset)) - { - res++; - str++; - } - return (res + 1); -} - -char **ft_split_set(char *str, char *charset) -{ - int str_len; - int nb_str; - char **res; - int i; - int j; - - nb_str = ft_count_parts(str, charset); - res = (char **)malloc(nb_str * sizeof(char *)); - i = -1; - while (ft_is_sep(*str, charset)) - str++; - while (++i < nb_str - 1 && *str && res) - { - str_len = ft_strlen_sep(str, charset); - res[i] = malloc(str_len * sizeof(char)); - j = 0; - while (res[i] && *str && !ft_is_sep(*str, charset)) - res[i][j++] = *(str++); - res[i][j] = 0; - while (ft_is_sep(*str, charset)) - str++; - } - if (res) - res[i] = 0; - return (res); -} diff --git a/2024/14/libft/ft_split_set.o b/2024/14/libft/ft_split_set.o deleted file mode 100644 index 17b7bfad5b656520150f6d2626661c1de1360e76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5648 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 diff --git a/2024/14/libft/ft_strchr.c b/2024/14/libft/ft_strchr.c deleted file mode 100755 index 978f990..0000000 --- a/2024/14/libft/ft_strchr.c +++ /dev/null @@ -1,30 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strchr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/10/30 13:35:44 by tomoron #+# #+# */ -/* Updated: 2023/11/02 11:08:17 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -char *ft_strchr(const char *s, int c) -{ - int i; - char *res; - - i = 0; - res = (char *)s; - while (res[i]) - { - if (res[i] == (unsigned char)c) - return (res + i); - i++; - } - if (res[i] == (unsigned char)c) - return (res + i); - return (NULL); -} diff --git a/2024/14/libft/ft_strchr.o b/2024/14/libft/ft_strchr.o deleted file mode 100644 index cd443db7f428153f4103e804e485e37bf28d8f56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3176 zcmbtVO>7%g5T3W|w|3&hcA7#`1(HB(=mFMA6(E4sq@o5lG)Pn`7X*pptYcIEr1mC+ zqKHBPDGEr<2?U2$f+I+U0|$^$C4^E=a6{aBpi(OJ5N<&n!p!a)`+2ccRgAQrnQwmg z?VIsCnbXf3LI9J1WyIU(QvRMpvDBqg1Poj!)X-_9PVCxrSTM7wdK&QpH-uNx8L3>ZH>+=hl{+JXg!7 zj*T6gNR3aV%B6*Z3;ANM4lC70X{qWgj(S=%6*M3ZrK$@hs5=el!5$@er{s6ru@Ssm zK8XuwK&&OiP)|5=887Ao2-8F49qWl$;zQ%PUdyPU)XQE`<0e)=P|TG(ISd zc$eE0BSu^fdorwlW?c|dU)-uB{&-^8o;n-?=rS zVe6_KwZ4~qX&Fn)uq}J6C7D2nkZWy8<0EOkE=SOwNXy=|v}_qgdmQbii}71hT(Y7w zhJhX3%P}|46hF^h=m)fi;II8oZYDHeugz?N*`~8%g2iGRH}%h`Sxo5Cw3cW>yrpQ8 z34NO8i!UQPp!LZk#22RT1XGoA8z`2jC!h`w2UUU{#mgaH`3w37|Y}Z+H!Oqtz z6$e*{U3bbk<$;T8u2v{C9Jj$i2(ef$RUO)8t(DdmoLgK(S1ntqTBw0tt+|ff2%_Lf73Q*(C<4ZysSp^ zcLo&qS6d6D$s;T{$g)T2>pzJ& zx$wN9=+WOQZjAxOxjyrG#97u|&#NKq^u2VyS5fKI|Dd`M+$Z%<+nZ;YaoTrOKiL1f zs{Z|G(}{a!zK%wgb-zzkypE9^^!>)imV@q}Dqu2@fct0oD-=4t|5%6j??qpZ=l8#g zSgybtO8X;y>vPasA)|8xFoDFol2>ofltW6jh1HDnj@ gX%g=b2BkZzZME9xc~qF diff --git a/2024/14/libft/ft_strcmp.c b/2024/14/libft/ft_strcmp.c deleted file mode 100755 index 6157587..0000000 --- a/2024/14/libft/ft_strcmp.c +++ /dev/null @@ -1,34 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strncmp.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/15 21:47:47 by tomoron #+# #+# */ -/* Updated: 2023/12/03 17:06:39 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -int ft_strncmp(const char *s1, const char *s2, size_t n) -{ - unsigned int i; - - i = 0; - if (!n) - return (0); - while (s1[i] == s2[i] && s1[i] && i < n - 1) - i++; - return ((unsigned char)s1[i] - (unsigned char)s2[i]); -} - -int ft_strcmp(char *s1, char *s2) -{ - int i; - - i = 0; - while (s1[i] == s2[i] && s1[i]) - i++; - return (s1[i] - s2[i]); -} diff --git a/2024/14/libft/ft_strcmp.o b/2024/14/libft/ft_strcmp.o deleted file mode 100644 index 55cd2819468fa95033e5a0b7857a38a4a45a5682..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3952 zcmb_eU2IfE6h8Ofo!xD>?Y5~Bq%A{-Mihj`%`ys zeg`PeBsXzQvM^^k(LyP{Yo`pHz zJX!q{M;5?6S%Tu6?;#;e@6iuQ{%POJboadbhY}}>i_<+QR+YETZvXj&@3wogIp3vq zcH%ye;dm7qrhW7N>Fx#p#FFISe$#z+7A+@zw=YTVNrvX7GSg>bR+{q7FP&XoT@|BU zwc%*p#%NbdDxSDG<$E~odwA%2*dWzicN{}O%;z4?XJyW}Ob}+c=MQ!-^MY6W!5)-F z#dqD4)p<@f=fpj5pTo-Tp7hS1O5=H{wnNvY3aPPi4O1FZ>&n;F zHdfSD+SBU*a9^4pLRXtdVKxfHP5aGurZK1w08{vYtK{dZXndr zWH9GiWM(+d;9L9{NKRz9ua9KAK!#U%N63m(Qs75&*l&Zf_ffFPX9gWmcHR^tMH%sM zF_c|Il*wmaD~0l}Q3OSL7k{PwcG$pUM;)-?Dq@tT$P_UkRtg)*0c6H(_K#6;Tp-P9 zmz-aqP$E^zE{9VtbJ*-;055*D|Nn)8u|T4~eppMTqsc^lYlqsZc0gF~P3x&(d{7O7 zCz6b79z7ZN?AFo)dU7zs1IeJLt);Eq)7tKdMf<`!3??|hC{jy64{toGSLs|=(yIaLo^FhD4hWY#vbL*wP5w=LIFh5_{$)TmP@rI4(Dmy z&W(uCM?@P6yUNPnk)JEI%h%Auv~?1WM4OhiA2aN9Wl$k6qDhjZ2W6$i5Tw3Ap-!eC zA_ZkP+hpoZ*TWa;E*-n`QPurh(dy5}$wAt>d$HldSLZhVre1lVYLR{$Kv6clOk%d; zznEi)+3g3IV((}2cdQ7-%FE1snbqj5Hq08FD%%`pTRPd3U971~892>krMeTl=O-qg zV(SmGV!O^-x>$qG>bjV$GReNf?&@S&ttV5OCz1#c#M9eDV*|sHZLNus&>Lf+@pxbV_;~86*vME* zv$2`YBdNgPpq6SjThWu!(#fGzP-{*lle#CG2*!p&TDF(4L3^=RLm@5PYxa&Bq1F8d zx`DV2{#-3&Rv@$bd1eKaJY6UX*oBzKl|qe*9tsrY`3Xe&h~Hxa#nL;@Fi z%S||gH*j5?SK;5y@fwT&t6UdnSonuIUT^V#o$H$|xX$%07JP*3TP^sTTyL@9N4ef^ z!QbY3hXp^yb#cdt`aj^f*WynP43Su8yk&BBA3&_9z{UR8QxFn$bZ%FB2}BaO@PE{V zjeQYg5!7VC#k#av@CmN(vEX990gj70xeB0$w7#MK-aubpN*e}M*G6?vgUNVY!)sqn zX|VwJ!1t&(84jm4JuQL|5@IZx(CEp^3kifm;t`@Z$b8g{=O{OEG!agMnn>!Jy61(S z=CmFN4uBeq4aa*a0X}GXNogbwXp!Dmu8-7th%Z!9l&5`T5Ln&~T{Q>-;7**@f8S~zlU^`-M;#mKdo8WHK5$uhrI zUpkj`PkA#Qrm)B-beQA#FE8&t6Zgksh+A_~$PGUJZc=i{>bnVTg~s>uOESU(XnZP3 zoFOs(HpIw9+#e_!RLnQ^Qvq-;#ut1);zG`K{gTIvafHq4`w|)o)qjN-D(a&8simy- z)BR03g&&Fr&GGTq3V?GlzThVi7jmxa9Uh;Hk!_=u>F?a(;eCjVu7P{&ZHY64_h1e&YTR7>!RP;!F+TR}`#kPqqa +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/24 14:55:26 by tomoron #+# #+# */ -/* Updated: 2023/11/02 11:13:46 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -char *ft_strdup(const char *src) -{ - char *res; - int len; - int i; - - len = 0; - i = 0; - if (!src) - return (0); - while (src[len]) - len++; - res = (char *)malloc((len + 1) * sizeof(char)); - if (!res) - return (0); - while (src[i]) - { - res[i] = src[i]; - i++; - } - res[i] = 0; - return (res); -} diff --git a/2024/14/libft/ft_strdup.o b/2024/14/libft/ft_strdup.o deleted file mode 100644 index 24d5349a2dbaa59b9458e48ba3ff3fff275d2732..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3344 zcmb_eUuauZ82|3QIX7w3rs<#AZk;yMMhoiAItmus&5CB;b(_MVbEuXstzKdM`R_oTH(OzamOa0;g!D#njk6G>q(7WJFFMu%&M)XuL7zFTH8X2bsjOdfW ziQprL&-6ZZ7=SU*IYa^G*a6l5u$uVU~qt-a2E3@TFDYdj{B_Wn6=ABrjn2$Z{l&@5Ziw&MACSxa#pBRgcj>U4> z`E&)6nMA1>4CPW1N=_MaP64uo3S^-JyJFz(iPvAt^3cbd*WS1Q+SRZ&*x?Vnj|ccD z;`9)?oA`7n{I>o~r>Xyh9sqX`r}R%C*EH>3sFN6-e0)$Caxa0Q4e4F%0au31U%9U? zO>~uQ0GEuA#?1EH%(uk+OUyJcF~eM7`uD62MST^KTTFkC4ZOsT znv<-5k{z35;c13Ozj?NWe}}n&89rm}tITJfWcs_8G1Dq*M`zufW}11{3{LANw)$Uo zUH)34^VWO|VITat-^yx0W7!AH21c|Z1Ek?0IT+9;X-(09_NF39281Q8DH_nzRJgQ& zyhrL&T%=9JTV-*09Ib$=|BbVONE|@I4DLg$o6Ce#jPN@o;qt17B;1tzMI7akFC!g) zB7uv%qIZEG^V}NuK;Y*&KES!aFK}Jl4S~PH@rdF-$Ms~s zc?GOoZaF_oQRVEyflQR115Rc(T}tE~$R~2SVzN0hao$?kK_xMd{PjHX|AT(SB=R{I zId|yLBK_*I#@ic>4b?q|gmL$VVTw!Q9twjv&qD7)f$r0k05}iu%OTD)&3!s2;!Fsf zYO6g_3O>UjO^QUS?=sp{jNGqt@HHuxMAi3I#9H+q;r-815EAuIklOzUVrou=;2sB$ zlOmDoOF#du>aXznyF8Za(|l6vPasA))jE&TW+N3m)_9Bhg1?LwAvc^*_>jk|-&^&) zh`z1*U*rc$d}r!ko(Td!f;i<=`~QU3zYlFPiTZ-CqEX1Q-)$Z*Vb}W= zaV3G+e*u4iLaX)PXt93!+brV6`aecY?TK>l@%nd3kx2F3KwGQ&8@#^FV`=~CTdMU> zBStyZ{r`p!6?OfhzTh8VtZ{C?h-?L)2Gx0e;Yam}gzjkoKck@Ty=$XIAq98 +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/01 04:08:53 by tomoron #+# #+# */ -/* Updated: 2023/11/01 14:04:59 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -void ft_striteri(char *s, void (*f)(unsigned int, char*)) -{ - int i; - - i = 0; - while (s && s[i]) - { - f(i, s + i); - i++; - } -} diff --git a/2024/14/libft/ft_striteri.o b/2024/14/libft/ft_striteri.o deleted file mode 100644 index 2f18f4648eb48f61b40ba06ad695dc87075d41c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3064 zcmb_dUuaup6hHUgd^c&cG;QZ>M|BHxVLs^1I*QggXNN}b#?(3JK%}Ngdeg=xxiz`1 zRVWHkvDV@yh`vn3r}-j+dk{e>DhLWP@X;4v1jmBZ2caSw&&mBx^W|~{5f9{^bAIRF zcfWhi$qU)D59yi)Od6bouEr?9j@gx`I^q=Egr3v(`cHPVm9p2@cI@@#?XR;fvW{=r z&9xnPHG3oZ(mvGfjqHwHe5959JQ8c}K=Q3EG`*I+aYakMEYN=akngm;vDUITmOH+- z_FenhMz+=5($=%B>mRh+ZM*qZYUWFANK2>p3L{+~85|i)4~-3*jS&Fd(ny>dHPXl9 z_r{Oxzkfe~AwZYF>Ae7vi5^uXfl%`>80nMocpM3twtbm4p9`BOh`O|Vnn}Gi9xbP&SDxLrZ6?}6bjMU)A)>$KbX;I z#OxChxC0fsl7CCZO1?IqT5;-)vRg}yPg>*FB$T{d!>gA)r(U*-kXdl6PR4VqnFpQ5 zqUSE{^1NHj96Ne!A~Qabsgw&PPmP2I6c_S!D8X{AQJ$|kbE$I8gEG)_51vmz=VJVm zhMog^#3$|f^PsH`YGZq%v5VMXw;)VEqRvg88W?;My_ev9|H+u z)S380;b5mp4eg+w6bCvoWbXUxmmlAL{mRdO{%&2hHqS=@`g9EFkde?tr2jY3w=Cl3 zyJDau;-4C|i$XVsPYA>OMhNqah@BAqXN2L2h?x=krqJRux{1~Pi}fEdB zKO^x}z`r2%!vTCw>bD2*XQWP3PsI5fzPkI~)Z%Jaq@kQKnWo-OfU zez4}8!t#7BUnta_6|g*K)dQ>OR;vyUzg2fCdFg?BCg+w)4aaM65JD_g$~A{pQBO#I zZmt(7*Geu}HP>^jhaa83v*G27i#?mjs#I30If}zY)RT(}NWfXhmFoGbqekKkT3Fu8 z7mziQalI^N=Sd^Su z(03jUL5zI;y$ZPcdnxEk*GO|b)$0c52t=CgJOS|EwP)UWzGx1EIVt2#2_7Xyp`h;p zw1w6GNY>w$u~c8(A6)+~#3^U6&KI)Kvof9;*Jpk~#X(!8Dn@e9_hTPh3cAlqU^0+^&(H9O zD1^QLCn4{jKwpmM_kSO;;F&1*JF@;JDGCLBFQYB2{xw;j_afat&1$gzDa0seuz%8W wDI7 +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/24 18:06:14 by tomoron #+# #+# */ -/* Updated: 2023/11/02 10:26:09 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -static int calc_str_len(char const *s1, char const *s2) -{ - int res; - int i; - - res = 0; - i = 0; - while (s1[i]) - { - i++; - res++; - } - i = 0; - while (s2[i]) - { - i++; - res++; - } - return (res); -} - -char *ft_strjoin(char const *s1, char const *s2) -{ - char *res; - int len; - int i; - int j; - - j = 0; - if (!s1 || !s2) - return (0); - len = calc_str_len(s1, s2); - res = malloc((len + 1) * sizeof(char)); - while (res && s1[j]) - { - res[j] = s1[j]; - j++; - } - i = 0; - while (res && s2[i]) - { - res[j] = s2[i]; - i++; - j++; - } - if (res) - res[j] = 0; - return (res); -} diff --git a/2024/14/libft/ft_strjoin.o b/2024/14/libft/ft_strjoin.o deleted file mode 100644 index b1be60636a90b292c6907012407e79a9bea91415..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4016 zcmb_eTWl0%6h1Sv|Lm>pwxtLKwN+cdM7AxdvP!`k8C=RGc!AVtDcfbXE$pS)-I9W7 zKnjLZP1*+&p9pXIKunB@i98?%u;PO;P-7o>Xf(#f^r8B+QImSk%zw7i=@Jv-X=eX( zzVn^Sf0=)J+St2GRTN-RUi~zri~f$ zM#n}MAapKhs|5(1uOxNaD3bTS7fVDZFk)i3Q1GKMZrqzN?u}hnqVZz%>))V2wCK1o z*LEFK&A|oZZs^=CO%u|cghP@g@jPEO)>G0vo zu0h9yQLqXYCX9JYnZN&&H8bYZO8qwBHA-{yDxo!J*Ho`r-(0i4R?lG#HLQ@@ zxmIg_A-FBLv3~ce7wZ8u0jh*{uLAJ2FEho;AOJlCMD;d-*1RJa#FOFMU?Fe|ry@Y{ z(OeaHZ0Y!^@U1+GD(pc`Iix|;XUNjjsUa^kU9;5zpRIb-sUv>aKm=6Z4#38%w%Q$p zO;UZM0-h!ngffD^${_(EvN7X`7eX@Q5Uwz(m?r6m8W}qfgjy?B{{nqpkFI!i;n8oP z;Ufeh_|O@A7>Ori>HfwOW;QpNNjJ7d!foLQB=WtveD+voFddFV%RnY&w&XLZmYrtq zcs?^!8e^Gw%a+zH?JaHXEy=;YMBWhy@qt(t;<03$QuQXyGz_NmkZXh77RZ`8un;%~ zb=b84YZI3DU$!%gPCVt*YoLr&E9)z~zDeApM-iikg!T+xs;YiZeYsNCb}2})d>xh- zfOeqdS99csHjJS*wxUZ>l)tMgX`n>-pwd7pXi9?`5|3Lt#Q!>7Y+d)urluqHuV0DO zf9V16tHdJFniSy)6oq$K1oUoEl@R!=>HT8$ZBegx311fh)%tc(r+0`@hp6w6m|x!` zD)mdEIw2~rY6m8TsaqG7W^#kGQ5&mHZvx}I|xtUW!eP8H@W$}Q1 z7PG5ZU(xsI!7c&1_UaX(2d)XvFr`y<%70nt7{?`+V}Twd1v^v~SLNZ32A-)0%a7>t zz#og{7#ft8x8xo}O~tJ(*F5`zK-ss{Vmv)m2&q#Zd3(rdX z85ce*?N%3lQrhh>KXyjrH|q%@YvLn#ou=Z;s?49M7auCf?FEX4B~Q&Lk2!GoRx~ zgjh`urcJuwmxaWR9$gL$rW2WE-v;MrA)L*glW z=k7WIb zOiuL)aR03AuD=U0 z%E^7AYRN76kNfis$dT*wco}hR?;?HX&frs$5m}$tmFkmloNWR8jtX-avqpI#HOc@Q I%AKEo0oJ4BKmY&$ diff --git a/2024/14/libft/ft_strlcat.c b/2024/14/libft/ft_strlcat.c deleted file mode 100755 index 2444604..0000000 --- a/2024/14/libft/ft_strlcat.c +++ /dev/null @@ -1,38 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strlcat.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/16 03:16:22 by tomoron #+# #+# */ -/* Updated: 2023/11/02 10:47:42 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -size_t ft_strlcat(char *dst, const char *src, size_t size) -{ - unsigned int dst_len; - unsigned int i; - unsigned int ret_val; - - if (!dst || !src) - return (0); - dst_len = ft_strlen(dst); - if (!size) - return (ft_strlen(src)); - if (size < dst_len) - return (ft_strlen(src) + size); - i = 0; - ret_val = dst_len + ft_strlen(src); - while (src[i] && size > dst_len + 1) - { - dst[dst_len] = src[i]; - i++; - dst_len++; - } - dst[dst_len] = 0; - return (ret_val); -} diff --git a/2024/14/libft/ft_strlcat.o b/2024/14/libft/ft_strlcat.o deleted file mode 100644 index 3d78a2137a327e1e01557c15dfd8165d86e20e9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3944 zcmb_fTWl0%6h5=F|LnHgvb|BDAXKDCl+IGDrf9(>vapm(@PesEUADWk-L-qEv(qbS zL>CN8HMWTaeNYpgNPNLJgT|D2Y0<<7<)IIaX-rJo#F+Yq!K9uu^Z&ckae2^qlAUwT z_n+H;JAeCn==fomB!M6a4nSEGD8R1jvK%zUAgo8r)8XQ;;lgjhaB*TKTpU^o7f&yS z3ll5gKkq{`6qmq%p_ati&>eDI{+*P`iIpYNilGIxSwx!#3tlqea4~de`5O}nEl!?T z2=ANo7n;{t$e~5k>SIJ_L-Y8BNeosD&0%m6yz`7baWUw+s!BJWF0UW~JX6MA$**6qcDZc~kj+zA)H4!-=AR4=u)H8QzP-%z(!mv5Q zP&S|H&ua13bS~Qu`P8@;F(95dAeM~kkk?}-Mo1*BWy|KNtN|&|H6t<{O+yXNi-Ec9 z)(k7w+r(!tjXwj@Xq~jV#^asBZP|i2{fNwMI=HUxE!R`Eiu{m-CeVyF6#W#AOOkYV zT`e)%PyC^<%|)I>GRl6o)zT0AF!%nbTls0AYGFt3jW^BZmv$doy8r5@m$&?^Ucakq z$$mFLRoUGyF;BJkAoD4`%%5QRm6d+he2dj6J*>Kyd6fN3L3BN$K7{06RHs=jioR~9 zbe9HN(6fiRaja&DwJHW{?qN+gSamn6!Vq> z7atoKPCnL=9f`j-79Y>_^^cG1kETb)_OzSZ*FK_02M0C1-8yaoUCZZ&^qAJJ=W<3M zm5rr`;+pL&;USFRfsDtsM8rBsYSP-4dwjn~+zo%MRvMO}v@2_dW%Q^-GI%P%AVbwX za9fkNS;$al)5@X@)U(&p1E@CG>J%-efOw@S)C7oV29*6TY@kHX5{Tr)sXq}p@eeHc zAGo-G6kFyt#Ok?BIK>in^dJxsZeP7^CTigd%EDf7vbQ%gy8T1~7jeZJ2zafppeTM_rxxUMRk8pjr13%04Jr4XF*E=2fMXq-_@XK5m z`!4Fg!f~;l)XD6py_Js>X2-?)Q5@k*raS3_BycgGy%t=;>0A;Wu~-S8;(C;GXFb)R z#Y$7M(;}fK2bB3lKIeEH0Z$x7Qpr+HqnFx8|OSUEwh39~lj3o4E#?h`+ z%xy&bK+TV3i2qMSf1la!p9s5;x1uEha8B!OC%PYm(cQCCkSn6kh%s@`gziUy?s-rE zoS)+X&v2dc(D@Q)N!&lm?W~DhavaQ)Vk4(5-76Zd;B ztp5?joG~faS(+?T(EOG^PFod+D&-IICV7fG(E1VN%zqd$G7) zCvZ^6cDon(p>poG(>97umFl13g^GQq`bE#6JOXb)nPNKYf0gH_|4r;9@(cbB4hq?B zcdpWV1|2GV za*zBoJkcnQ6Vdw9UOMwXjTpsruK$lTDWt0wD}6vySVY0O_B1xiAAK)(AVwjb_5TfXf80#~ diff --git a/2024/14/libft/ft_strlcpy.c b/2024/14/libft/ft_strlcpy.c deleted file mode 100755 index 9b82fdd..0000000 --- a/2024/14/libft/ft_strlcpy.c +++ /dev/null @@ -1,32 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strlcpy.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/14 01:08:34 by tomoron #+# #+# */ -/* Updated: 2023/10/31 18:26:25 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -size_t ft_strlcpy(char *dest, const char *src, size_t size) -{ - unsigned int i; - - i = 0; - if (size == 0) - return (ft_strlen(src)); - while (src[i] && i < size) - { - dest[i] = src[i]; - i++; - } - if (i == size) - dest[i - 1] = 0; - else - dest[i] = 0; - return (ft_strlen(src)); -} diff --git a/2024/14/libft/ft_strlcpy.o b/2024/14/libft/ft_strlcpy.o deleted file mode 100644 index 98f2f9d8d56a163a56aba49877cf7f6fee7fc7c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3672 zcmb_eTWl0%6h5=F|Ln9&*y z&OduRc3^ivQGiK-9Z=I41z6KilLsr}AatPRq4>-%@##N%;xor?#Aikq;xmWlug2!c zB0ha=9wH}ONt`{luu#EfVmBAxMQO33&BhjHpPq|+vO@2@GW|E4id~Pq(S$RzvAOv6 z*nH&eD+ryAUB9G6P73nch(p}h($Y)B6($&=_)Gljv^Xhe7E$dn}do@77P)HnHqjo(W z-X4Bn?cTPXYXMXN0SWDG0|@plQ^hLS+vYj|Xq!Oo+7S+88KDT`0Q%+%gX37307XZJ zJ9}^K90KqYVMwl|Jg-6|fvOrfKcYco*cEd+L>yN<+Ta=l1Lt3AgqGJ31(BseY1M)u zJv4%{7Sfc^Bno;(3x|TxM<)2YTS^s@rEKSzY1#R5sk67==r#Hw<0NdyDx^jxjTA(4 z<)RsN%Ejm|(;jxpBUPR(r=r_>w)I7O`=W*XP{#2%!f46PXG>;KX@MWm0^nD~DZw+y6-BwVvWXaV4*pQs5J0g)D#{UYpR2dqe|&IV`9Ag5 zeCM@qujT0~g0gkj!u=ONdT0I5#^qavnac(N8fxwlMFbo5ogzFcH0`kH(6S<|?Gx%@ z5zx+y285b*L$qZ?$AJ3s1rbnJ4TvV~YoTfvMA#8Q?FkV$E3_j**9HVRVgMa^4X_#i8ufl=Vnqe6pvzaw6U1R&r#-w7T6Z6SYjcJZh!PZmV2&qWMy)Fq$?! z_W>_b0xwlMZDtbgWiWE?Hs4|V2Js;LwN!6f#dfMkDtgo-6+-o3P{H#!dMs3E^k_9v zh31;#kyN0!ayikBYW38~55Y9z^`bl^-Dw4s{U3Y|iLTxO=N2JbRoW11kuu>Fi|yz| zB_iCr8yhO9i)$#eJ#(`6J}lIrM2vG>UK8URU9)PRGJa6vYb0m<1*voIGEQ$FQD`dv9YWO(GHI#d$v{4*Qbb zW*U$f=lZs}a24mgdwlpgsV61(*VE`}LNLyE*4FE ze_hNq!*4*MoXOaxW3wkhEEe)5lRgv6T$1VZav)#Il(_=41V*Xsn8u!ihq`SinHmP8 zP#7yF$P2#~%OX*D37EM=#!41_&xwJ#o#YT0_GFRx|3p7x9B)5y*azjIEifQC?YEbx zp9rH~^3tGG_#NOm?i<$cL4o>qkO9fRlTFC?l)is-zxXb3KT&`BYoZWqCCL3j7?Iz0 zybeZoXQUzDL&Avs{uW~O>gNqPN=`^rKP|~$|HFv+V68wXpWZ=#{@sX?3GXwC71|^7bH6dp`I%>Mf@QWLeogxO&)aXCMB94xpOB9>pEK3Z zZwAF@ybEQD>97AcnST`-dx-NhKZ|oLd(7Zp>F>oz_S=5yVk5Vi%ck<5AMZcM{TPLM z>wmA#`d6YY`}6uQyZJd>mG{g1zgH1g@Ynw#!u9fBmiZ^7KkYxAr9c0(h*3=c{%@q9 zNEcmJ9XUVq_i;u&uvA8NqH2V~7MY0cC_fSFt_CoV!fktx*q1WDE**%`zaM}7{{aLe BnwbCq diff --git a/2024/14/libft/ft_strlen.c b/2024/14/libft/ft_strlen.c deleted file mode 100755 index 0e7d7dc..0000000 --- a/2024/14/libft/ft_strlen.c +++ /dev/null @@ -1,22 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strlen.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/10/30 12:34:41 by tomoron #+# #+# */ -/* Updated: 2023/10/31 14:53:10 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -size_t ft_strlen(const char *str) -{ - unsigned int n; - - n = 0; - while (str[n]) - n++; - return (n); -} diff --git a/2024/14/libft/ft_strlen.o b/2024/14/libft/ft_strlen.o deleted file mode 100644 index e6e69fc683040dc584bba858843388ea6cd8834a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3152 zcmbtWO>7%g5T4!j+D_d%eNCJv8eigepK)Qqj;vYO8{jA{8OmKkFaG-VM9! z{7HpKEubhuZ4Zb82YwES14!fw7bFfn!i^h(1E>guS}BL39>R?GP5koMN+3qsotbZb z_q{jIesk*li@K%(lLn`uqcI9_DbbN9+u|hbMbFvkwO^*!u06OjwMppo`qYE<3!AH_ zlF)r4jllZU=Jjv1wW-bDe%{*JLhZG0wO%co?Kh3AH`p^clCri3wVg zTGZh2&KK(N6k$lAq+K>3J%g&D-(HGCdKSf)emh7)Pl>$Dm*}PS#bb$N;tI;iJig+I zxEAk9#NY&3@%gt@Y80GmX2JISy6a>{C#+Fx0xCh?54?u$SS85S+@_ri+-B~q?au}7 z{5CJRrQF!a*m!PqJlCifD?uj?T8>|@I(9kJaGfgn^%XlG0Oo{Jt>A&vvDcjdc4M<9 zw3jAqJF=<0;*+$MmqAlDF`n96+2NqV`grN%y?1zpy9npaWv>;6vFjA=fnR zVR{cSI$`*ra7ah7O$N%{=D|?kI5H6XLK|H1(Ti*A>)Kr*s`_{g<`OIrXKSAGn^Kt2vdq zrvFTNd2XS0a@1KYzrI{vX%?$1E8f$M#pRLV_IeF3dWHFU+ZzryG3VL7+ww~Gu;;o# zuI`i?t+L(OBHY?M?sB$;1(JsW zU6R%j4e0JDl4L-yq=ll7tWWBb$BrxRLc828XCNH+dHZ}mhB6W1(v<{<+GvQ=*KuCv z{};{S@!c_!H37I;SSZwURUg3k;6xPrHYPB#q^ z=U)uf?eC@ulTSrP*a?&IBLb&9yjBDqQ*f>~rr_6weonz}3cVn>+7DP|yV$Dc3&o;m zFMt);O95CVx7oDuPO?0^Q4k(@Z{^)e#kT{WgXk&~)<)g2>AKtzQYe>q0(Gb2c7_iu z#|>=j+{M{pKPZ&uz-lxWnt6)Cdvix7N-qGrmalk)=FTCuuyjx;g5@taiT`i9gBj#G z;Dq>N)TSR85S-RkCYngX)Cr#yPCR!)1wQYrQ>>bkY&5?_%tP&;zEw0t#s4Y-Y8)uI z>Pt&V^FAr;%vK3Ry4rpN^dpz=1)jqv5La_j$VCB;kRp-ldk}3=^?wre?}=EdPixFG z!}U)hMmg0wZ-_!S&?XbtXMP!tEX#iQ3)ZHn{gVCY|4CH;-;2wS`=tKqR#*F{dywj@ z{r8Fb189?pdu4tNjV#N4$3?u1k*xY|gxI|5&hZmU0`8yT&ryi_{<{(1zXyFep4a6g z#MGV;f~%sTby6f!eLp~3RDB-EB@s*OPqV7lKZ6+MRM-D^QU7DK$;9=Uzl%oW{FaMs iRrcfigE6X4#Brep@Er>3+LP^;xRmY*M~aI&KYs(W^eMyu diff --git a/2024/14/libft/ft_strmapi.c b/2024/14/libft/ft_strmapi.c deleted file mode 100755 index ac725ae..0000000 --- a/2024/14/libft/ft_strmapi.c +++ /dev/null @@ -1,33 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strmapi.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/01 03:54:38 by tomoron #+# #+# */ -/* Updated: 2023/11/01 14:06:34 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -char *ft_strmapi(char const *s, char (*f)(unsigned int, char)) -{ - int i; - char *res; - - i = 0; - if (!s) - return (0); - res = malloc((ft_strlen(s) + 1) * sizeof(char)); - if (!res) - return (res); - while (s[i]) - { - res[i] = f(i, s[i]); - i++; - } - res[i] = 0; - return (res); -} diff --git a/2024/14/libft/ft_strmapi.o b/2024/14/libft/ft_strmapi.o deleted file mode 100644 index 551e88452703e820a669c18d069f7dd8f828b5d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3464 zcmb_e-%ne06hHUges2o}N@2)0oHRJx9^3^M64A|Bvvpp6Y%wz|GiI_b3W(i z_w;+d^jd7>w5lk;q`(Q-)))ma1KV=c7NgLHo}=dCujayUz2@TlhPgPiwi2t5)m)h0 zfY5u5B(B6Z30hwwr98i}Mw+>}VlJ#G=Dmj?_1G!~t#VKq)y3H6`WqB!2b5zQX5vic z`tbmS-tDCn<=9$zzG9ZopkcHUy3-%7KDhBU!mH$XV^5$Qt1R4A7Gst5JJo8H4d40# z6l>>4zG*Hj_g?%)2`k;*twQV0w>P(UbcZ`y^g=s;YA7T|_iEiQ1djy|?Hg=;X&-$yEQv;Onc;kly}a7GS{qhH24Ecc+sCkoc@UHiND;`{Jwg!QCFAI z1K=*=RO311ilRJfY9vM*f`2G<+RLITooYxtWy|o{7s~LJM?Ze@`H|3D!z16l=EEtg z7+{kYQiQMmPvM^tx_&`u`lQ%@Uo`7O;y_7s4T->zK-jMj+vXseHMFVvO;LxqS`rQV zr=kg=@Nv;l5?V>rmxND$QK%nXL>E*sR7Ja@59`4pRmUd(+xYQ&`v>|7Z9e#;TFXVl zJ6nr1jHpE#_-nzSLESER{VsU(E_lmh_{WH}xccO6n?t--mhX4L`(-xp4QCI$gN#^5;0p<6dOi6(YttFQ1k1F2@acUl>0t z@x78W{<_q8hZuiT;t`MkC8;0u;Nwz1?7?$Vf7XM)Ep>XZh`8>Iqi)TQR?>YNBhpTo z8}E`h<>46;WO#7y!<4u;f3O~m32S_2ax6YRp0{Sf$Xn^SQMBfYU?g&xjD?SvgE?;a zN{;1{$%0iZa3n%3rc+sq9?~5l@rj9@Kq{Ne$%iv-Wx>eiik9)p+0i3~Vmxu#{iGV{ z^lWB~65xxvBPmsqfHgIi%*QhpWa8;`F5!yDH^IPeit%yeS2M)_C;A!lxc7n6o|BjU zcLpSPp4x4Y?ki!m3vP-^h4-6neD7Hgp+I{VWkB+%Tq3?_REO>j-x1yis_pHGQq)Os zmJ}CxebZ?3V&r~Jf=jMg61~2Yh}G&Je=FE@$zk?h6XfmxFk;@E6cVDtBJn%tXpj3o zjfPtFAISOvnVjZFU#YkLF~rD)=ZvCFCuRMs3`owsGN<2(EW2HA%Xshi?e#s6LACl{ zl^2S?XX@YmMlil#*7x@RgRK9AyD8~Q5cg4X$%HfgBI8+S&T*{YLjkdAult$=2G~(@ zoAUpSKaCjW z^v=H`>pzb+H*tODx6r7KRO#Q%b+_NEvOdq1>JxFCqX9fbfqfVw9-%`KmjT4+SB +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/16 02:50:08 by tomoron #+# #+# */ -/* Updated: 2023/11/01 13:21:17 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -char *ft_strnstr(const char *str, const char *to_find, size_t len) -{ - unsigned int s_i; - unsigned int tf_i; - unsigned int tf_l; - char *res; - - s_i = 0; - tf_l = 0; - res = (char *)str; - while (to_find && to_find[tf_l]) - tf_l++; - if (tf_l == 0) - return (res); - while (str && str[s_i] && s_i <= len) - { - tf_i = 0; - while (str[s_i + tf_i] == to_find[tf_i] - && to_find[tf_i] && s_i + tf_i <= len) - tf_i++; - if (tf_i == tf_l && s_i + tf_i <= len) - return (res + s_i); - s_i++; - } - return (0); -} diff --git a/2024/14/libft/ft_strnstr.o b/2024/14/libft/ft_strnstr.o deleted file mode 100644 index b0ee341f8f3fef874ce243f87973a1bc47f2a6ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3928 zcmb_fUu;uV7(chS=eAq7w)+DN88U$(QFhA+5^xO+ZN1j0!m`^k#NQ9`<_SLDu;*hw0}vnx{kIZ`~k7%3L!BgL-! z)5;uLryy3?-=ph~G#pq@2&KfuAPkUpuTnkRN@=`n zfmv}-_!Ib1B6xwpJZxN<9v8X9CdsuOY@#R$?h+)tP4Va9$F2ciurMw@)qe`e3y&kXV^SDVT=r~ya zh2oi*o@_a-=JIJnZ)x8vx66BpW=8X7PKTcyC!v&)RYRtc4INVRy{6Gu<}o84+O>1n z?oj*gP$u1@nIxWydUJHI;P3rmckg1u9i9QBQ#e3sjPh(kkg$S|?4=Mvc~86I0{V zB{qerN4ia2m#FXMl8;YHQW1Pz(q-`PrnM6^sL}OanKo;*B`hW;AgVb`z0w_8U7&t& ztq;@cFx{xphpth#RDgsUT>}A48U;tFutgS6O+Z$06U5!2;zjCth1N)6+8CzmG`azv zVY*qSo}+*!X%KR{HR$Ftl9fIT=0JW&4`5bbblys8aXwT(zV`feqUms z_jGDcyM89|#z0~)+mjp|%sr7gGqAI*w9{>8abhX9#A(DCFX5Th1`dP+E^? z3JKLVbTG0}7~e!f)uPsf$tm2JzoT!#=qA4}SMm`_dG}VCMIx@!xgrvYi>tV3pJAIt zBvm$TMHES3MX^aDsk3R8xCdChtxtYM@l%7JIeWJ}1L82B<<8cCjD)zSBw3G5Ohz16 z$MbTIxcw%=GmFG=o;PU0WqdQ!`MKr(Cm7!3@PC2n{48_-*BIX7@b6*zRtNq%)3-Zt zo#{Iq_?t}M>A;7WzT1JHXZl_T{vOlA4*UbAcRKJ1rt|lVH5=j%G`z{i;$W8B#fkrQf9AsLPJ^yJjjL^joalgM!+n^oanmvd?+ z#ysH55H&O{ubO$=+2!&0-C&NHw65aUXjOD9kys6+bhKgpahsgPXEb{+}ZbKgXIpk^k*%k032N=iqYbU%B z5Odxzoy>`!d!`b8-nfpj&YWobfq{AM$hgxt2e=bM*QeO)64{^wYI{6pMM zyjRZ8fsxC0zdu;K9Yfjad)>nN*mjlOmstGXGGYn5e-3{MLZ$W3S6Dy(YsBOE`acEC z*%Rj8iAjMDIE)UJd;~s~>hn){e<=$g`2O*%I_n<;40Af)zrjA9|1>}Nzkqmb*#P!7 h{K~}d4-Q~`BxnEk0CT>3^lM@l$|5R27*}b2{sNja +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/10/30 13:35:44 by tomoron #+# #+# */ -/* Updated: 2023/11/02 10:25:44 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -char *ft_strrchr(const char *s, int c) -{ - int i; - char *p; - - p = (char *)s; - i = 0; - while (s[i]) - i++; - while (i >= 0) - { - if (p[i] == (unsigned char)c) - return (p + i); - i--; - } - return (NULL); -} diff --git a/2024/14/libft/ft_strrchr.o b/2024/14/libft/ft_strrchr.o deleted file mode 100644 index 9a3809ad237269deabf271601c7638b4a2d1c8d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3152 zcmb_eUuYa<5TD(>Z|{;z?k-JjT2hl>dzuH`YiiI$V@=U(udyxup(3Ito6BDA=>3Uz zn;4a9F*@N=cB9eQA=28VI>fI|`Sk4!(&M*7k&SZ?;y>S? zychpszY@u4_ptol&H=={QVl9~6H8_8ruPt}mV591qV;LXWWO+y)q%voV6ty;pII9K z(Bp8XAHX;YM)E{78U+Yh8U?2h8p-FP&qtp)bf*8sLjXd6E+I-V$J^ZS<6ar~0Q(8h zBGgxdM_Zew!*#+?^ig~mhN&5$h!*l-?M(r(BM1w9YsrLI(Km}>h^?S$>Rb6PNJw+8 z8~TU~`uq3@d(|Q$1jo=5gg=C2i*|W&WW}l03YGH6*n~A^O+e0_t+~}|Hea=}kjhs| zPRgy6QZGBTi*9A9sqIQOb^O@z@zmIOs#uuMxsc7dZZCHva!()L{La3;_s{9yPvzpbLI7PlCU|1R zG!g6mL4?d1^A*vxEOhfTbiNV#S8t1``IgXUMA*!WA@in)Pl=u>5w=8+xhP`hj0m~r zme8-hC$u#)I-~2jfQQ-D))wOD_z$^-@eusg=tMK1`8sW31B^DG9Ro}@+q9v6Hzi^~ zm*TZd1L7@5u?*-_Jl}i`)jnmNd}sKibYomyEmt5MKUi~RkDyILxH6((*h77s-j3_C zCcb)y=$w);&UF($+{7P~KA%_SpO^T-0RIi?^BHEoE%A{6p9TWSQC~ItmZd)$z?Y=| zWB_-iPqTuA`_gD3;eDVhp`Mlz3Zf9E;{4uJhjWQ%(F28XUPs1VlQ6lu8ax46EuCZOOpNG+W8#YK~juB!t*37Rn9{FJ*?cW!no2$W_V} z%DDKZ7_?_}-!ENnPfxG9WegXKf?Swo09om#EYCQhD#7(`o&Ca@g@YY5g?C z`7Sd~bC3E5*S{qDAHbL@yjIqqV32KHm>V{YPbgo{Q9TSRUXd|#;89D=lLGMuV{4oR5xV*T}h<8PUq)eWcnwk diff --git a/2024/14/libft/ft_strtrim.c b/2024/14/libft/ft_strtrim.c deleted file mode 100755 index 1f6bb08..0000000 --- a/2024/14/libft/ft_strtrim.c +++ /dev/null @@ -1,78 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strtrim.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/10/31 12:07:01 by tomoron #+# #+# */ -/* Updated: 2023/11/02 10:24:37 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -static int is_char_in_set(char c, char const *set) -{ - int i; - - i = 0; - while (set[i]) - { - if (set[i] == c) - return (1); - i++; - } - return (0); -} - -static int calc_len(char const *s1, char const *set) -{ - int len; - int i; - - len = 0; - i = 0; - while (is_char_in_set(s1[i], set)) - i++; - while (s1[i]) - { - i++; - len++; - } - i--; - while (is_char_in_set(s1[i], set) && i) - { - i--; - len--; - } - if (len < 0) - len = 0; - return (len); -} - -char *ft_strtrim(char const *s1, char const *set) -{ - char *res; - int len; - int i; - int res_i; - - if (!s1 || !set) - return (0); - len = calc_len(s1, set); - res = malloc((len + 1) * sizeof(char)); - i = 0; - if (!res) - return (res); - while (is_char_in_set(s1[i], set)) - i++; - res_i = 0; - while (res_i < len) - { - res[res_i] = s1[i]; - res_i++; - i++; - } - res[res_i] = 0; - return (res); -} diff --git a/2024/14/libft/ft_strtrim.o b/2024/14/libft/ft_strtrim.o deleted file mode 100644 index d789523df16d8a62779e75cefcd09bb920114ab3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4512 zcmbtXU2Gdw7CtlMJ9gs4lk|tCv|t0x?rImDq)OG41~7tIOiDl?ir5vwaollY>YvCz zRrv{&riHksS|Y>?yzp2754`ZekE)^~0xS|}RjEblLxqIuXoJYEb}K`R!Z|bdIMa#Y z0d6$D=X~coKlje@z0PyyeScLI1$ZcMJFIGq0*rU8$}wAv!A4~6jaR>o&o1@Ht24{- zYNZ~ZommFsNDwI~*1x`w_wYXyAS)`WQhGbDob}K|__4aY5AC;i1u+D#jGb1xmEPX< zLhCJV>e{rWw|mPvy@Z9UQH8`HBmDLKmGd=o_LiBr8un1j@lKWlM)Y@G`!33P%qOY6G}4)b)aTSEsJ|6r|X; zVcQBoFSTh`m&t6~ACq=^ajW)m+kOaRQn@?Pq$tYeP$x~42p<%}B!Z@dRYP2F%W(GD zQKP=^(gSC|3xD`pefOI_tW35lGIuD#-`)`I`lBM07Wk>@lcM`Gu~8opfe`|_^xMP+ zeOMU7V)L-XeEJ^YuLvE@LF8*lR`q$&gL?RF(T3V#Y@T_c{zC-*F4`)>zyRtn#+pL% z+ah#W1Td@*881C9I`zX?z#a@SA{2d(9vl&%YY%)X^!7`_R}noG5k@C>SPY7}>@05x zN_1RkW1?rCiQ57ZZSQ}Ds{Lgc3;A49+Q+cu5#h&@+bftZI82Gg0_%jY{c9>y#Y+78 z8=_l(UxbhtMd!&6>>`y4(p42V`M32bHutZL3uyDfe^y#iG(1wg<3$8i{OfYwvC~V4 z-Nd+bv3p25YnY+c(7@jc1`XPN0jK+8?a-iWEr^H)>(<~eBeKr5F8jNJ*w^^9it?b0 zKr5h&;tE~~H28~46}eBRZpkNH$A@`zvCtsgy}GcCIyiBe&olAeyF@k6V4UM}?Tp{( z(3W&lh;2dY%i%X{)B~JCz z!y_sM#(5v(66boDuXXq!y3d-ZOeT^O6GiI)M2l8787*4}%MeW!aye`5W#v#DFT5HP zg>)J(uM!7Bh{bFsZ_({3qsm14_FWBR^6A3r?YMg1LNs3}ThV*&-+N1`oJ{S9Xf}Hw zmq?<2DKmLhOiCmHYbud0CUX|#lG$t_<+_IPh>Oxyo}9q>$sEnUcYKEdv=%{9K?nTF zW260d54xubqcgxgVp8EBZEWLyW8FZ3&YTznay}s&miv(MQ0s6XGfug^HBpFniHzfE zXKH?Wxn%cZMDCZH@?+D}5xm?32)C;Llq_^y`cwUMetPS-e`iRJd-^j4#c{VYH9x)i z>BoMn{1JKhPDuyKPv@&Q{|I74;d2Q^d*o&QR~V2p=jZte#94Mz6?s`i++Yi?g;=Zl z=j5Rfm;O{gLEieWMXXi*H^}_gNPnKVR-Rv%{%q%Yr}Sr?XZB +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/10/31 11:59:20 by tomoron #+# #+# */ -/* Updated: 2023/11/02 11:00:04 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "libft.h" - -char *ft_substr(char const *s, unsigned int start, size_t len) -{ - unsigned int i; - char *res; - unsigned int res_len; - - res_len = 0; - if (!s) - return (0); - if (ft_strlen(s) > start) - while (res_len < len && s[start + res_len]) - res_len++; - res = malloc((res_len + 1) * sizeof(char)); - if (!res) - return (res); - i = 0; - while (i < res_len) - { - res[i] = s[start + i]; - i++; - } - res[i] = 0; - return (res); -} diff --git a/2024/14/libft/ft_substr.o b/2024/14/libft/ft_substr.o deleted file mode 100644 index 8619b900d5298d839e452f4fae4dca2243808f68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3904 zcmbtXU2Icj82(OAztgVW+U^G!j>-5LaKT!JQ-`ZqBZV?Hv#8T)z|x=7wOQLUPEW_S z1SK{Y$~25b5=^{MuZSl8T#%TUm=S;GU?zCs-89^wEWu>nEx}~I?>XPso}F|T>YMbu z@B4i3-}m=^+neEmqc%YxoCI>1R5gwQcU9$(E{4b^upEw*??p-vLXq;hm2&Yxq&$3g zKD>wqkYbUv zrHd_2Fw(OvE&l}B82*FZi5_}H;H#0+ccD|?3XMW%XEPN$)h)g)ZJmv6O;TYCAvV8& zVyIQ@e9GPD-n;d9^D{7EkrEq&jyDrx?^&l(FF{n=O~lT_Znv8d#~vMVZU$yVg0io| zj}pNN47RAfx}i3*lWndc2``JpQv@r~c4eFr&l`rAm5Aq}A)a;;&pRO6ZC6gZi4Rc_ zhw4cqx`8;*K$;LGbQ(UAT@q*s1c$CU9Cqh>pt*!5sm|dfL9~P4f2Bk=mLKhykkvv) z$#-=3`n&zTB&9_Q#dtwe{Rt9CD>*r!DY?KAxiF?F;}srL5`lvU4)z4Pdji=^Jf&6r zNFp6mNr4o!n5vOtzK|Ks%gK&RUL#pKUj?#Cev}k4({fZJ8KTMs{6*2E9wtPIzTU>v zY8Hw^Eyg$zre7e!q)%w8cQ|KZPqqP$KO}vRp7r?NwmsJ%iR}WIkgZ^Y8HQk75QK-G z24uLI@B?AH4Ly-WkiGO#LqF7TYFa0pUckk(6S z>H)L`L`XG4T^d+CO>OULi(dLW;f3=}j)l>_N~YAjbc zl$;uyNI%h?Kbt%=m7LDSN2jON$Fpar4s_|e*mYKojgQM}mvP(zu;)rqO~_rUqG*9k zK9MaZR`oZuRisZ%IJCP8&hHx9 zip&OCBa;!wSln)t2{*6Ob`vg{?71JtF?TGy=|~*sars<1zQZu9+;@)SLxa?6uu7a) zn9h3uw?E174vYQkOy6z6lT6=d!Ot*#zXiuGjam3pv;BlQ@pf?r~KuLZ|90x4*) ziv29p`FdiBK$at! zTn}XODMb&Xsrat=^NJ?>k3B!!1#eSgjQF$JiCi=WUhqb(i-h4BAg7}#HI|b}E|$$I ziE35Qn*30K7K;O)$|3*X^eaR#-#;F(iM5 +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/12/31 12:44:19 by tomoron #+# #+# */ -/* Updated: 2023/12/31 12:45:27 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -void ft_swap(int *n1, int *n2) -{ - int tmp; - - tmp = *n1; - *n1 = *n2; - *n2 = tmp; -} diff --git a/2024/14/libft/ft_tolower.c b/2024/14/libft/ft_tolower.c deleted file mode 100755 index 44cdea6..0000000 --- a/2024/14/libft/ft_tolower.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_tolower.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/13 21:59:21 by tomoron #+# #+# */ -/* Updated: 2023/11/02 11:00:47 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_tolower(int c) -{ - if (c >= 'A' && c <= 'Z') - c += 32; - return (c); -} diff --git a/2024/14/libft/ft_tolower.o b/2024/14/libft/ft_tolower.o deleted file mode 100644 index 44161bd59e8cba480ede05e0ac508a8521fb04bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2752 zcmb_d&1(~F5TD)6#OmaXoq2xqo0;chp50rM$B*cm z1|k}aL3<=9z#Fq|=X^5<{m49hZ1MBrjioy`mc~;L`_O^bxzxX%Xg!!*y7MNzIJtzz zg|}L-mdW&)My4^)GccIx9b6M{4glzuMrLlkk=dU(kl40is_)PS0K){Gp()H7+X_Zz zERjfH+C%u5pmm_a`WxG`)nPkfD1oJ&F(5gHLqmUZ-3&~K#mpG|gP^h=3Rxz_s$DOq z=bT2f;?~n6qt=Ku3MDV^xmEY7)3Az=opozY)^lsw!%p*(=U#4U+bw2y4e#2W9oe0& zRthCg34}`BgCcZeF%$d+1Z5-Z1+IRcn0DzMM-wgmU`xAGdjG5Go;ie%tHM~MMO z6pU#67r1g33c~0lh2mlZdQQ<|!>I6}$Ync9>)!91oz?C2N^N_$szZ z4Y5r)txocaCR}ZG>OB&{C2vmvxA4t8mi`m|3C7ol_-A=6Jt_PPjLUqe)zni`PVu@MIrAP^MYmRS@Ge>nr)o2!={53h zsnm45rUW4*X0=jx@-%LL29`zJGc(9l(pBmu7p%JLIo8n=r*}3zyLbt#YIUxbCvLM+ zUPh<<3^=p-Qp2t}N-4Z078dvH0_uet>AxiJFi+HN`9#f!@-a}Yckrob4gH%ySomh; zm?Hfy5z=Qerr2;!@>Q5H#adLD+dxMcBkoHMm|!g`%&nn=mYNd+>v`Uki#(=Zn|dFm z|F<9>&PgHP=!KH@-|bhJy9r%U^*?a^#~e!a)%z{=_aII=hnXj8Ef>lQz*_2ywh +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/13 21:59:21 by tomoron #+# #+# */ -/* Updated: 2023/11/02 11:00:56 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_toupper(int c) -{ - if (c >= 'a' && c <= 'z') - c -= 32; - return (c); -} diff --git a/2024/14/libft/ft_toupper.o b/2024/14/libft/ft_toupper.o deleted file mode 100644 index 815af882b9d4a92a3319f7cb016872976cf5ab7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2752 zcmb_d%Wo5B5TD)kIuB!<7Y$KbVwGA5iLMDkZFnd#f&f7X0aB2VKxXZ%6ARlL*_$Xu z@S-w2gFFbGv9B1GxI&> z+r2%0_N1<9Afmx2v_^sg{B5@EoNwl!51EsvmtHU3+*rK1VW)oWMF(0pQonbg^~?Ci z;+yo+_y!tR|Ixa&Os3Z~GWGth{=rQ5U{Ac!51?BbnYo=t=5XRjV$Z-t@7Mr)k z1ZItW14d>vkw{?LF?>wW+EHQsuUfO!VJ~4Qfu&tCAUTRdLtpvP3`~f{%ou!$pt2qc z*(Ak^U7JqNJM~7{t)+)YtYK>eN?zV`=VoV}x>bbij9YcGo?FeHa2nS=cebf*x0pS! z|G>fQ@WE`QTqt=;Ae3t!6k!_{Gr?a#P&Tq&;OgUvX*Vu{w$P;wZfk2_#si`y&_m)c z``GrbpY-F&_!JTltKma6zDKQT+JD=Vr08VvL1V~2WJ4R$Q|2z;hCIAnUmdZZJp1Fy zi?R6mdoh3x9RqwZlA77xIcKKgXUx8miElGLZFa7hdOUGd*D>X%Z3*t>N98GcWAN^M z6v@DYjuHcmC>YWB|KQ45C=3Irjkk&csjVO)26S)1FCfyR%u`xaDt7vDtuVOB&{C2v;%H}S7|Ed3|^bByl{@h|gOdQ$jT8JGD` ztEs1!Wi}rQmNs14GBU>%u2cD2mrq$}4-E?70!bF5S6CckZXcJVq` zmCAfIPuxa%dJ~=UGvLhROLe>ID5db0SXkV%3#fmnlKxEc9P>oomNjZVl+{2r-@&J% zIrMJ=Vd0yVV~X^m}0{@$ya8=1Zz=YZXF$AjJS_E;5chhVQv*2wA7psSTFFV zT;nnQ+SL0f{l6RWa83$Yrx!}vf45#??k;pi)qlnHmpPQ`tM^;#e}_2b+|N8wJGf9@ z0M=4pw2ipfD%E2!>bz9m6&ys(e}+I5nJ3M^10T7|g46ehN`>ctm+OClK2>C{qHm#7 zY?b$C6d1v!K0)fN`t6}S4>^8>28zi11$u-=)cWs4tUrldiI?^Ng;>;7UolAitxA~t z0G(0w?{j_mF4F$fUn^Yy7-Ez&y#Hr-Lk^)&6{#=!H*^|j-@B;psJu0 +#+ +:+ +#+ # -# +#+#+#+#+#+ +#+ # -# Created: 2023/11/04 08:03:00 by tomoron #+# #+# # -# Updated: 2024/10/28 23:09:14 by tomoron ### ########.fr # -# # -# **************************************************************************** # - -NAME = gnl.a - -CC = cc - -SRCS = get_next_line_bonus.c\ - get_next_line_utils_bonus.c - -OBJS = $(SRCS:.c=.o) - -FLAGS = -Wall -Wextra -Werror - -$(NAME): $(OBJS) - ar rcs $(NAME) $(OBJS) - -.c.o: - $(CC) $(FLAGS) -c $< -o $@ - -all: $(NAME) - -bonus: all - -clean: - rm -f $(OBJS) - -fclean: clean - rm -f $(NAME) - -re: fclean all - -.PHONY: bonus clean all re fclean diff --git a/2024/14/libft/gnl/get_next_line_bonus.c b/2024/14/libft/gnl/get_next_line_bonus.c deleted file mode 100755 index 658e574..0000000 --- a/2024/14/libft/gnl/get_next_line_bonus.c +++ /dev/null @@ -1,113 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* get_next_line_bonus.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/05 17:03:11 by tomoron #+# #+# */ -/* Updated: 2023/12/04 09:56:26 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "get_next_line_bonus.h" - -char *get_next_line(int fd) -{ - static t_buffer *buffer_start; - t_buffer *buffer; - int nl_found; - int start; - t_result *result; - - nl_found = 0; - result = 0; - start = 0; - buffer = create_find_buffer(&buffer_start, fd); - if (BUFFER_SIZE < 0 || !buffer) - return (0); - if (fd >= 0 && (buffer->i == 0 || buffer->i == buffer->rd_l)) - buffer->rd_l = read(fd, buffer->str, BUFFER_SIZE); - else - start = buffer->i; - while (fd >= 0 && !nl_found && buffer->rd_l > 0) - { - nl_found = find_nl(buffer, &start); - if (!ft_lstadd_bak(&result, buffer->str, buffer->i, start)) - return (ft_lstclr(&result, NULL, NULL)); - if (!nl_found) - buffer->rd_l = read(fd, buffer->str, BUFFER_SIZE); - } - return (result_to_str(result, &buffer_start, buffer)); -} - -int find_nl(t_buffer *buffer, int *start) -{ - int nl_found; - - nl_found = 0; - if (buffer->i == BUFFER_SIZE) - *start = 0; - buffer->i = *start; - while (buffer->i < buffer->rd_l && !nl_found) - { - if (buffer->str[buffer->i] == '\n') - nl_found = 1; - (buffer->i)++; - } - return (nl_found); -} - -t_buffer *create_find_buffer(t_buffer **buffer_start, int fd) -{ - t_buffer *current; - t_buffer *last; - - current = *buffer_start; - last = 0; - while (current) - { - if (current->fd == fd) - return (current); - last = current; - current = current->next; - } - if (last) - { - last->next = malloc(sizeof(t_buffer)); - last = last->next; - } - else - { - last = malloc(sizeof(t_buffer)); - *buffer_start = last; - } - if (last) - init_buffer(last, fd); - return (last); -} - -void init_buffer(t_buffer *last, int fd) -{ - last->fd = fd; - last->i = 0; - last->rd_l = 0; - last->next = 0; -} - -void ft_lstdelon(t_buffer *node, t_buffer **start) -{ - t_buffer *current; - t_buffer *next; - - if (!start || !node || !*start) - return ; - current = *start; - while (current->next && current->next != node) - current = current->next; - next = node->next; - free(node); - if (node == *start) - *start = next; - else - current->next = next; -} diff --git a/2024/14/libft/gnl/get_next_line_bonus.h b/2024/14/libft/gnl/get_next_line_bonus.h deleted file mode 100755 index 28facee..0000000 --- a/2024/14/libft/gnl/get_next_line_bonus.h +++ /dev/null @@ -1,46 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* get_next_line_bonus.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/05 17:24:39 by tomoron #+# #+# */ -/* Updated: 2023/12/04 09:57:06 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef GET_NEXT_LINE_BONUS_H -# define GET_NEXT_LINE_BONUS_H -# include -# include - -# ifndef BUFFER_SIZE -# define BUFFER_SIZE 42 -# endif - -typedef struct s_result -{ - char part[BUFFER_SIZE + 1]; - struct s_result *next; - -} t_result; - -typedef struct s_buffer -{ - char str[BUFFER_SIZE]; - int i; - int rd_l; - int fd; - struct s_buffer *next; -} t_buffer; - -char *get_next_line(int fd); -char *result_to_str(t_result *lst, t_buffer **buf_st, t_buffer *buffer); -t_result *ft_lstadd_bak(t_result **lst, char *buffer, int n, int start); -char *ft_lstclr(t_result **lst, t_buffer **buf_str, t_buffer *buffer); -int find_nl(t_buffer *buffer, int *start); -t_buffer *create_find_buffer(t_buffer **buffer_start, int fd); -void init_buffer(t_buffer *last, int fd); -void ft_lstdelon(t_buffer *node, t_buffer **start); -#endif diff --git a/2024/14/libft/gnl/get_next_line_bonus.o b/2024/14/libft/gnl/get_next_line_bonus.o deleted file mode 100644 index ed6b7b7e7ccf128b2452231a7e101980a43cbff0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3128 zcmb_e&ubi29Dkd%Ntz#>SVXici3kcME*pum5|s&I^eJ7bLJopuv)Rlhp_^UVovo=j z8l0?jG7a>g2SKa{4<7sjY7aJTg~dxjgf@8T9wO|LJ*=>YISBFdee>RCGL4@6!rS+K zpYPB2{eIshpBZQ0=!wOcq8NLf9h?-(*xHE$UKgy+hM+me-9Ne0O1O5XX6%xH*Nh$7 zYetqB(eA;u`fPPHb|Ud|x*1Yge9@$6ax(o|MYY zT7qfUwxP0V-2Wk_RgXi^EDNdK;9He?5XIP~uoTKWH{qq~e9PVmF6Q{S(-UL>XmZ=V z&E0$I%6^k><=DGWISuYVvVV7ff1i8y4)^8|_9ZBH3+E%O&z)Zq=kMgSu?-S+>(5=g z?N(aQXmgLMTvvTSwd*M4%TR{2?&(w0MoU&7XQ=wk&!rFt1P18oN%GOWN!d8|4jeoO zotrv-=!#yY75Ea4aJ7T$#Sh)jwSDeZ z+BKsEOS*-R;W(pJWvAOUf(dVX10;1hhQ;tb+UESp?di7@myJDbivl}#i)mkNPwfNQ zH1@i!elhTXBvL-lzBQr!d~Cq+2eoQH1c*$JLOOMB#So$SHEQD-Ei@ySdnjMG((zIl zQA%ctwwgWx55h%FPbikx^d#};?`UJ|#Hja#eu_JzWNj2*%#~wf#5Ux_wz-qUG>I|& z5{8H&JCEs1H72*Yb18`#f1qug3dF$C)oH`W^?`3154x9sB&>lK+WbjOA+;nJ1hmUn zy`mDe`83|hs4&AL2-@2W8Y|8XF&Sc3p#;k2Gliw`i)N|3QY?&5CgYQFx;edXqS(jp zvDn&Z?8)K&fvc$XQ^05ueMGgNIXU`8&+JHFZz%>9A$wIw8M{ZjlK1>ZVj=%P%D+D( zzt)w1BIU1y<(3c&`){QD_prR@ZlEA#(d`ca$Jk%{QJl`btmh$^N*05KBBb7>-Vm<9 zAHkdo`4P1N_P)f|sa7CS6YO`fs7+B?13-S}WlEw(z^-B)r9b;GIDMdw(x;jog{Od1 z+|gbzAW?hlc`U-uNnF$%*soYe`FS2V5v5Pn`x^sGG(jMUus$q>R|y0WPA^*Fdjx_A zr`jw0xU3`L^ruhZV;bH&t5|8F-hV+L*emWtXW<&WuE&D|IgmFED(;rl& z-;#ACeJzBKgC`<0X)4aT_&vbY9L-1Yd1kfYkdZJA$I|{{aAsjClY6 diff --git a/2024/14/libft/gnl/get_next_line_utils_bonus.c b/2024/14/libft/gnl/get_next_line_utils_bonus.c deleted file mode 100755 index 1233d60..0000000 --- a/2024/14/libft/gnl/get_next_line_utils_bonus.c +++ /dev/null @@ -1,119 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* get_next_line_utils_bonus.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/11/05 17:35:15 by tomoron #+# #+# */ -/* Updated: 2023/12/04 09:58:25 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ -#include "get_next_line_bonus.h" - -char *ft_strncpy(char *dest, char *src, size_t n) -{ - size_t i; - - i = 0; - while (i < (n)) - { - dest[i] = src[i]; - i++; - } - dest[i] = 0; - return (dest); -} - -t_result *ft_lstadd_bak(t_result **lst, char *buffer, int n, int start) -{ - t_result *current; - - if (!lst) - return (0); - current = *lst; - while (current && current->next) - current = current->next; - if (!current) - { - *lst = malloc(sizeof(t_result)); - if (!*lst) - return (0); - ft_strncpy((*lst)->part, buffer + start, n - start); - (*lst)->next = 0; - } - else - { - current->next = malloc(sizeof(t_result)); - if (!current->next) - return (0); - ft_strncpy(current->next->part, buffer + start, n - start); - current->next->next = 0; - } - return (*lst); -} - -char *ft_lstclr(t_result **lst, t_buffer **buf_srt, t_buffer *buffer) -{ - t_result *next; - - if (lst) - { - while (*lst) - { - next = (*lst)->next; - free(*lst); - *lst = next; - } - } - if (buf_srt && buffer && (buffer->rd_l == 0 || buffer->i == buffer->rd_l - || buffer->rd_l == -1)) - ft_lstdelon(buffer, buf_srt); - return (0); -} - -int lst_str_len(t_result *lst) -{ - int i; - int res; - - res = 0; - while (lst) - { - i = 0; - while (lst->part[i]) - i++; - res += i; - lst = lst->next; - } - return (res); -} - -char *result_to_str(t_result *lst, t_buffer **buf_srt, t_buffer *buffer) -{ - char *res; - int res_i; - int p_i; - t_result *start; - - if (!lst) - return (ft_lstclr(&lst, buf_srt, buffer)); - res = malloc((lst_str_len(lst) + 1) * sizeof(char)); - start = lst; - res_i = 0; - while (res && lst) - { - p_i = 0; - while (lst->part[p_i]) - { - res[res_i] = lst->part[p_i]; - p_i++; - res_i++; - } - lst = lst->next; - } - if (res) - res[res_i] = 0; - ft_lstclr(&start, buf_srt, buffer); - return (res); -} diff --git a/2024/14/libft/gnl/get_next_line_utils_bonus.o b/2024/14/libft/gnl/get_next_line_utils_bonus.o deleted file mode 100644 index 6235341b2f710c27fb1ef78489e0e085b6cbec97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2768 zcmb_dO>7%Q6duQE;y~IBsDg?jusFb>WN~hmTF^#iVGj+ekivi1IGas~x?UH1U8M+v zk)5iW6;du07Y=aa4u?tzk;qY9iAxTV>I;$&Mc5SwBjw-&l6l|k%x2?+8&8^jGvE7v z^Tz&Czw*XNBEcjj*lX5Q*T3T1bW-J zsCSgwOW~Ncr|p*6p& zx&hN#r9+Ni4ZU>uZPZ^7r$Bp|=Av_PHlx(f9BK^2H3yXr)!O56aJReZg@*EcG=ELK zM>dFn)Mshi)DJjH>ZKG3;5g6^Xy|6FxaKIR6U;Sq?j!`rG}TO9X-exBAA;pK^rgQZWI(e!r>jBgJS`n@at0 zm~#IZ)8?k$jK=g`5;gTbSa1i{++JAJbPNe!Sc@v&rxzCJd%V=WK;P$^{q7ECn@=Dw zwb%Uu03Y`HWax-nhi@>d?!FvdnoRVGR&7^XXfVskxvS|LcCoZpaMLqcbwe$BYE=u1QcNV5rjm) z;1k*3jqE=MPPB+mB>ymye+!%_eZ>EH?mv_q|9(TzDEoVGT*6qAjU0pF`pFp1Yb9(^ z;NT!$Bk?U-QvilYr8E3&!yyr`nRr0!Bz^S$B>Z*4;ioE6U8FN8O$&Hi;Jhb=z8=~5!5 zv*y}n*;{i;=2F2emsE?X6wAvk5x&?o$#FT;?zNRl?;y zuKLbU-cmNK`&DRvU5uSnWA6$3yAcv@Wd0JyZ|6z%r$qnPg(B)lOQgN5-z6-0Wl$hi ir4> diff --git a/2024/14/libft/gnl/gnl.a b/2024/14/libft/gnl/gnl.a deleted file mode 100644 index a3407b40f639aaeb345fba50a03e01eb162506ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33020 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⋙Mvi5$jl0JO^4!F=Tsk76@yK0dbVlD0t762 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 diff --git a/2024/14/libft/libft.h b/2024/14/libft/libft.h deleted file mode 100755 index 87fa052..0000000 --- a/2024/14/libft/libft.h +++ /dev/null @@ -1,77 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* libft.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: tomoron +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/10/30 16:55:48 by tomoron #+# #+# */ -/* Updated: 2024/01/10 14:10:51 by tomoron ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef LIBFT_H -# define LIBFT_H -# include -# include -# include -# include "./ft_printf/ft_printf.h" -# include "./gnl/get_next_line_bonus.h" - -typedef struct s_list -{ - void *content; - struct s_list *next; -} t_list; - -int ft_atoi(const char *str); -void ft_bzero(void *s, size_t n); -int ft_isalnum(int c); -int ft_isalpha(int c); -int ft_isascii(int c); -int ft_isdigit(int c); -int ft_isprint(int c); -void *ft_memchr(const void *s, int c, size_t n); -int ft_memcmp(const void *s1, const void *s2, size_t n); -void *ft_memcpy(void *dest, const void *src, size_t n); -void *ft_memmove(void *dest, const void *src, size_t n); -void *ft_memset(void *s, int c, size_t n); -char *ft_strchr(const char *s, int c); -size_t ft_strlcat(char *dest, const char *src, size_t size); -size_t ft_strlcpy(char *dest, const char *src, size_t size); -size_t ft_strlen(const char *str); -int ft_strncmp(const char *s1, const char *s2, size_t n); -char *ft_strnstr(const char *str, const char *to_find, size_t len); -char *ft_strrchr(const char *s, int c); -int ft_tolower(int c); -int ft_toupper(int c); -void *ft_calloc(size_t nb, size_t size); -char *ft_strdup(const char *src); -char *ft_strjoin(char const *s1, char const *s2); -char *ft_strtrim(char const *s1, char const *set); -char *ft_substr(char const *s, unsigned int start, size_t len); -char **ft_split(char const *str, char charset); -char *ft_itoa(int n); -char *ft_strmapi(char const *s, char (*f)(unsigned int, char)); -void ft_striteri(char *s, void (*f)(unsigned int, char*)); -void ft_putchar_fd(char c, int fd); -void ft_putstr_fd(char *s, int fd); -void ft_putendl_fd(char *s, int fd); -void ft_putnbr_fd(int n, int fd); -t_list *ft_lstnew(void *content); -void ft_lstadd_front(t_list **lst, t_list *new); -int ft_lstsize(t_list *lst); -t_list *ft_lstlast(t_list *lst); -void ft_lstadd_back(t_list **lst, t_list *new); -void ft_lstdelone(t_list *lst, void (*del)(void*)); -void ft_lstclear(t_list **lst, void (*del)(void*)); -void ft_lstiter(t_list *lst, void (*f)(void *)); -t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)); -char **ft_split_set(char *str, char *charset); -int ft_strcmp(char *s1, char *s2); -void ft_free_str_arr(char **arr); -void ft_swap(int *n1, int *n2); -void ft_set_color(int r, int g, int b); -void ft_reset_color(void); - -#endif diff --git a/2024/14/main.o b/2024/14/main.o deleted file mode 100644 index 0c4d6a07d776d7ffefeec09dddf7f93a2d27c303..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5880 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/07/17 23:03:36 by tomoron #+# #+# */ -/* Updated: 2024/12/14 15:16:48 by tomoron ### ########.fr */ +/* Updated: 2024/12/14 16:20:20 by tomoron ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,12 +14,10 @@ #include #include #include -#include "mlx/mlx.h" #include "libft/libft.h" #define MAX_UP 103 #define MAX_LEN 101 -#define ROBOT_SIZE 8 typedef struct s_robot { @@ -71,8 +69,8 @@ static void update_pos(t_robot *robot) { while(robot) { - robot->pos_x = (robot->pos_x + (robot->vel_x * 100)); - robot->pos_y = (robot->pos_y + (robot->vel_y * 100)); + robot->pos_x = (robot->pos_x + (robot->vel_x)); + robot->pos_y = (robot->pos_y + (robot->vel_y)); robot->pos_x %= MAX_LEN; robot->pos_y %= MAX_UP; if(robot->pos_x < 0) @@ -83,29 +81,7 @@ static void update_pos(t_robot *robot) } } -static long int get_result(t_robot *robot) -{ - long int tiles[4]; - - bzero(tiles, 4 * sizeof(long int)); - while(robot) - { - robot->pos_x -= (MAX_LEN / 2); - robot->pos_y -= (MAX_UP / 2); - if(robot->pos_x < 0 && robot->pos_y < 0) - tiles[0]++; - else if(robot->pos_x > 0 && robot->pos_y < 0) - tiles[1]++; - else if(robot->pos_x < 0 && robot->pos_y > 0) - tiles[2]++; - else if(robot->pos_x > 0 && robot->pos_y > 0) - tiles[3]++; - robot = robot->next; - } - return(tiles[0] * tiles[1] * tiles[2] * tiles[3]); -} - -static char **create_map(void) +static char **create_map(char fill) { char **res; int i; @@ -116,52 +92,66 @@ static char **create_map(void) while(i < MAX_UP + 1) { res[i] = malloc(MAX_LEN + 2); + memset(res[i], fill, MAX_LEN + 1); + res[i][MAX_LEN + 1] = 0; i++; } return(res); } -void set_pos(unsigned int *img, unsigned long pos, unsigned int color) +void fill_map(char **map, t_robot *robot) { int i; - int j; i = 0; - while(i < ROBOT_SIZE) + while(map[i]) { - j = 0; - while(j < ROBOT_SIZE) - { - img[pos + (i * MAX_LEN * ROBOT_SIZE) + j] = color; - j++; - } + memset(map[i], '.', MAX_LEN + 1); + map[i][MAX_LEN + 1] = 0; i++; } -} - -void fill_map(void *img, t_robot *robot) -{ - unsigned long pos; - int a; - - img = mlx_get_data_addr(img,&a, &a, &a); - bzero(img, (MAX_LEN * ROBOT_SIZE) * (MAX_UP * ROBOT_SIZE) * sizeof(unsigned int)); while(robot) { - pos = robot->pos_x * ROBOT_SIZE + (robot->pos_y * (MAX_LEN * ROBOT_SIZE) * ROBOT_SIZE); - set_pos(img, pos, 0xFFFFFF); + map[robot->pos_y][robot->pos_x] = '#'; robot = robot->next; } } -static int loop_fnc(t_data *data) +static int count_area(char **map, int pos[2], char **locations) { - fill_map(data->img, data->robot); - mlx_put_image_to_window(data->mlx, data->win, data->img, 0 ,0); - printf("res : %d\n", data->res); - update_pos(data->robot); - data->res++; - usleep(20000); + int res; + + res = 0; + if(pos[0] < 0 || pos[1] < 0 || !map[pos[0]] || !map[pos[0]][pos[1]] || locations[pos[0]][pos[1]] != '.' || map[pos[0]][pos[1]] != '#') + return(0); + locations[pos[0]][pos[1]] = '#'; + res += count_area(map, (int [2]){pos[0] + 1, pos[1]}, locations); + res += count_area(map, (int [2]){pos[0] - 1, pos[1]}, locations); + res += count_area(map, (int [2]){pos[0], pos[1] + 1}, locations); + res += count_area(map, (int [2]){pos[0], pos[1] - 1}, locations); + return(res + (map[pos[0]][pos[1]] == '#')); +} + +static int is_easter_egg(char **map) +{ + int i; + int j; + char **locations; + + locations = create_map('.'); + i = 0; + while(map[i]) + { + j = 0; + while(map[i][j]) + { + if(count_area(map, (int [2]){i, j}, locations) > 50) + return(1); + j++; + } + i++; + } + ft_free_str_arr(locations); return(0); } @@ -170,7 +160,7 @@ long int resolve_part2(char *input, char **split) (void)input; t_robot *robot; long int res; - t_data data; + char **map; robot = 0; res = 0; @@ -179,18 +169,13 @@ long int resolve_part2(char *input, char **split) add_robot(&robot, *split); split++; } - data.mlx = mlx_init(); - data.win = mlx_new_window(data.mlx, MAX_LEN * ROBOT_SIZE, MAX_UP * ROBOT_SIZE, "language : eyes"); - data.img = mlx_new_image(data.mlx, MAX_LEN * ROBOT_SIZE, MAX_UP * ROBOT_SIZE); - data.robot = robot; - data.res = 0; - mlx_loop_hook(data.mlx, loop_fnc, &data); - mlx_loop(data.mlx); - while(1) - ;; -// fill_show_map(map, robot); - (void)get_result; - (void)create_map; - (void)update_pos; + map = create_map('.'); + fill_map(map,robot); + while(!is_easter_egg(map)) + { + update_pos(robot); + res++; + fill_map(map,robot); + } return(res); } diff --git a/2024/14/part2.o b/2024/14/part2.o deleted file mode 100644 index f0e6cedf3f03ba06aeb8810608d16249ec060571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13920 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