This commit is contained in:
kinou-p 2021-11-29 14:41:57 +01:00
parent d572e07e85
commit ce24b2642a
4 changed files with 51 additions and 18 deletions

View File

@ -12,10 +12,10 @@
NAME = push_swap NAME = push_swap
SRCS = push_swap.c \ SRCS = push_swap.c \
utils.c \ process.c\
main.c main.c
OBJS = ${SRCS:.c=.o} OBJS = ${SRCS:.c=.o}
CFLAGS = -Wall -Wextra -Werror CFLAGS = -Wall -Wextra
RM = rm -rf RM = rm -rf
LIBFT = ./libft LIBFT = ./libft

View File

@ -12,7 +12,7 @@
#include "push_swap.h" #include "push_swap.h"
void ft_sa_sb(t_list **list, t_list **process) void ft_sa_sb(t_list **list, t_list **process, char *type)
{ {
t_list *swap; t_list *swap;
@ -22,7 +22,7 @@ void ft_sa_sb(t_list **list, t_list **process)
(*list)->next->next = swap; (*list)->next->next = swap;
} }
void ft_ra_rb(t_list **list, t_list **process) void ft_ra_rb(t_list **list, t_list **process, char *type)
{ {
t_list *swap; t_list *swap;
@ -34,13 +34,18 @@ void ft_ra_rb(t_list **list, t_list **process)
void ft_pa(t_list **list_a, t_list **list_b, t_list **process) void ft_pa(t_list **list_a, t_list **list_b, t_list **process)
{ {
ft_lstadd_front(list_a, *list_b); t_list *swap;
swap = *list_b;
*list_b = (*list_b)->next;
ft_lstadd_front(list_a, swap);
} }
void ft_pb(t_list **list_a, t_list **list_b, t_list **process) void ft_pb(t_list **list_a, t_list **list_b, t_list **process)
{ {
t_list *swap; t_list *swap;
swap = *list_a;
*list_a = (*list_a)->next;
ft_lstadd_front(list_b, swap);
} }

View File

@ -14,21 +14,45 @@
int is_nbr(int nbrarg, char **list) int is_nbr(int nbrarg, char **list)
{ {
int i; int i;
char *save;
save = *list;
i = 0; i = 0;
while (nbrarg) while (nbrarg)
{ {
i = 0; i = 0;
*list++; save++;
while ((*list)[i]) while (save[i])
{ {
if (((*list)[i] < '0' || (*list)[i] > '9') && (*list)[i] != '-') if ((save[i] < '0' || save[i] > '9') && save[i] != '-')
return (0); return (0);
i++; i++;
} }
nbrarg--; nbrarg--;
}
return (1);
}
int is_double(int nbrarg, char **list)
{
int i;
int j;
char *save;
i = 0;
j = 0;
save = *list + 1;
while (save + j + 1)
{
while (j + i + save)
{
i++;
if (ft_strncmp(save + j, save + j + i, ft_strlen(save)) == 0)
return (0);
}
j++;
i = 0;
} }
return (1); return (1);
} }
@ -37,24 +61,26 @@ int push_swap(int nbrarg, char **list)
{ {
t_list *start; t_list *start;
if (is_nbr(nbrarg++, list) == 0) start = 0;
if (!is_nbr(nbrarg++, list) || !is_double(nbrarg++, list))
{ {
ft_putstr_fd("Error\n", 2); ft_putstr_fd("Error\n", 2);
return (0); return (0);
} }
start = set_list(nbrarg++, list++) start = set_list(nbrarg++, list);
return (1); return (1);
} }
int set_list(int nbrarg, char **list) t_list *set_list(int nbrarg, char **list)
{ {
t_list *start; t_list *start;
start = ft_lstnew(&ft_atoi(*list)) (*list)++;
start = ft_lstnew(*list);
while (nbrarg) while (nbrarg)
{ {
*list++; (*list)++;
ft_lstadd_back(&start, ft_lstnew(&ft_atoi(*list))); ft_lstadd_back(&start, ft_lstnew(*list));
} }
return (start); return (start);
} }

View File

@ -19,5 +19,7 @@
int push_swap(int nbrarg, char **list); int push_swap(int nbrarg, char **list);
int is_nbr(int nbrarg, char **list); int is_nbr(int nbrarg, char **list);
t_list *set_list(int nbrarg, char **list);
#endif #endif