From d572e07e85a8e88a44381e38e00472a0b6926c52 Mon Sep 17 00:00:00 2001 From: kinou-p Date: Fri, 26 Nov 2021 02:42:03 +0100 Subject: [PATCH] first --- Makefile | 39 ++++++++++++++++++++ libft/Makefile | 66 ++++++++++++++++++++++++++++++++++ libft/ft_atoi.c | 39 ++++++++++++++++++++ libft/ft_bzero.c | 28 +++++++++++++++ libft/ft_calloc.c | 31 ++++++++++++++++ libft/ft_isalnum.c | 23 ++++++++++++ libft/ft_isalpha.c | 21 +++++++++++ libft/ft_isascii.c | 21 +++++++++++ libft/ft_isdigit.c | 21 +++++++++++ libft/ft_isprint.c | 21 +++++++++++ libft/ft_itoa.c | 59 ++++++++++++++++++++++++++++++ libft/ft_lstadd_back.c | 21 +++++++++++ libft/ft_lstadd_front.c | 19 ++++++++++ libft/ft_lstclear.c | 28 +++++++++++++++ libft/ft_lstdelone.c | 21 +++++++++++ libft/ft_lstiter.c | 22 ++++++++++++ libft/ft_lstlast.c | 22 ++++++++++++ libft/ft_lstmap.c | 33 +++++++++++++++++ libft/ft_lstnew.c | 25 +++++++++++++ libft/ft_lstsize.c | 26 ++++++++++++++ libft/ft_memccpy.c | 32 +++++++++++++++++ libft/ft_memchr.c | 28 +++++++++++++++ libft/ft_memcmp.c | 28 +++++++++++++++ libft/ft_memcpy.c | 32 +++++++++++++++++ libft/ft_memmove.c | 39 ++++++++++++++++++++ libft/ft_memset.c | 29 +++++++++++++++ libft/ft_putchar_fd.c | 18 ++++++++++ libft/ft_putendl_fd.c | 21 +++++++++++ libft/ft_putnbr_fd.c | 28 +++++++++++++++ libft/ft_putstr_fd.c | 20 +++++++++++ libft/ft_split.c | 79 +++++++++++++++++++++++++++++++++++++++++ libft/ft_strchr.c | 26 ++++++++++++++ libft/ft_strdup.c | 34 ++++++++++++++++++ libft/ft_strjoin.c | 42 ++++++++++++++++++++++ libft/ft_strlcat.c | 34 ++++++++++++++++++ libft/ft_strlcpy.c | 36 +++++++++++++++++++ libft/ft_strlen.c | 23 ++++++++++++ libft/ft_strmapi.c | 32 +++++++++++++++++ libft/ft_strncmp.c | 28 +++++++++++++++ libft/ft_strnstr.c | 41 +++++++++++++++++++++ libft/ft_strrchr.c | 35 ++++++++++++++++++ libft/ft_strtrim.c | 71 ++++++++++++++++++++++++++++++++++++ libft/ft_substr.c | 39 ++++++++++++++++++++ libft/ft_tolower.c | 20 +++++++++++ libft/ft_toupper.c | 20 +++++++++++ libft/libft.h | 72 +++++++++++++++++++++++++++++++++++++ main.c | 19 ++++++++++ process.c | 46 ++++++++++++++++++++++++ push_swap.c | 74 ++++++++++++++++++++++++++++++++++++++ push_swap.h | 23 ++++++++++++ sort3.c | 12 +++++++ sort5.c | 12 +++++++ 52 files changed, 1679 insertions(+) create mode 100644 Makefile create mode 100644 libft/Makefile create mode 100644 libft/ft_atoi.c create mode 100644 libft/ft_bzero.c create mode 100644 libft/ft_calloc.c create mode 100644 libft/ft_isalnum.c create mode 100644 libft/ft_isalpha.c create mode 100644 libft/ft_isascii.c create mode 100644 libft/ft_isdigit.c create mode 100644 libft/ft_isprint.c create mode 100644 libft/ft_itoa.c create mode 100644 libft/ft_lstadd_back.c create mode 100644 libft/ft_lstadd_front.c create mode 100644 libft/ft_lstclear.c create mode 100644 libft/ft_lstdelone.c create mode 100644 libft/ft_lstiter.c create mode 100644 libft/ft_lstlast.c create mode 100644 libft/ft_lstmap.c create mode 100644 libft/ft_lstnew.c create mode 100644 libft/ft_lstsize.c create mode 100644 libft/ft_memccpy.c create mode 100644 libft/ft_memchr.c create mode 100644 libft/ft_memcmp.c create mode 100644 libft/ft_memcpy.c create mode 100644 libft/ft_memmove.c create mode 100644 libft/ft_memset.c create mode 100644 libft/ft_putchar_fd.c create mode 100644 libft/ft_putendl_fd.c create mode 100644 libft/ft_putnbr_fd.c create mode 100644 libft/ft_putstr_fd.c create mode 100644 libft/ft_split.c create mode 100644 libft/ft_strchr.c create mode 100644 libft/ft_strdup.c create mode 100644 libft/ft_strjoin.c create mode 100644 libft/ft_strlcat.c create mode 100644 libft/ft_strlcpy.c create mode 100644 libft/ft_strlen.c create mode 100644 libft/ft_strmapi.c create mode 100644 libft/ft_strncmp.c create mode 100644 libft/ft_strnstr.c create mode 100644 libft/ft_strrchr.c create mode 100644 libft/ft_strtrim.c create mode 100644 libft/ft_substr.c create mode 100644 libft/ft_tolower.c create mode 100644 libft/ft_toupper.c create mode 100644 libft/libft.h create mode 100644 main.c create mode 100644 process.c create mode 100644 push_swap.c create mode 100644 push_swap.h create mode 100644 sort3.c create mode 100644 sort5.c diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c9eb6e6 --- /dev/null +++ b/Makefile @@ -0,0 +1,39 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: apommier +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2021/11/13 13:06:47 by apommier #+# #+# # +# Updated: 2021/11/25 23:57:06 by apommier ### ########.fr # +# # +# **************************************************************************** # + +NAME = push_swap +SRCS = push_swap.c \ + utils.c \ + main.c +OBJS = ${SRCS:.c=.o} +CFLAGS = -Wall -Wextra -Werror +RM = rm -rf +LIBFT = ./libft + +.c.o: + gcc ${CFLAGS} -c $< -o ${<:.c=.o} + +${NAME}:${OBJS} + make bonus -C ${LIBFT} + +all: ${NAME} + +clean: + ${RM} ${OBJS} + +fclean: clean + ${RM} ${NAME} + +re: fclean all + +.PHONY: all clean fclean re bonus + diff --git a/libft/Makefile b/libft/Makefile new file mode 100644 index 0000000..092636c --- /dev/null +++ b/libft/Makefile @@ -0,0 +1,66 @@ +NAME = libft.a +SRCS = ft_memset.c \ + ft_bzero.c \ + ft_memcpy.c \ + ft_memccpy.c \ + ft_memmove.c \ + ft_memchr.c \ + ft_memcmp.c \ + ft_strlen.c \ + ft_isalpha.c \ + ft_isdigit.c \ + ft_isalnum.c \ + ft_isascii.c \ + ft_isprint.c \ + ft_toupper.c \ + ft_tolower.c \ + ft_strchr.c \ + ft_strrchr.c \ + ft_strncmp.c \ + ft_strlcpy.c \ + ft_strlcat.c \ + ft_strnstr.c \ + ft_atoi.c \ + ft_calloc.c \ + ft_strdup.c \ + ft_substr.c \ + ft_strjoin.c \ + ft_strtrim.c \ + ft_split.c \ + ft_itoa.c \ + ft_strmapi.c \ + ft_putchar_fd.c \ + ft_putstr_fd.c \ + ft_putendl_fd.c \ + ft_putnbr_fd.c +OBJS = ${SRCS:.c=.o} +BONUS_C = 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 +BONUS_O = ${BONUS_C:.c=.o} +CC = gcc +CFLAGS = -Wall -Wextra -Werror +RM = rm -rf + +.c.o: + ${CC} ${CFLAGS} -c $< -o ${<:.c=.o} + +${NAME}:${OBJS} + ar -rcs ${NAME} ${OBJS} + +all: ${NAME} + +bonus: all + ${CC} ${CFLAGS} -c ${BONUS_C} + ar -rcs ${NAME} ${BONUS_O} + +clean: + ${RM} ${OBJS} + ${RM} ${BONUS_O} + +fclean: clean + ${RM} ${NAME} + +re: fclean all + +.PHONY: all clean fclean re bonus + diff --git a/libft/ft_atoi.c b/libft/ft_atoi.c new file mode 100644 index 0000000..a9db23e --- /dev/null +++ b/libft/ft_atoi.c @@ -0,0 +1,39 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_atoi.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:09:17 by apommier #+# #+# */ +/* Updated: 2020/12/12 12:05:13 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_atoi(const char *nptr) +{ + int i; + int nbr; + int minus; + + minus = 1; + nbr = 0; + i = 0; + while ((nptr[i] >= 9 && nptr[i] <= 13) || nptr[i] == 32) + i++; + if (nptr[i] == '+') + i++; + else if (nptr[i] == '-') + { + i++; + minus = -1; + } + while (nptr[i] >= '0' && nptr[i] <= '9') + { + nbr = nbr * 10 + nptr[i] - '0'; + i++; + } + return (minus * nbr); +} diff --git a/libft/ft_bzero.c b/libft/ft_bzero.c new file mode 100644 index 0000000..6480413 --- /dev/null +++ b/libft/ft_bzero.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_bzero.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:09:48 by apommier #+# #+# */ +/* Updated: 2020/11/29 17:02:33 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_bzero(void *s, size_t n) +{ + char *p; + int i; + + p = (char*)s; + i = 0; + while (n != 0) + { + p[i] = 0; + i++; + n--; + } +} diff --git a/libft/ft_calloc.c b/libft/ft_calloc.c new file mode 100644 index 0000000..08404eb --- /dev/null +++ b/libft/ft_calloc.c @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_calloc.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:09:57 by apommier #+# #+# */ +/* Updated: 2020/12/16 16:13:27 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_calloc(size_t nmemb, size_t size) +{ + char *new; + int i; + + i = 0; + new = malloc(size * nmemb); + if (new) + { + while (size * nmemb - i) + { + new[i] = 0; + i++; + } + } + return ((void*)new); +} diff --git a/libft/ft_isalnum.c b/libft/ft_isalnum.c new file mode 100644 index 0000000..7f628b5 --- /dev/null +++ b/libft/ft_isalnum.c @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isalnum.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:10:08 by apommier #+# #+# */ +/* Updated: 2020/12/12 09:26:43 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_isalnum(int c) +{ + if (c <= '9' && c >= '0') + return (1); + else if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) + return (1); + else + return (0); +} diff --git a/libft/ft_isalpha.c b/libft/ft_isalpha.c new file mode 100644 index 0000000..51292d2 --- /dev/null +++ b/libft/ft_isalpha.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isalpha.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:10:17 by apommier #+# #+# */ +/* Updated: 2020/12/12 09:28:12 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_isalpha(int c) +{ + if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) + return (1); + else + return (0); +} diff --git a/libft/ft_isascii.c b/libft/ft_isascii.c new file mode 100644 index 0000000..be6ac40 --- /dev/null +++ b/libft/ft_isascii.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isascii.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:10:30 by apommier #+# #+# */ +/* Updated: 2020/12/11 18:11:18 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_isascii(int c) +{ + if (c >= 0 && c <= 127) + return (1); + else + return (0); +} diff --git a/libft/ft_isdigit.c b/libft/ft_isdigit.c new file mode 100644 index 0000000..81ca1f0 --- /dev/null +++ b/libft/ft_isdigit.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isdigit.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:10:39 by apommier #+# #+# */ +/* Updated: 2020/12/12 09:27:06 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_isdigit(int c) +{ + if (c <= '9' && c >= '0') + return (1); + else + return (0); +} diff --git a/libft/ft_isprint.c b/libft/ft_isprint.c new file mode 100644 index 0000000..1915c16 --- /dev/null +++ b/libft/ft_isprint.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isprint.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:10:55 by apommier #+# #+# */ +/* Updated: 2020/12/11 18:11:43 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_isprint(int c) +{ + if (c > 31 && c < 127) + return (1); + else + return (0); +} diff --git a/libft/ft_itoa.c b/libft/ft_itoa.c new file mode 100644 index 0000000..7de7203 --- /dev/null +++ b/libft/ft_itoa.c @@ -0,0 +1,59 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_itoa.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/08 18:20:19 by apommier #+# #+# */ +/* Updated: 2020/12/20 11:52:40 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static char *fill(long n, int j, int minus) +{ + char *dest; + + j += minus; + dest = (char*)malloc(sizeof(char) * (j + 1)); + if (dest == 0) + return (0); + dest[j] = 0; + if (n == 0) + dest[j - 1] = '0'; + while (n) + { + dest[j - 1] = n % 10 + '0'; + j--; + n /= 10; + } + if (minus) + dest[j - 1] = '-'; + return (dest); +} + +char *ft_itoa(int n) +{ + long i; + long k; + int j; + int minus; + + k = n; + minus = 0; + j = 1; + if (k < 0) + { + minus = 1; + k = k * -1; + } + i = k; + while (k >= 10) + { + k /= 10; + j++; + } + return (fill(i, j, minus)); +} diff --git a/libft/ft_lstadd_back.c b/libft/ft_lstadd_back.c new file mode 100644 index 0000000..87c0a15 --- /dev/null +++ b/libft/ft_lstadd_back.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstadd_back.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/09 19:30:14 by apommier #+# #+# */ +/* Updated: 2020/12/11 15:32:53 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstadd_back(t_list **alst, t_list *new) +{ + if (*alst == 0) + *alst = new; + else + ft_lstlast(*alst)->next = new; +} diff --git a/libft/ft_lstadd_front.c b/libft/ft_lstadd_front.c new file mode 100644 index 0000000..8dfa145 --- /dev/null +++ b/libft/ft_lstadd_front.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstadd_front.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/09 01:31:45 by apommier #+# #+# */ +/* Updated: 2020/12/11 17:34:24 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstadd_front(t_list **alst, t_list *new) +{ + new->next = *alst; + *alst = new; +} diff --git a/libft/ft_lstclear.c b/libft/ft_lstclear.c new file mode 100644 index 0000000..d768b5a --- /dev/null +++ b/libft/ft_lstclear.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstclear.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/09 19:58:04 by apommier #+# #+# */ +/* Updated: 2020/12/12 09:15:23 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstclear(t_list **lst, void (*del)(void*)) +{ + t_list *chr; + + chr = *lst; + while (*lst) + { + chr = (*lst)->next; + del((*lst)->content); + free(*lst); + *lst = chr; + } + lst = 0; +} diff --git a/libft/ft_lstdelone.c b/libft/ft_lstdelone.c new file mode 100644 index 0000000..d932649 --- /dev/null +++ b/libft/ft_lstdelone.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstdelone.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/09 19:54:40 by apommier #+# #+# */ +/* Updated: 2020/12/12 09:10:11 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstdelone(t_list *lst, void (*del)(void*)) +{ + if (!lst) + return ; + del(lst->content); + free(lst); +} diff --git a/libft/ft_lstiter.c b/libft/ft_lstiter.c new file mode 100644 index 0000000..e3ac84f --- /dev/null +++ b/libft/ft_lstiter.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstiter.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/09 20:14:47 by apommier #+# #+# */ +/* Updated: 2020/12/11 17:47:39 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstiter(t_list *lst, void (*f)(void *)) +{ + while (lst) + { + f(lst->content); + lst = lst->next; + } +} diff --git a/libft/ft_lstlast.c b/libft/ft_lstlast.c new file mode 100644 index 0000000..2bf317b --- /dev/null +++ b/libft/ft_lstlast.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstlast.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/09 19:16:55 by apommier #+# #+# */ +/* Updated: 2021/11/26 01:21:39 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +t_list *ft_lstlast(t_list *lst) +{ + if (!lst) + return (0); + while (lst->next) + lst = lst->next; + return (lst); +} diff --git a/libft/ft_lstmap.c b/libft/ft_lstmap.c new file mode 100644 index 0000000..d53c442 --- /dev/null +++ b/libft/ft_lstmap.c @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstmap.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/11 00:10:12 by apommier #+# #+# */ +/* Updated: 2020/12/13 22:37:30 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)) +{ + t_list *new; + t_list *begin; + + begin = 0; + while (lst) + { + new = ft_lstnew(f(lst->content)); + if (!new) + { + ft_lstclear(&begin, *del); + return (0); + } + ft_lstadd_back(&begin, new); + lst = lst->next; + } + return (begin); +} diff --git a/libft/ft_lstnew.c b/libft/ft_lstnew.c new file mode 100644 index 0000000..9a162bd --- /dev/null +++ b/libft/ft_lstnew.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstnew.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/09 01:06:20 by apommier #+# #+# */ +/* Updated: 2020/12/11 17:46:20 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +t_list *ft_lstnew(void *content) +{ + t_list *new; + + new = (t_list*)malloc(sizeof(t_list)); + if (!new) + return (0); + new->content = content; + new->next = 0; + return (new); +} diff --git a/libft/ft_lstsize.c b/libft/ft_lstsize.c new file mode 100644 index 0000000..2f6aebe --- /dev/null +++ b/libft/ft_lstsize.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstsize.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/09 03:24:50 by apommier #+# #+# */ +/* Updated: 2020/12/11 15:33:49 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_lstsize(t_list *lst) +{ + int i; + + i = 0; + while (lst) + { + lst = lst->next; + i++; + } + return (i); +} diff --git a/libft/ft_memccpy.c b/libft/ft_memccpy.c new file mode 100644 index 0000000..c305fc1 --- /dev/null +++ b/libft/ft_memccpy.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memccpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:11:04 by apommier #+# #+# */ +/* Updated: 2020/12/12 14:07:04 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memccpy(void *dest, const void *src, int c, size_t n) +{ + char *p; + const char *p1; + size_t i; + + i = 0; + p = (char*)dest; + p1 = (const char*)src; + while (i < n) + { + p[i] = p1[i]; + if ((unsigned char)p[i] == (unsigned char)c) + return (dest + i + 1); + i++; + } + return (0); +} diff --git a/libft/ft_memchr.c b/libft/ft_memchr.c new file mode 100644 index 0000000..6a0fb37 --- /dev/null +++ b/libft/ft_memchr.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:11:39 by apommier #+# #+# */ +/* Updated: 2020/12/12 13:53:45 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memchr(const void *s, int c, size_t n) +{ + unsigned char *str; + + str = (unsigned char*)s; + while (n) + { + if ((unsigned char)c == *str) + return (str); + n--; + str++; + } + return (0); +} diff --git a/libft/ft_memcmp.c b/libft/ft_memcmp.c new file mode 100644 index 0000000..58a837c --- /dev/null +++ b/libft/ft_memcmp.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memcmp.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:11:51 by apommier #+# #+# */ +/* Updated: 2020/12/12 14:14:51 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_memcmp(const void *s1, const void *s2, size_t n) +{ + int i; + + i = 0; + while (n) + { + if (((unsigned char*)s1)[i] != ((unsigned char*)s2)[i]) + return (((unsigned char*)s1)[i] - ((unsigned char*)s2)[i]); + n--; + i++; + } + return (0); +} diff --git a/libft/ft_memcpy.c b/libft/ft_memcpy.c new file mode 100644 index 0000000..a5abdd8 --- /dev/null +++ b/libft/ft_memcpy.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memcpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:12:03 by apommier #+# #+# */ +/* Updated: 2020/12/16 16:14:24 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memcpy(void *dest, const void *src, size_t n) +{ + size_t i; + char *p; + const char *p1; + + if (!dest && !src) + return (dest); + p = (char*)dest; + p1 = (const char*)src; + i = 0; + while (i < n) + { + p[i] = p1[i]; + i++; + } + return (dest); +} diff --git a/libft/ft_memmove.c b/libft/ft_memmove.c new file mode 100644 index 0000000..829c13f --- /dev/null +++ b/libft/ft_memmove.c @@ -0,0 +1,39 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memmove.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:12:14 by apommier #+# #+# */ +/* Updated: 2020/12/13 21:15:13 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memmove(void *dest, const void *src, size_t n) +{ + size_t i; + + i = 0; + if (!dest && !src) + return (dest); + if (dest > src) + { + while (n) + { + ((unsigned char*)dest)[n - 1] = ((unsigned char*)src)[n - 1]; + n--; + } + } + else + { + while (i < n) + { + ((unsigned char*)dest)[i] = ((unsigned char*)src)[i]; + i++; + } + } + return (dest); +} diff --git a/libft/ft_memset.c b/libft/ft_memset.c new file mode 100644 index 0000000..da16346 --- /dev/null +++ b/libft/ft_memset.c @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memset.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:12:24 by apommier #+# #+# */ +/* Updated: 2020/12/11 15:48:06 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memset(void *s, int c, size_t n) +{ + int i; + unsigned char *p; + + i = 0; + p = (unsigned char*)s; + while (n > 0) + { + p[i] = (unsigned char)c; + i++; + n--; + } + return (s); +} diff --git a/libft/ft_putchar_fd.c b/libft/ft_putchar_fd.c new file mode 100644 index 0000000..96abcb5 --- /dev/null +++ b/libft/ft_putchar_fd.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putchar_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/08 23:11:29 by apommier #+# #+# */ +/* Updated: 2020/12/11 17:02:13 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putchar_fd(char c, int fd) +{ + write(fd, &c, 1); +} diff --git a/libft/ft_putendl_fd.c b/libft/ft_putendl_fd.c new file mode 100644 index 0000000..a663173 --- /dev/null +++ b/libft/ft_putendl_fd.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putendl_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/08 23:22:10 by apommier #+# #+# */ +/* Updated: 2020/12/11 17:14:52 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putendl_fd(char *s, int fd) +{ + if (s == 0) + return ; + write(fd, s, ft_strlen(s)); + ft_putchar_fd('\n', fd); +} diff --git a/libft/ft_putnbr_fd.c b/libft/ft_putnbr_fd.c new file mode 100644 index 0000000..faa08fd --- /dev/null +++ b/libft/ft_putnbr_fd.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putnbr_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/08 23:25:57 by apommier #+# #+# */ +/* Updated: 2020/12/12 09:42:09 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putnbr_fd(int n, int fd) +{ + long nbr; + + nbr = n; + if (nbr < 0) + { + ft_putchar_fd('-', fd); + nbr *= -1; + } + if (nbr >= 10) + ft_putnbr_fd(nbr / 10, fd); + ft_putchar_fd(nbr % 10 + '0', fd); +} diff --git a/libft/ft_putstr_fd.c b/libft/ft_putstr_fd.c new file mode 100644 index 0000000..61fb28a --- /dev/null +++ b/libft/ft_putstr_fd.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putstr_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/08 23:15:25 by apommier #+# #+# */ +/* Updated: 2020/12/11 17:15:10 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putstr_fd(char *s, int fd) +{ + if (s == 0) + return ; + write(fd, s, ft_strlen(s)); +} diff --git a/libft/ft_split.c b/libft/ft_split.c new file mode 100644 index 0000000..3c39bc6 --- /dev/null +++ b/libft/ft_split.c @@ -0,0 +1,79 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_split.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/07 00:54:12 by apommier #+# #+# */ +/* Updated: 2020/12/13 23:07:09 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static int fill_tab(char *s, char c, char **dest, size_t index) +{ + int i; + + i = 0; + while (s[i] != c && s[i]) + i++; + dest[index] = (char*)ft_calloc(i + 1, sizeof(char)); + if (dest[index] == 0) + return (0); + i = 0; + while (s[i] != c && s[i]) + { + dest[index][i] = s[i]; + i++; + } + return (1); +} + +static void call(char *s, char c, char **dest, int j) +{ + int index; + int k; + + k = 0; + index = 0; + while (j > index) + { + while (s[k] == c && s[k]) + k++; + if (!s[k]) + return ; + fill_tab(s + k, c, dest, index); + index++; + while (s[k] != c && s[k]) + k++; + } +} + +char **ft_split(char const *s, char c) +{ + int i; + int j; + char **dest; + + j = 0; + i = 0; + if (!s) + return (0); + while (s[i] == c && s[i]) + i++; + while (s[i]) + { + while (s[i] != c && s[i]) + i++; + j++; + while (s[i] == c && s[i]) + i++; + } + if (!(dest = (char**)malloc(sizeof(char*) * (i + j)))) + return (0); + dest[j] = 0; + call((char*)s, c, dest, j); + return (dest); +} diff --git a/libft/ft_strchr.c b/libft/ft_strchr.c new file mode 100644 index 0000000..a711097 --- /dev/null +++ b/libft/ft_strchr.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/12 13:57:59 by apommier #+# #+# */ +/* Updated: 2020/12/12 13:58:05 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strchr(const char *s, int c) +{ + unsigned char *str; + + str = (unsigned char*)s; + while ((*str != c) && (*str != 0)) + str++; + if (*str == c) + return ((char*)str); + else + return (0); +} diff --git a/libft/ft_strdup.c b/libft/ft_strdup.c new file mode 100644 index 0000000..58ead0f --- /dev/null +++ b/libft/ft_strdup.c @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strdup.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:12:43 by apommier #+# #+# */ +/* Updated: 2020/12/11 18:35:10 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strdup(const char *s) +{ + int i; + char *sdup; + + i = 0; + while (s[i]) + i++; + sdup = malloc(sizeof(char) * (i + 1)); + if (sdup == 0) + return (0); + i = 0; + while (s[i]) + { + sdup[i] = s[i]; + i++; + } + sdup[i] = 0; + return (sdup); +} diff --git a/libft/ft_strjoin.c b/libft/ft_strjoin.c new file mode 100644 index 0000000..250d499 --- /dev/null +++ b/libft/ft_strjoin.c @@ -0,0 +1,42 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strjoin.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/11 15:38:13 by apommier #+# #+# */ +/* Updated: 2020/12/16 17:00:44 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strjoin(char const *s1, char const *s2) +{ + char *dest; + int i; + int j; + + i = 0; + j = 0; + if (!s1 || !s2) + return (0); + if (!(dest = (char*)malloc(ft_strlen(s1) + ft_strlen(s2) + 1))) + return (0); + while (s1[i] && s1) + { + dest[j] = s1[i]; + j++; + i++; + } + i = 0; + while (s2[i] && s2) + { + dest[j] = s2[i]; + j++; + i++; + } + dest[j] = 0; + return (dest); +} diff --git a/libft/ft_strlcat.c b/libft/ft_strlcat.c new file mode 100644 index 0000000..374d9d1 --- /dev/null +++ b/libft/ft_strlcat.c @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlcat.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:12:57 by apommier #+# #+# */ +/* Updated: 2020/12/12 15:40:58 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +size_t ft_strlcat(char *dst, const char *src, size_t size) +{ + size_t i; + size_t k; + + if (!size) + return (ft_strlen(src)); + i = 0; + k = ft_strlen(dst); + if (k >= size) + return (ft_strlen(src) + size); + while (size - k - 1 && src[i]) + { + dst[k + i] = src[i]; + i++; + size--; + } + dst[k + i] = 0; + return (k + ft_strlen(src)); +} diff --git a/libft/ft_strlcpy.c b/libft/ft_strlcpy.c new file mode 100644 index 0000000..8d826c8 --- /dev/null +++ b/libft/ft_strlcpy.c @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlcpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:13:07 by apommier #+# #+# */ +/* Updated: 2020/12/12 16:07:05 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +size_t ft_strlcpy(char *dst, const char *src, size_t size) +{ + int i; + int j; + + j = 0; + i = 0; + if (!src || !dst) + return (0); + while (src[i]) + i++; + if (!size) + return (i); + while (size - 1 && src[j] != 0) + { + dst[j] = src[j]; + j++; + size--; + } + dst[j] = 0; + return (i); +} diff --git a/libft/ft_strlen.c b/libft/ft_strlen.c new file mode 100644 index 0000000..c4bad3d --- /dev/null +++ b/libft/ft_strlen.c @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlen.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:13:19 by apommier #+# #+# */ +/* Updated: 2020/11/29 17:12:23 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +size_t ft_strlen(const char *s) +{ + size_t i; + + i = 0; + while (s[i] != 0) + i++; + return (i); +} diff --git a/libft/ft_strmapi.c b/libft/ft_strmapi.c new file mode 100644 index 0000000..0040b83 --- /dev/null +++ b/libft/ft_strmapi.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strmapi.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/08 19:03:09 by apommier #+# #+# */ +/* Updated: 2020/12/16 16:52:49 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strmapi(char const *s, char (*f)(unsigned int, char)) +{ + char *dest; + int i; + + if (!s) + return (0); + i = 0; + dest = (char*)ft_calloc(ft_strlen(s) + 1, sizeof(char)); + if (!dest) + return (0); + while (s[i]) + { + dest[i] = f(i, s[i]); + i++; + } + return (dest); +} diff --git a/libft/ft_strncmp.c b/libft/ft_strncmp.c new file mode 100644 index 0000000..91f1d0b --- /dev/null +++ b/libft/ft_strncmp.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strncmp.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:13:31 by apommier #+# #+# */ +/* Updated: 2020/12/13 20:44:39 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_strncmp(const char *s1, const char *s2, size_t n) +{ + int i; + + i = 0; + while (n && (s1[i] || s2[i])) + { + if (s1[i] != s2[i]) + return ((unsigned char)s1[i] - (unsigned char)s2[i]); + n--; + i++; + } + return (0); +} diff --git a/libft/ft_strnstr.c b/libft/ft_strnstr.c new file mode 100644 index 0000000..af1e057 --- /dev/null +++ b/libft/ft_strnstr.c @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strnstr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:13:42 by apommier #+# #+# */ +/* Updated: 2020/12/13 22:55:27 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strnstr(const char *big, const char *little, size_t len) +{ + int i; + int j; + + i = 0; + if (!little[i]) + return ((char*)big); + if (!little[i]) + return ((char*)big); + while (big[i] && len - i) + { + j = 0; + if (little[j] != big[i]) + i++; + else + { + while (little[j] == big[i + j] && little[j] && len - i - j) + j++; + if (little[j] == 0) + return ((char*)&big[i]); + else + i++; + } + } + return (0); +} diff --git a/libft/ft_strrchr.c b/libft/ft_strrchr.c new file mode 100644 index 0000000..55751e8 --- /dev/null +++ b/libft/ft_strrchr.c @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strrchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:13:52 by apommier #+# #+# */ +/* Updated: 2020/12/16 16:14:41 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strrchr(const char *s, int c) +{ + char *str; + char *last; + + str = (char*)s; + if (c == 0) + { + while (*str) + str++; + return (str); + } + last = 0; + while (*str) + { + if (*str == c) + last = str; + str++; + } + return (last); +} diff --git a/libft/ft_strtrim.c b/libft/ft_strtrim.c new file mode 100644 index 0000000..a6cda30 --- /dev/null +++ b/libft/ft_strtrim.c @@ -0,0 +1,71 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strtrim.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 23:52:05 by apommier #+# #+# */ +/* Updated: 2020/12/16 18:06:01 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static int is_set(char const *set, char c) +{ + int i; + + i = 0; + while (set[i]) + { + if (set[i] == c) + return (1); + i++; + } + return (0); +} + +static int len_dest(const char *s1, char const *set) +{ + int len; + int j; + int i; + + i = 0; + j = 0; + len = ft_strlen(s1); + while (is_set(set, s1[i])) + i++; + while (is_set(set, s1[len - j - 1])) + j++; + len = len - j - i; + if (len < 0) + len = 0; + return (len); +} + +char *ft_strtrim(char const *s1, char const *set) +{ + int j; + int i; + int len; + char *dest; + + i = 0; + j = 0; + if (!s1) + return (0); + len = len_dest(s1, set); + if (!(dest = ft_calloc(len + 1, 1))) + return (0); + while (is_set(set, s1[i])) + i++; + while (s1[i] && len - j && len > 0) + { + dest[j] = s1[i]; + i++; + j++; + } + return (dest); +} diff --git a/libft/ft_substr.c b/libft/ft_substr.c new file mode 100644 index 0000000..7e4d95b --- /dev/null +++ b/libft/ft_substr.c @@ -0,0 +1,39 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_substr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 22:54:40 by apommier #+# #+# */ +/* Updated: 2020/12/16 16:45:34 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_substr(char const *s, unsigned int start, size_t len) +{ + char *dest; + unsigned int i; + + if (!s) + return (0); + i = 0; + dest = malloc(1 * len + 1); + if (dest == 0) + return (0); + if (start > ft_strlen(s) || len == 0) + { + dest[i] = 0; + return (dest); + } + while (len && s[i + start]) + { + dest[i] = s[i + start]; + len--; + i++; + } + dest[i] = 0; + return (dest); +} diff --git a/libft/ft_tolower.c b/libft/ft_tolower.c new file mode 100644 index 0000000..d375233 --- /dev/null +++ b/libft/ft_tolower.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_tolower.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:14:05 by apommier #+# #+# */ +/* Updated: 2020/11/29 17:20:51 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_tolower(int c) +{ + if (c >= 65 && c <= 90) + c = c + 32; + return (c); +} diff --git a/libft/ft_toupper.c b/libft/ft_toupper.c new file mode 100644 index 0000000..e8c8d89 --- /dev/null +++ b/libft/ft_toupper.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_toupper.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:14:15 by apommier #+# #+# */ +/* Updated: 2020/11/29 17:21:12 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_toupper(int c) +{ + if (c >= 'a' && c <= 'z') + c = c - 32; + return (c); +} diff --git a/libft/libft.h b/libft/libft.h new file mode 100644 index 0000000..53996da --- /dev/null +++ b/libft/libft.h @@ -0,0 +1,72 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* libft.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/11 03:21:27 by apommier #+# #+# */ +/* Updated: 2020/12/11 15:43:19 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef LIBFT_H +# define LIBFT_H + +# include +# include + +typedef struct s_list +{ + void *content; + struct s_list *next; +} t_list; + +void *ft_memset(void *s, int c, size_t n); +void ft_bzero(void *s, size_t n); +void *ft_memcpy(void *dest, const void *src, size_t n); +void *ft_memccpy(void *dest, const void *src, int c, size_t n); +void *ft_memmove(void *dest, const void *src, size_t n); +void *ft_memchr(const void *s, int c, size_t n); +int ft_memcmp(const void *s1, const void *s2, size_t n); +size_t ft_strlen(const char *s); +int ft_isalpha(int c); +int ft_isdigit(int c); +int ft_isalnum(int c); +int ft_isascii(int c); +int ft_isprint(int c); +int ft_toupper(int c); +int ft_tolower(int c); +char *ft_strchr(const char *s, int c); +char *ft_strrchr(const char *s, int c); +int ft_strncmp(const char *s1, const char *s2, size_t n); +size_t ft_strlcpy(char *dst, const char *src, size_t size); +size_t ft_strlcat(char *dst, const char *src, size_t size); +char *ft_strnstr(const char *big, const char *little, size_t len); +int ft_atoi(const char *nptr); +void *ft_calloc(size_t nmenb, size_t size); +char *ft_strdup(const char *s); + +char *ft_substr(char const *s, unsigned int start, size_t len); +char *ft_strjoin(char const *s1, char const *s2); +char *ft_strtrim(char const *s1, char const *set); +char **ft_split(char const *s, char c); +char *ft_itoa(int n); +char *ft_strmapi(char const *s, char (*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 **alst, t_list *new); +int ft_lstsize(t_list *lst); +t_list *ft_lstlast(t_list *lst); +void ft_lstadd_back(t_list **alst, 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 *)); + +#endif diff --git a/main.c b/main.c new file mode 100644 index 0000000..37795a5 --- /dev/null +++ b/main.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/11/25 23:15:43 by apommier #+# #+# */ +/* Updated: 2021/11/25 23:57:06 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +int main(int argc, char *argv[]) +{ + push_swap(argc, argv); + return (1); +} \ No newline at end of file diff --git a/process.c b/process.c new file mode 100644 index 0000000..d89de05 --- /dev/null +++ b/process.c @@ -0,0 +1,46 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* process.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/11/25 23:15:09 by apommier #+# #+# */ +/* Updated: 2021/11/25 23:15:09 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +void ft_sa_sb(t_list **list, t_list **process) +{ + t_list *swap; + + swap = (*list)->next->next; + (*list)->next->next = *list; + *list = (*list)->next; + (*list)->next->next = swap; +} + +void ft_ra_rb(t_list **list, t_list **process) +{ + t_list *swap; + + swap = *list; + (ft_lstlast(*list))->next = *list; + *list = (*list)->next; + swap->next = 0; +} + +void ft_pa(t_list **list_a, t_list **list_b, t_list **process) +{ + ft_lstadd_front(list_a, *list_b); + + +} + +void ft_pb(t_list **list_a, t_list **list_b, t_list **process) +{ + t_list *swap; + +} diff --git a/push_swap.c b/push_swap.c new file mode 100644 index 0000000..b211103 --- /dev/null +++ b/push_swap.c @@ -0,0 +1,74 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* push_swap.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/11/25 23:10:37 by apommier #+# #+# */ +/* Updated: 2021/11/26 00:00:53 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +int is_nbr(int nbrarg, char **list) +{ + int i; + + i = 0; + while (nbrarg) + { + i = 0; + *list++; + while ((*list)[i]) + { + if (((*list)[i] < '0' || (*list)[i] > '9') && (*list)[i] != '-') + return (0); + i++; + } + nbrarg--; + + } + return (1); +} + +int push_swap(int nbrarg, char **list) +{ + t_list *start; + + if (is_nbr(nbrarg++, list) == 0) + { + ft_putstr_fd("Error\n", 2); + return (0); + } + start = set_list(nbrarg++, list++) + return (1); +} + +int set_list(int nbrarg, char **list) +{ + t_list *start; + + start = ft_lstnew(&ft_atoi(*list)) + while (nbrarg) + { + *list++; + ft_lstadd_back(&start, ft_lstnew(&ft_atoi(*list))); + } + return (start); +} + + +int is_sorted(t_list *list) +{ + while (list->next) + { + if (list->content > list->next->content) + return (0); + else + list = list->next; + } + return (1); +} + diff --git a/push_swap.h b/push_swap.h new file mode 100644 index 0000000..3d301f5 --- /dev/null +++ b/push_swap.h @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* push_swap.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/11/25 23:15:17 by apommier #+# #+# */ +/* Updated: 2021/11/25 23:48:20 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FT_PRINTF_H +# define FT_PRINTF_H + +# include +# include +# include "./libft/libft.h" + +int push_swap(int nbrarg, char **list); +int is_nbr(int nbrarg, char **list); + +#endif \ No newline at end of file diff --git a/sort3.c b/sort3.c new file mode 100644 index 0000000..d34268a --- /dev/null +++ b/sort3.c @@ -0,0 +1,12 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* sort3.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/11/25 23:15:22 by apommier #+# #+# */ +/* Updated: 2021/11/25 23:15:22 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + diff --git a/sort5.c b/sort5.c new file mode 100644 index 0000000..5f5380f --- /dev/null +++ b/sort5.c @@ -0,0 +1,12 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* sort5.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/11/25 23:15:27 by apommier #+# #+# */ +/* Updated: 2021/11/25 23:15:27 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ +