/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* push_swap.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/11/25 23:10:37 by apommier #+# #+# */ /* Updated: 2022/01/15 23:28:47 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ #include "push_swap.h" void printf_list(t_list *start) { int i = 0; printf("----printf_list----\n"); while(start) { i++; printf("lst%d --- nbr: %d index: %d\n", i,*(int*)start->nbr, start->index); start = start->next; } printf("----end_print----\n"); return; } int is_nbr(int nbrarg, char **list) { int i; int j; i = 0; j = 0; while (--nbrarg) { j++; i = 0; while (list[j][i]) { while (list[j][i] == ' ') i++; if (list[j][i] == '-' || (list[j][i] == '+')) i++; if (list[j][i] && (list[j][i] < '0' || list[j][i] > '9')) return (0); while (list[j][i] && list[j][i] >= '0' && list[j][i] <= '9') i++; if (list[j][i] && list[j][i] != ' ') return (0); } } return (1); } int is_double(int nbrarg, char **list) { int i; int j; int len; i = 1; j = 1; nbrarg--; while (nbrarg - j) { i = 1; while(list[j + i]) { if (ft_strlen(list[j]) > ft_strlen(list[j + i])) len = ft_strlen(list[j]); else len = ft_strlen(list[j + i]); if (ft_strncmp(list[j], list[j + i], len) == 0) return (0); i++; } j++; } return (1); } int push_swap(int nbrarg, char **list) { t_list *start; start = 0; if (!is_nbr(nbrarg, list) || !is_double(nbrarg, list)) { ft_putstr_fd("Error\n", 2); return (0); } start = set_list(--nbrarg, list); if (ft_lstsize(start) == 1) return(1); lst_indexing(start); find_loop_index(start); ft_lstclear(&start, &free); return (1); } /*t_list *set_list(int nbrarg, char **srcs) { int *tmp; t_list *start; t_list *swap; start = 0; swap = 0; *(srcs)++; tmp = ft_calloc(sizeof(int), 1); *tmp = ft_atoi*(srcs); start = ft_lstnew(tmp); swap = start; while (--nbrarg) { *(srcs)++; tmp = ft_calloc(sizeof(int), 1); *tmp = ft_atoi*(srcs); swap->next = ft_lstnew(tmp); swap = swap->next; } return (start); }*/ t_list *set_list(int nbrarg, char **srcs) { int *tmp; int i; int j; t_list *swap; j = 1; tmp = 0; i = 0; swap = 0; while (nbrarg--) { i = 0; while (srcs[j][i]) { tmp = ft_calloc(sizeof(int), 1); *tmp = ft_atoi(&srcs[j][i]); ft_lstadd_back(&swap, ft_lstnew(tmp)); while (srcs[j][i] == ' ') i++; while (srcs[j][i] && srcs[j][i] != ' ') i++; } j++; } return (swap); }