├── Makefile ├── libft ├── ft_memdel.c ├── ft_putchar_fd.c ├── ft_tolower.c ├── ft_toupper.c ├── ft_isascii.c ├── ft_isdigit.c ├── ft_isprint.c ├── ft_putstr_fd.c ├── ft_bzero.c ├── ft_isalpha.c ├── ft_lstdelone.c ├── ft_lstlast.c ├── ft_strlen.c ├── ft_isalnum.c ├── ft_lstadd_front.c ├── ft_lstsize.c ├── ft_lstiter.c ├── ft_putendl_fd.c ├── ft_lstadd_back.c ├── ft_lstnew.c ├── ft_strchr.c ├── ft_calloc.c ├── ft_memset.c ├── ft_memcpy.c ├── ft_strrchr.c ├── ft_memchr.c ├── ft_memcmp.c ├── ft_strncmp.c ├── ft_lstclear.c ├── Makefile ├── ft_memccpy.c ├── ft_putnbr_fd.c ├── ft_strdup.c ├── ft_memmove.c ├── ft_lstmap.c ├── ft_strlcpy.c ├── ft_strmapi.c ├── ft_atoi.c ├── ft_strjoin.c ├── ft_strnstr.c ├── ft_substr.c ├── ft_itoa.c ├── ft_strlcat.c ├── ft_split.c ├── ft_strtrim.c ├── get_next_line.c └── libft.h ├── README.md ├── includes └── xp_calc.h └── srcs └── xp_calc.c /Makefile: -------------------------------------------------------------------------------- 1 | CC = clang 2 | CFLAGS = -Wall -Wextra -Werror -I $(LIBFT_DIR) -I ./includes 3 | LDFLAGS = -L$(LIBFT_DIR) -lft -lm 4 | 5 | LIBFT_DIR = ./libft/ 6 | 7 | LIBFT = ${LIBFT_DIR}libft.a 8 | 9 | HEADER_FILE = ./headers/xp_calc.h 10 | 11 | SRCS_M = srcs/xp_calc.c 12 | 13 | 14 | M_OBJS = $(SRCS_M:.c=.o) 15 | 16 | OBJS = $(M_OBJS) 17 | HEADER =$(HEADER_FILE) 18 | 19 | NAME = xp_calculator 20 | 21 | all: $(NAME) 22 | 23 | ${LIBFT}: 24 | @${MAKE} -C libft 25 | 26 | $(NAME): $(OBJS) $(MLX) $(LIBFT) 27 | @$(CC) -o $@ ${OBJS} ${CFLAGS} $(LDFLAGS) 28 | 29 | %.o: %.c $(HEADER_FILE) 30 | $(CC) -o $@ -c $< $(CFLAGS) 31 | 32 | clean: 33 | ${MAKE} -C libft clean 34 | rm -f $(M_OBJS) 35 | 36 | fclean: clean 37 | rm -f $(NAME) ${LIBFT} 38 | 39 | re: fclean all 40 | 41 | .PHONY: clean fclean all re 42 | -------------------------------------------------------------------------------- /libft/ft_memdel.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_memdel.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2020/01/11 00:51:51 by cldidier #+# #+# */ 9 | /* Updated: 2020/01/11 00:52:00 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "libft.h" 14 | 15 | void ft_memdel(void **ptr) 16 | { 17 | free(*ptr); 18 | *ptr = NULL; 19 | } 20 | -------------------------------------------------------------------------------- /libft/ft_putchar_fd.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_putchar_fd.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2020/01/11 00:51:34 by cldidier #+# #+# */ 9 | /* Updated: 2020/01/11 00:51:36 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include 14 | 15 | void ft_putchar_fd(char c, int fd) 16 | { 17 | write(fd, &c, 1); 18 | } 19 | -------------------------------------------------------------------------------- /libft/ft_tolower.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* tolower.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/05 07:32:15 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/06 02:31:18 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | int ft_tolower(int c) 14 | { 15 | if (c <= 'Z' && c >= 'A') 16 | return (c + 32); 17 | return (c); 18 | } 19 | -------------------------------------------------------------------------------- /libft/ft_toupper.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* toupper.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/05 07:24:59 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/07 15:45:32 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | int ft_toupper(int c) 14 | { 15 | if (c <= 'z' && c >= 'a') 16 | return (c - 32); 17 | return (c); 18 | } 19 | -------------------------------------------------------------------------------- /libft/ft_isascii.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_isalnum.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/05 06:59:31 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/07 15:45:10 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | int ft_isascii(int c) 14 | { 15 | if (c >= 0 && c <= 127) 16 | return (1); 17 | else 18 | return (0); 19 | } 20 | -------------------------------------------------------------------------------- /libft/ft_isdigit.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_isdigit.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/05 05:38:06 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/07 16:28:23 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | int ft_isdigit(int c) 14 | { 15 | if (c <= '9' && c >= '0') 16 | return (1); 17 | else 18 | return (0); 19 | } 20 | -------------------------------------------------------------------------------- /libft/ft_isprint.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_isprint.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/05 07:11:28 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/09 02:52:52 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | int ft_isprint(int c) 14 | { 15 | if (c >= 32 && c <= 126) 16 | return (1); 17 | else 18 | return (0); 19 | } 20 | -------------------------------------------------------------------------------- /libft/ft_putstr_fd.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_putstr_fd.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2020/01/11 00:47:23 by cldidier #+# #+# */ 9 | /* Updated: 2020/01/11 00:47:42 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "libft.h" 14 | 15 | void ft_putstr_fd(char *s, int fd) 16 | { 17 | write(fd, s, ft_strlen(s)); 18 | return ; 19 | } 20 | -------------------------------------------------------------------------------- /libft/ft_bzero.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_bzero.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/06 03:11:15 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/15 02:05:38 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "libft.h" 14 | 15 | void ft_bzero(void *s, size_t n) 16 | { 17 | if (!s || !n) 18 | return ; 19 | ft_memset(s, 0, n); 20 | } 21 | -------------------------------------------------------------------------------- /libft/ft_isalpha.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_isalpha.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/05 05:38:06 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/07 15:44:53 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | int ft_isalpha(int c) 14 | { 15 | if ((c <= 'Z' && c >= 'A') || (c <= 'z' && c >= 'a')) 16 | return (1); 17 | else 18 | return (0); 19 | } 20 | -------------------------------------------------------------------------------- /libft/ft_lstdelone.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_lstdelone.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2020/01/11 00:35:23 by cldidier #+# #+# */ 9 | /* Updated: 2020/01/11 00:35:29 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "libft.h" 14 | 15 | void ft_lstdelone(t_list *lst, void (*del)(void*)) 16 | { 17 | del(lst->content); 18 | free(lst); 19 | lst = NULL; 20 | } 21 | -------------------------------------------------------------------------------- /libft/ft_lstlast.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_lstlast.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2020/01/11 00:56:43 by cldidier #+# #+# */ 9 | /* Updated: 2020/06/11 14:46:43 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "libft.h" 14 | 15 | t_list *ft_lstlast(t_list *lst) 16 | { 17 | while (lst->next) 18 | { 19 | lst = lst->next; 20 | } 21 | return (lst); 22 | } 23 | -------------------------------------------------------------------------------- /libft/ft_strlen.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_strlen.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/05 05:27:31 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/15 04:13:12 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "libft.h" 14 | 15 | size_t ft_strlen(const char *str) 16 | { 17 | int i; 18 | 19 | i = 0; 20 | while (str[i]) 21 | i++; 22 | return (i); 23 | } 24 | -------------------------------------------------------------------------------- /libft/ft_isalnum.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_isalnum.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/05 06:59:31 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/07 15:28:58 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | int ft_isalnum(int c) 14 | { 15 | if ((c <= 'Z' && c >= 'A') || (c <= 'z' && c >= 'a') 16 | || (c <= '9' && c >= '0')) 17 | return (1); 18 | else 19 | return (0); 20 | } 21 | -------------------------------------------------------------------------------- /libft/ft_lstadd_front.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_lstadd_front.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2020/01/11 00:34:44 by cldidier #+# #+# */ 9 | /* Updated: 2020/01/11 00:34:49 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "libft.h" 14 | 15 | void ft_lstadd_front(t_list **alst, t_list *new) 16 | { 17 | if (!new || !alst) 18 | return ; 19 | new->next = *alst; 20 | *alst = new; 21 | } 22 | -------------------------------------------------------------------------------- /libft/ft_lstsize.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_lstsize.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2020/01/11 00:55:03 by cldidier #+# #+# */ 9 | /* Updated: 2020/01/11 00:56:11 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "libft.h" 14 | 15 | int ft_lstsize(t_list *lst) 16 | { 17 | int i; 18 | 19 | i = 0; 20 | while (lst) 21 | { 22 | i++; 23 | lst = lst->next; 24 | } 25 | return (i); 26 | } 27 | -------------------------------------------------------------------------------- /libft/ft_lstiter.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_lstiter.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2020/01/11 00:58:09 by cldidier #+# #+# */ 9 | /* Updated: 2020/01/11 00:58:22 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "libft.h" 14 | 15 | void ft_lstiter(t_list *lst, void (*f)(void *)) 16 | { 17 | if (!lst) 18 | return ; 19 | while (lst) 20 | { 21 | f(lst->content); 22 | lst = lst->next; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /libft/ft_putendl_fd.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_putendl_fd.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2020/01/11 00:50:11 by cldidier #+# #+# */ 9 | /* Updated: 2020/01/11 00:51:14 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "libft.h" 14 | 15 | void ft_putendl_fd(char *s, int fd) 16 | { 17 | char endl; 18 | 19 | endl = '\n'; 20 | if (!s) 21 | return ; 22 | ft_putstr_fd(s, fd); 23 | write(fd, &endl, 1); 24 | return ; 25 | } 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 42_xp_calculator 2 | simple xp calculator that gives you your xp and calc your next project bh gain 3 | 4 | How to use: 5 | make && ./xp_calculator 6 | 7 | follow the instructions, 8 | first give the grade that you actualy have on a project 9 | then give the grade that you should get after pushing, 10 | if you don't intent to repush, just press enter until you can put the grade on the right project 11 | if you intend to repush, enter the difference bettween your actual grade and the one you should get 12 | 13 | enjoy 14 | 15 | if the result differ from your real gain, please let me know on slack (cldidier) 16 | 17 | FR 18 | comment utiliser: 19 | make && ./xp_calculator 20 | 21 | Suivez les instruciton( en anglais) 22 | Premierement mettez les notes que vous avez sur vos projets. 23 | Ensuite, mettez les notes que vous contez avoir apres votre push 24 | si vous ne souhaitez pas repush, juste appuyez sur entrer jusqu'a pouvoir renseigner le bon projet 25 | si vous souhaiter repush, entrez la difference entre la note de votre ancien push et votre nouveau 26 | 27 | Si le resultat est different apres votre push, faites le moi savoir sur slack en mp (cldidier) 28 | -------------------------------------------------------------------------------- /libft/ft_lstadd_back.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_lstadd_back.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2020/01/11 00:33:11 by cldidier #+# #+# */ 9 | /* Updated: 2020/01/11 03:37:55 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "libft.h" 14 | 15 | void ft_lstadd_back(t_list **alst, t_list *new) 16 | { 17 | if (!new) 18 | return ; 19 | while ((*alst)) 20 | alst = &(*alst)->next; 21 | (*alst) = new; 22 | (*alst)->next = NULL; 23 | } 24 | -------------------------------------------------------------------------------- /libft/ft_lstnew.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_lstnew.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2020/01/11 00:52:09 by cldidier #+# #+# */ 9 | /* Updated: 2020/01/11 03:37:57 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "libft.h" 14 | 15 | t_list *ft_lstnew(void *content) 16 | { 17 | t_list *new; 18 | 19 | if (!(new = (t_list*)malloc(sizeof(*new)))) 20 | return (NULL); 21 | new->content = content; 22 | new->next = NULL; 23 | return (new); 24 | } 25 | -------------------------------------------------------------------------------- /libft/ft_strchr.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_strchr.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/05 07:34:46 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/07 15:43:46 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include 14 | 15 | char *ft_strchr(const char *str, int c) 16 | { 17 | while (*str) 18 | { 19 | if (*str == (char)c) 20 | return ((char*)str); 21 | str++; 22 | } 23 | if (c == '\0') 24 | return ((char*)str); 25 | return (NULL); 26 | } 27 | -------------------------------------------------------------------------------- /libft/ft_calloc.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_calloc.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/13 08:51:02 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/15 03:37:16 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include 14 | 15 | void *ft_calloc(size_t nmemb, size_t size) 16 | { 17 | unsigned char *t; 18 | long long nb; 19 | 20 | nb = nmemb * size; 21 | if (!(t = malloc(size * nmemb))) 22 | return (NULL); 23 | while (nb--) 24 | t[nb] = 0; 25 | return (t); 26 | } 27 | -------------------------------------------------------------------------------- /libft/ft_memset.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_memset.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/06 02:34:24 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/07 15:43:12 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "libft.h" 14 | 15 | void *ft_memset(void *s, int c, size_t n) 16 | { 17 | unsigned char *a; 18 | 19 | a = (unsigned char*)s; 20 | if (!s) 21 | return (NULL); 22 | if (!n) 23 | return (s); 24 | while (n) 25 | a[--n] = (unsigned char)c; 26 | return (s); 27 | } 28 | -------------------------------------------------------------------------------- /libft/ft_memcpy.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_memcpy.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/06 02:40:47 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/15 03:44:00 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include 14 | 15 | void *ft_memcpy(void *dest, const void *src, size_t n) 16 | { 17 | char *d; 18 | const char *s; 19 | 20 | d = dest; 21 | s = src; 22 | if (d == NULL && s == NULL) 23 | return (NULL); 24 | while (n--) 25 | *d++ = *s++; 26 | return (dest); 27 | } 28 | -------------------------------------------------------------------------------- /libft/ft_strrchr.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_strrchr.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/05 07:56:53 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/06 05:44:08 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include 14 | 15 | char *ft_strrchr(const char *str, int c) 16 | { 17 | int i; 18 | 19 | i = 0; 20 | while (str[i]) 21 | i++; 22 | while (i >= 0) 23 | { 24 | if (str[i] == (char)c) 25 | return ((char*)(str + i)); 26 | i--; 27 | } 28 | return ((void*)0); 29 | } 30 | -------------------------------------------------------------------------------- /libft/ft_memchr.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_memchr.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/06 03:16:35 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/09 02:43:15 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "libft.h" 14 | 15 | void *ft_memchr(const void *s, int c, size_t n) 16 | { 17 | unsigned char *a; 18 | 19 | a = (unsigned char *)s; 20 | if (!s || !n) 21 | return (NULL); 22 | while (n--) 23 | { 24 | if (*a == (unsigned char)c) 25 | return (a); 26 | a++; 27 | } 28 | return (NULL); 29 | } 30 | -------------------------------------------------------------------------------- /libft/ft_memcmp.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_memcmp.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/05 04:50:13 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/14 09:38:18 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include 14 | 15 | int ft_memcmp(const void *ptr1, const void *ptr2, size_t size) 16 | { 17 | if (size == 0) 18 | return (0); 19 | while (size-- > 1 && *((unsigned char*)ptr1) == *((unsigned char*)ptr2)) 20 | { 21 | ptr1++; 22 | ptr2++; 23 | } 24 | return (*((unsigned char*)ptr1) - *((unsigned char*)ptr2)); 25 | } 26 | -------------------------------------------------------------------------------- /libft/ft_strncmp.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_strncmp.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/06 04:57:20 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/15 07:33:19 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include 14 | 15 | int ft_strncmp(const char *first, const char *second, size_t length) 16 | { 17 | size_t i; 18 | 19 | if (length == 0) 20 | return (0); 21 | i = 0; 22 | while (first[i] && second[i] && first[i] == second[i] && i < length - 1) 23 | i++; 24 | return ((unsigned char)first[i] - (unsigned char)second[i]); 25 | } 26 | -------------------------------------------------------------------------------- /libft/ft_lstclear.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_lstclear.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2020/01/11 00:36:02 by cldidier #+# #+# */ 9 | /* Updated: 2020/01/11 00:36:19 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "libft.h" 14 | 15 | void ft_lstclear(t_list **lst, void (*del)(void*)) 16 | { 17 | t_list *tmp; 18 | t_list *element; 19 | 20 | if (!lst || !*lst) 21 | return ; 22 | element = *lst; 23 | while (element) 24 | { 25 | tmp = element; 26 | element = element->next; 27 | (*del)(tmp->content); 28 | free(tmp); 29 | } 30 | *lst = NULL; 31 | } 32 | -------------------------------------------------------------------------------- /libft/Makefile: -------------------------------------------------------------------------------- 1 | SRC = ft_memset.c \ 2 | ft_bzero.c \ 3 | ft_memcpy.c \ 4 | ft_memccpy.c \ 5 | ft_memmove.c \ 6 | ft_memchr.c \ 7 | ft_memcmp.c \ 8 | ft_strlen.c \ 9 | ft_isalpha.c \ 10 | ft_isdigit.c \ 11 | ft_isalnum.c \ 12 | ft_isascii.c \ 13 | ft_isprint.c \ 14 | ft_toupper.c \ 15 | ft_tolower.c \ 16 | ft_strchr.c \ 17 | ft_strrchr.c \ 18 | ft_strncmp.c \ 19 | ft_strlcpy.c \ 20 | ft_strlcat.c\ 21 | ft_strnstr.c\ 22 | ft_atoi.c\ 23 | ft_calloc.c\ 24 | ft_strdup.c\ 25 | ft_substr.c\ 26 | ft_strjoin.c\ 27 | ft_strtrim.c\ 28 | ft_split.c\ 29 | ft_itoa.c\ 30 | ft_strmapi.c\ 31 | ft_putnbr_fd.c\ 32 | ft_putchar_fd.c\ 33 | ft_putstr_fd.c\ 34 | ft_putendl_fd.c\ 35 | ft_lstnew.c\ 36 | ft_lstadd_front.c\ 37 | ft_lstsize.c\ 38 | ft_lstlast.c\ 39 | ft_lstadd_back.c\ 40 | ft_lstdelone.c\ 41 | ft_lstclear.c\ 42 | ft_lstiter.c\ 43 | ft_lstmap.c\ 44 | ft_memdel.c\ 45 | get_next_line.c 46 | 47 | OBJS = ${SRC:.c=.o} 48 | 49 | 50 | FLAGS = -Wall -Wextra -Werror 51 | 52 | CC = clang 53 | 54 | NAME = libft.a 55 | 56 | all: $(NAME) 57 | 58 | $(NAME): ${OBJS} 59 | ar rc $@ $^ 60 | ranlib $@ 61 | 62 | %.o: %.c 63 | ${CC} -o $@ -c $< ${FLAGS} 64 | 65 | clean: 66 | rm -rf $(OBJS) 67 | 68 | fclean: clean 69 | rm -f $(NAME) 70 | 71 | re: fclean all 72 | 73 | .PHONY: bonus all clean fclean re 74 | -------------------------------------------------------------------------------- /libft/ft_memccpy.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_memccpy.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/06 02:31:46 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/15 04:18:25 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include 14 | 15 | void *ft_memccpy(void *dest, const void *src, int c, size_t n) 16 | { 17 | int i; 18 | 19 | i = 0; 20 | while (n-- && (i == 0 || ((unsigned char*)src)[i - 1] != (unsigned char)c)) 21 | { 22 | ((unsigned char*)dest)[i] = ((unsigned char*)src)[i]; 23 | i++; 24 | } 25 | if (((unsigned char*)dest)[i - 1] == (unsigned char)c && i > 0) 26 | return (dest + i); 27 | return (NULL); 28 | } 29 | -------------------------------------------------------------------------------- /libft/ft_putnbr_fd.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_putnbr_fd.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2020/01/11 00:47:58 by cldidier #+# #+# */ 9 | /* Updated: 2020/01/11 00:48:00 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "libft.h" 14 | 15 | void ft_putnbr_fd(int n, int fd) 16 | { 17 | if (n == -2147483648) 18 | ft_putstr_fd("-2147483648", fd); 19 | else if (n < 0) 20 | { 21 | ft_putchar_fd('-', fd); 22 | n *= (-1); 23 | ft_putnbr_fd(n, fd); 24 | } 25 | else if (n > 9) 26 | { 27 | ft_putnbr_fd((n / 10), fd); 28 | ft_putchar_fd((n % 10) + '0', fd); 29 | } 30 | else 31 | ft_putchar_fd(n + '0', fd); 32 | return ; 33 | } 34 | -------------------------------------------------------------------------------- /libft/ft_strdup.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_strdup.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/13 09:23:20 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/15 07:38:21 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include 14 | 15 | static size_t ft_strlen(char *s) 16 | { 17 | size_t i; 18 | 19 | i = 0; 20 | while (s[i]) 21 | i++; 22 | return (i); 23 | } 24 | 25 | char *ft_strdup(const char *s) 26 | { 27 | char *t; 28 | size_t i; 29 | 30 | i = 0; 31 | if (!(t = malloc((ft_strlen((char*)s) + 1)))) 32 | return (NULL); 33 | while (i < ft_strlen((char*)s)) 34 | { 35 | t[i] = s[i]; 36 | i++; 37 | } 38 | t[i] = '\0'; 39 | return (t); 40 | } 41 | -------------------------------------------------------------------------------- /libft/ft_memmove.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_memmove.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/06 02:48:17 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/15 04:20:18 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "libft.h" 14 | 15 | void *ft_memmove(void *dest, const void *src, size_t n) 16 | { 17 | int i; 18 | 19 | if (dest < src) 20 | { 21 | i = 0; 22 | while (n--) 23 | { 24 | ((unsigned char*)dest)[i] = ((unsigned char*)src)[i]; 25 | i++; 26 | } 27 | } 28 | if (src < dest) 29 | { 30 | i = (n - 1); 31 | while (n--) 32 | { 33 | ((unsigned char*)dest)[i] = ((unsigned char*)src)[i]; 34 | i--; 35 | } 36 | } 37 | return (dest); 38 | } 39 | -------------------------------------------------------------------------------- /libft/ft_lstmap.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_lstmap.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2020/01/11 00:53:19 by cldidier #+# #+# */ 9 | /* Updated: 2020/01/11 03:40:10 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "libft.h" 14 | 15 | t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)) 16 | { 17 | t_list *lstmap; 18 | t_list *element; 19 | 20 | if (!lst) 21 | return (NULL); 22 | element = NULL; 23 | lstmap = element; 24 | while (lst) 25 | { 26 | if (!(element = ft_lstnew((*f)(lst->content)))) 27 | { 28 | ft_lstclear(&lstmap, del); 29 | return (NULL); 30 | } 31 | ft_lstadd_back(&lstmap, element); 32 | lst = lst->next; 33 | } 34 | return (lstmap); 35 | } 36 | -------------------------------------------------------------------------------- /libft/ft_strlcpy.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_strlcpy.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/06 05:01:15 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/15 07:52:14 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include 14 | 15 | static size_t ft_strlen(char *str) 16 | { 17 | size_t i; 18 | 19 | i = 0; 20 | while (str[i]) 21 | i++; 22 | return (i); 23 | } 24 | 25 | size_t ft_strlcpy(char *dst, const char *src, size_t size) 26 | { 27 | size_t i; 28 | 29 | i = 0; 30 | if (!dst || !src) 31 | return (0); 32 | if (size == 0) 33 | return (ft_strlen((char*)src)); 34 | while (src[i] && size-- > 1) 35 | { 36 | dst[i] = src[i]; 37 | i++; 38 | } 39 | dst[i] = '\0'; 40 | return (ft_strlen((char*)src)); 41 | } 42 | -------------------------------------------------------------------------------- /libft/ft_strmapi.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_strmapi.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/15 03:16:09 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/15 06:26:37 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include 14 | 15 | static size_t ft_strlen(const char *str) 16 | { 17 | size_t i; 18 | 19 | i = 0; 20 | while (str[i]) 21 | i++; 22 | return (i); 23 | } 24 | 25 | char *ft_strmapi(const char *s, char (*f)(unsigned int, char)) 26 | { 27 | char *mapi; 28 | unsigned int i; 29 | 30 | if (!s) 31 | return (NULL); 32 | if (!(mapi = (char*)malloc(ft_strlen(s) + 1))) 33 | return (NULL); 34 | i = 0; 35 | while (s[i]) 36 | { 37 | mapi[i] = f(i, s[i]); 38 | i++; 39 | } 40 | mapi[i] = '\0'; 41 | return (mapi); 42 | } 43 | -------------------------------------------------------------------------------- /libft/ft_atoi.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_atoi.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/07 16:40:05 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/15 06:55:16 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include 14 | 15 | int ft_atoi(const char *str) 16 | { 17 | size_t i; 18 | int j; 19 | int signe; 20 | 21 | signe = 1; 22 | i = 0; 23 | j = 0; 24 | while (str[i] && (str[i] == '\n' 25 | || str[i] == '\t' || str[i] == '\r' || str[i] == '\v' 26 | || str[i] == '\f' || str[i] == ' ')) 27 | i++; 28 | if (str[i] == '-' || str[i] == '+') 29 | { 30 | if (str[i] == '-') 31 | signe = -1; 32 | i++; 33 | } 34 | while (str[i] && str[i] >= '0' && str[i] <= '9') 35 | { 36 | j = j * 10 + (str[i] - 48); 37 | i++; 38 | } 39 | return (j * signe); 40 | } 41 | -------------------------------------------------------------------------------- /libft/ft_strjoin.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_strjoin.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/14 01:35:56 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/15 07:59:37 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include 14 | 15 | static size_t ft_strlen(const char *s) 16 | { 17 | size_t i; 18 | 19 | i = 0; 20 | while (s[i]) 21 | i++; 22 | return (i); 23 | } 24 | 25 | char *ft_strjoin(char const *s1, char const *s2) 26 | { 27 | char *cat; 28 | size_t j; 29 | size_t k; 30 | 31 | k = 0; 32 | j = 0; 33 | if (!(cat = malloc((sizeof(char) * ((ft_strlen(s1) + ft_strlen(s2)) + 1))))) 34 | return (NULL); 35 | while (s1[j]) 36 | { 37 | cat[j] = s1[j]; 38 | j++; 39 | } 40 | while (s2[k]) 41 | { 42 | cat[k + j] = s2[k]; 43 | k++; 44 | } 45 | cat[k + j] = '\0'; 46 | return (cat); 47 | } 48 | -------------------------------------------------------------------------------- /libft/ft_strnstr.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_strnstr.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/06 06:45:16 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/15 07:57:49 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include 14 | 15 | static size_t ft_strlen(char *s) 16 | { 17 | size_t i; 18 | 19 | i = 0; 20 | while (s[i]) 21 | i++; 22 | return (i); 23 | } 24 | 25 | char *ft_strnstr(const char *hays, const char *needle, size_t len) 26 | { 27 | size_t i; 28 | size_t j; 29 | 30 | i = 0; 31 | j = 0; 32 | if (*needle == '\0') 33 | return ((char*)hays); 34 | while (hays[i] && len-- >= ft_strlen((char*)needle)) 35 | { 36 | j = 0; 37 | while (hays[i + j] == needle[j] && needle[j]) 38 | { 39 | j++; 40 | if (needle[j] == '\0') 41 | return ((char*)hays + i); 42 | } 43 | i++; 44 | } 45 | return (NULL); 46 | } 47 | -------------------------------------------------------------------------------- /includes/xp_calc.h: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* xp_calc.h :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2020/06/28 02:01:15 by cldidier #+# #+# */ 9 | /* Updated: 2020/06/28 05:37:49 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #ifndef XP_CALC_H 14 | # define XP_CALC_H 15 | 16 | # include 17 | # include "libft.h" 18 | # include 19 | 20 | typedef struct s_xp_struct 21 | { 22 | char *project_name; 23 | int xp; 24 | } t_xp_struct; 25 | 26 | const t_xp_struct g_xp_tab[] = 27 | { 28 | {"libft", 462}, 29 | {"netwhat", 462}, 30 | {"get_next_line", 882}, 31 | {"ft_printf", 882}, 32 | {"ft_server", 1722}, 33 | {"cub3D/miniRT", 4620}, 34 | {"minishell", 2814}, 35 | {"libasm", 966}, 36 | {"ft_services", 1008}, 37 | {"philosopher", 3360}, 38 | {"CPP", 9660}, 39 | {"ft_containers", 5796}, 40 | {"ft_irc/webserv", 17304}, 41 | {"ft_transcendence", 24360}, 42 | {NULL, 0} 43 | }; 44 | #endif 45 | -------------------------------------------------------------------------------- /libft/ft_substr.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_substr.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/07 16:38:57 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/15 08:37:31 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include 14 | 15 | static size_t ft_strlen(const char *s) 16 | { 17 | size_t i; 18 | 19 | i = 0; 20 | while (s[i]) 21 | i++; 22 | return (i); 23 | } 24 | 25 | char *ft_substr(const char *s, unsigned int start, size_t len) 26 | { 27 | unsigned int i; 28 | size_t size; 29 | char *new; 30 | 31 | if (!s) 32 | return (0); 33 | if (ft_strlen(s) < start) 34 | size = 0; 35 | else if (ft_strlen(s) - start < len) 36 | size = ft_strlen(s) - start; 37 | else 38 | size = len; 39 | i = 0; 40 | if (!(new = malloc(sizeof(char) * (size + 1)))) 41 | return (NULL); 42 | while (size--) 43 | { 44 | new[i] = s[start + i]; 45 | i++; 46 | } 47 | new[i] = '\0'; 48 | return (new); 49 | } 50 | -------------------------------------------------------------------------------- /libft/ft_itoa.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_itoa.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/15 01:39:03 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/15 06:27:57 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "libft.h" 14 | 15 | static int ft_subten(int i) 16 | { 17 | int j; 18 | 19 | j = 1; 20 | if (i < 0) 21 | { 22 | j++; 23 | i *= -1; 24 | } 25 | while (i > 9) 26 | { 27 | i /= 10; 28 | j++; 29 | } 30 | return (j); 31 | } 32 | 33 | char *ft_itoa(int n) 34 | { 35 | char *nb; 36 | int i; 37 | int sub; 38 | 39 | sub = ft_subten(n); 40 | i = 0; 41 | if (n == -2147483648 || n == 0) 42 | return (ft_strdup(n == 0 ? "0" : "-2147483648")); 43 | if (!(nb = malloc(sizeof(char) * (sub + 1)))) 44 | return (NULL); 45 | if (n < 0) 46 | { 47 | nb[i] = '-'; 48 | n *= -1; 49 | } 50 | nb[sub] = '\0'; 51 | while (n > 0) 52 | { 53 | nb[sub - i - 1] = (n % 10) + 48; 54 | i++; 55 | n /= 10; 56 | } 57 | return (nb); 58 | } 59 | -------------------------------------------------------------------------------- /libft/ft_strlcat.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_strlcat.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/06 05:12:59 by cldidier #+# #+# */ 9 | /* Updated: 2019/11/15 06:36:31 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include 14 | 15 | static size_t ft_strlen(char *s) 16 | { 17 | size_t i; 18 | 19 | i = 0; 20 | while (s[i]) 21 | i++; 22 | return (i); 23 | } 24 | 25 | static size_t ft_strnlen(char *s, size_t i) 26 | { 27 | size_t j; 28 | 29 | j = 0; 30 | while (s[j] && j < i) 31 | j++; 32 | return (j); 33 | } 34 | 35 | size_t ft_strlcat(char *dst, const char *src, size_t size) 36 | { 37 | size_t k; 38 | size_t i; 39 | size_t j; 40 | 41 | k = ft_strnlen(dst, size) + ft_strlen((char*)src); 42 | i = 0; 43 | j = ft_strnlen(dst, size); 44 | if (!dst) 45 | return (0); 46 | while ((j + 1) < size && src[i]) 47 | { 48 | dst[j] = src[i]; 49 | i++; 50 | j++; 51 | } 52 | if (j < size) 53 | dst[j] = '\0'; 54 | return (k); 55 | } 56 | -------------------------------------------------------------------------------- /libft/ft_split.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_split.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/14 02:42:34 by cldidier #+# #+# */ 9 | /* Updated: 2020/01/11 00:49:38 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "libft.h" 14 | 15 | static size_t ft_wc(const char *s, char c) 16 | { 17 | size_t i; 18 | size_t j; 19 | 20 | j = 0; 21 | i = 0; 22 | while (s[i]) 23 | { 24 | if ((i == 0 || (s[i - 1] == c)) && (s[i] != c)) 25 | j++; 26 | i++; 27 | } 28 | return (j); 29 | } 30 | 31 | static size_t ft_wl(char const *s, char c) 32 | { 33 | size_t i; 34 | 35 | i = 0; 36 | while (s[i] && s[i] != c) 37 | i++; 38 | return (i); 39 | } 40 | 41 | static void *ft_freem(int i, char **t) 42 | { 43 | while (i > 0) 44 | free(t[--i]); 45 | free(t); 46 | return (NULL); 47 | } 48 | 49 | char **ft_split(char const *s, char c) 50 | { 51 | char **str; 52 | size_t j; 53 | size_t i; 54 | size_t k; 55 | 56 | k = 0; 57 | i = 0; 58 | if (!s || !(str = (char**)malloc(sizeof(char*) * (ft_wc(s, c) + 1)))) 59 | return (NULL); 60 | while (i < ft_wc(s, c)) 61 | { 62 | if (((j = 0) == 0) && (k == 0 || (s[k - 1] == c)) && (s[k] != c)) 63 | { 64 | j = 0; 65 | if (!(str[i] = (char*)malloc((ft_wl((s + k), c) + 1)))) 66 | return (ft_freem(i, str)); 67 | while (ft_wl((s + k), c) && s[k]) 68 | str[i][j++] = s[k++]; 69 | str[i][j] = '\0'; 70 | i++; 71 | } 72 | k++; 73 | } 74 | str[i] = NULL; 75 | return (str); 76 | } 77 | -------------------------------------------------------------------------------- /libft/ft_strtrim.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* ft_strtrim.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/14 01:33:34 by cldidier #+# #+# */ 9 | /* Updated: 2020/01/11 01:00:16 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include 14 | 15 | static size_t ft_strlen(char const *s) 16 | { 17 | size_t i; 18 | 19 | i = 0; 20 | while (s[i]) 21 | i++; 22 | return (i); 23 | } 24 | 25 | static size_t ft_isinther(char c, const char *s) 26 | { 27 | size_t i; 28 | 29 | i = 0; 30 | while (s[i]) 31 | { 32 | if (s[i] == c) 33 | return (1); 34 | i++; 35 | } 36 | return (0); 37 | } 38 | 39 | static size_t getsize(char const *s, const char *set) 40 | { 41 | size_t i; 42 | size_t j; 43 | 44 | j = 0; 45 | i = 0; 46 | while (s[i] && ft_isinther(s[i], set)) 47 | { 48 | j++; 49 | i++; 50 | } 51 | if (s[i]) 52 | { 53 | i = ft_strlen(s) - 1; 54 | while (i > 0 && ft_isinther(s[i], set)) 55 | { 56 | i--; 57 | j++; 58 | } 59 | } 60 | return (ft_strlen(s) - j); 61 | } 62 | 63 | char *ft_strtrim(char const *s, char const *set) 64 | { 65 | char *trimmed; 66 | size_t i; 67 | size_t j; 68 | size_t k; 69 | 70 | i = 0; 71 | j = 0; 72 | k = getsize(s, set); 73 | if (!s || !set || (!(trimmed = malloc(sizeof(char) * (k + 1))))) 74 | return (NULL); 75 | while (s[i] && ft_isinther(s[i], set)) 76 | i++; 77 | while (j < k) 78 | { 79 | trimmed[j] = s[i]; 80 | j++; 81 | i++; 82 | } 83 | trimmed[j] = '\0'; 84 | return (trimmed); 85 | } 86 | -------------------------------------------------------------------------------- /libft/get_next_line.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* get_next_line.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2020/03/03 14:27:26 by cldidier #+# #+# */ 9 | /* Updated: 2020/06/11 15:28:05 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "libft.h" 14 | 15 | char *ft_join(char *s1, char *s2) 16 | { 17 | size_t i; 18 | size_t j; 19 | char *join; 20 | 21 | if (!s1) 22 | return (ft_strdup(s2)); 23 | if (!s2) 24 | return (NULL); 25 | j = ft_strlen(s1); 26 | i = ft_strlen(s2); 27 | if (!(join = (char*)malloc(sizeof(char) * (i + j + 1)))) 28 | { 29 | free(s1); 30 | return (NULL); 31 | } 32 | i = -1; 33 | while (s1[++i]) 34 | join[i] = s1[i]; 35 | i = -1; 36 | while (s2[++i]) 37 | join[j + i] = s2[i]; 38 | join[j + i] = '\0'; 39 | free(s1); 40 | s1 = NULL; 41 | return (join); 42 | } 43 | 44 | int get_index(char *str, char c) 45 | { 46 | int i; 47 | 48 | i = 0; 49 | while (str[i] && str[i] != c) 50 | i++; 51 | if (str[i] == c) 52 | return (i); 53 | return (-1); 54 | } 55 | 56 | bool put_line(char **line, char *str, size_t i) 57 | { 58 | int len; 59 | 60 | *line = ft_substr(str, 0, i); 61 | i++; 62 | len = ft_strlen(str + i) + 1; 63 | ft_memmove(str, str + i, len); 64 | return (true); 65 | } 66 | 67 | int get_next_line(int fd, char **line) 68 | { 69 | static char *str; 70 | char buffer[(BUFFER_SIZE + 1)]; 71 | int ret; 72 | int i; 73 | 74 | if (!line || fd < 0 || read(fd, buffer, 0) < 0 || BUFFER_SIZE < 1) 75 | return (-1); 76 | if (str && ((i = get_index(str, '\n')) != -1)) 77 | return (put_line(line, str, i)); 78 | while ((ret = read(fd, buffer, BUFFER_SIZE)) > 0) 79 | { 80 | buffer[ret] = '\0'; 81 | str = ft_join(str, buffer); 82 | if ((i = get_index(str, '\n')) != -1) 83 | return (put_line(line, str, i)); 84 | } 85 | if (str) 86 | { 87 | *line = ft_strdup(str); 88 | free(str); 89 | str = NULL; 90 | return ((bool)ret); 91 | } 92 | *line = ft_strdup(""); 93 | return (ret); 94 | } 95 | -------------------------------------------------------------------------------- /srcs/xp_calc.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* xp_calc.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2020/06/28 01:53:19 by cldidier #+# #+# */ 9 | /* Updated: 2020/06/28 05:38:17 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "xp_calc.h" 14 | 15 | double get_blackhole_days(int xp) 16 | { 17 | int nb_xp_to_reach; 18 | int total_nb_days; 19 | int starting_days; 20 | double p; 21 | 22 | total_nb_days = 560; 23 | starting_days = 77; 24 | p = 0.45; 25 | nb_xp_to_reach = 49980; 26 | return (pow((double)xp / nb_xp_to_reach, p) * 27 | (total_nb_days - starting_days) + starting_days); 28 | } 29 | 30 | int get_current_xp(void) 31 | { 32 | int xp; 33 | int i; 34 | char *buffer; 35 | 36 | xp = 0; 37 | printf("we're going to calculate your total xp:\n"); 38 | i = 0; 39 | printf("please, enter your final grade of %s\n", g_xp_tab[i].project_name); 40 | while (0 < get_next_line(0, &buffer) && g_xp_tab[i + 1].xp) 41 | { 42 | xp = xp + ((ft_atoi(buffer) * g_xp_tab[i].xp) / 100); 43 | printf("your current xp is %d \n", xp); 44 | i++; 45 | printf("please, enter your grade of %s\n", g_xp_tab[i].project_name); 46 | } 47 | xp = xp + ((ft_atoi(buffer) * g_xp_tab[i].xp) / 100); 48 | printf("your final xp is %d \n", xp); 49 | return (xp); 50 | } 51 | 52 | int get_next_xp(void) 53 | { 54 | int xp_next; 55 | int i; 56 | char *buffer; 57 | 58 | printf("Lets see how much BH your're gonna get for your next project\n"); 59 | i = 0; 60 | xp_next = 0; 61 | printf("if you've already validate a project,\n"); 62 | printf("add the diff between your next grade and your current\n"); 63 | printf("please, enter the grade you're willing to add for %s\n", 64 | g_xp_tab[i].project_name); 65 | while (0 < get_next_line(0, &buffer) && g_xp_tab[i + 1].xp) 66 | { 67 | xp_next = xp_next + ((ft_atoi(buffer) * g_xp_tab[i].xp) / 100); 68 | printf("you'll add %d xp \n", xp_next); 69 | i++; 70 | printf("please, enter the grade you're willing to add for %s\n", 71 | g_xp_tab[i].project_name); 72 | } 73 | printf("you'll add %d xp \n", xp_next); 74 | return (xp_next); 75 | } 76 | 77 | int main(void) 78 | { 79 | int xp; 80 | int xp_next; 81 | double bh_days; 82 | 83 | xp = get_current_xp(); 84 | xp_next = get_next_xp(); 85 | bh_days = get_blackhole_days(xp); 86 | bh_days = get_blackhole_days(xp + xp_next) - bh_days; 87 | printf("this should give you %lf days\n", bh_days); 88 | return (0); 89 | } 90 | -------------------------------------------------------------------------------- /libft/libft.h: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* libft.h :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: cldidier +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2019/11/14 09:32:04 by cldidier #+# #+# */ 9 | /* Updated: 2020/06/11 15:28:48 by cldidier ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #ifndef LIBFT_H 14 | # define LIBFT_H 15 | # include 16 | # include 17 | # include 18 | # include 19 | # define BUFFER_SIZE 32 20 | 21 | typedef struct s_list 22 | { 23 | void *content; 24 | struct s_list *next; 25 | } t_list; 26 | 27 | void *ft_memset(void *s, int c, size_t n); 28 | void ft_bzero(void *s, size_t n); 29 | void *ft_memcpy(void *dest, const void *src, size_t n); 30 | void *ft_memccpy(void *dest, const void *src, int c, 31 | size_t n); 32 | void *ft_memmove(void *dest, const void *src, size_t n); 33 | void *ft_memchr(const void *s, int c, size_t n); 34 | int ft_memcmp(const void *ptr1, const void *ptr2, 35 | size_t size); 36 | size_t ft_strlen(const char *str); 37 | char *ft_strdup(const char *s); 38 | size_t ft_strlcat(char *dst, const char *src, size_t size); 39 | char *ft_strchr(const char *str, int c); 40 | char *ft_strrchr(const char *str, int c); 41 | char *ft_strnstr(const char *haystack, const char *needle, 42 | size_t len); 43 | int ft_strncmp(const char *first, const char *second, 44 | size_t length); 45 | int ft_atoi(const char *str); 46 | int ft_isalpha(int c); 47 | int ft_isalnum(int c); 48 | int ft_isdigit(int c); 49 | int ft_isascii(int c); 50 | int ft_isprint(int c); 51 | int ft_toupper(int c); 52 | int ft_tolower(int c); 53 | void *ft_calloc(size_t nmemb, size_t size); 54 | size_t ft_strlcpy(char *dst, const char *src, size_t size); 55 | char *ft_strjoin(char const *s1, char const *s2); 56 | char *ft_substr(const char *s, unsigned int start, 57 | size_t len); 58 | char **ft_split(char const *s, char c); 59 | char *ft_strtrim(char const *s, char const *set); 60 | char *ft_strmapi(const char *s, 61 | char (*f)(unsigned int, char)); 62 | char *ft_itoa(int n); 63 | void ft_putchar_fd(char c, int fd); 64 | void ft_putnbr_fd(int n, int fd); 65 | void ft_putstr_fd(char *s, int fd); 66 | void ft_putendl_fd(char *s, int fd); 67 | t_list *ft_lstnew(void *content); 68 | void ft_lstadd_front(t_list **alst, t_list *new); 69 | void ft_lstclear(t_list **lst, void (*del)(void*)); 70 | void ft_lstdelone(t_list *lst, void (*del)(void*)); 71 | void ft_lstiter(t_list *lst, void (*f)(void *)); 72 | t_list *ft_lstlast(t_list *lst); 73 | t_list *ft_lstmap(t_list *lst, void *(*f)(void *), 74 | void (*del)(void *)); 75 | void ft_lstadd_back(t_list **alst, t_list *new); 76 | int ft_lstsize(t_list *lst); 77 | void ft_memdel(void **ptr); 78 | int get_next_line(int fd, char **line); 79 | #endif 80 | --------------------------------------------------------------------------------