/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* calc_cheap_utils.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: lfirmin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/11/02 01:37:25 by lfirmin #+# #+# */ /* Updated: 2024/11/03 18:07:37 by lfirmin ### ########.fr */ /* */ /* ************************************************************************** */ #include "../include/pushswap.h" int calc_index_min(t_stack *stack_a) { t_node *curr; int min; curr = stack_a->top; min = curr->value; curr = curr->next; while (curr) { if (curr->value < min) min = curr->value; curr = curr->next; } return (min); } int calc_index_max(t_stack *stack_a) { t_node *curr; int max; curr = stack_a->top; max = curr->value; curr = curr->next; while (curr) { if (curr->value > max) max = curr->value; curr = curr->next; } return (max); } int return_index(t_stack *stack, int value) { t_node *curr; int i; i = 1; curr = stack->top; while (curr) { if (curr->value == value) return (i); i++; curr = curr->next; } return (0); } int calc_index_a(t_stack *stack_a, int value) { t_node *curr; int i; i = 2; curr = stack_a->top; if (value > calc_index_max(stack_a) || value < calc_index_min(stack_a)) return (return_index(stack_a, calc_index_min(stack_a))); while (curr && curr->next) { if (curr->value < value && curr->next->value > value) return (i); i++; curr = curr->next; } if (curr->value < value && stack_a->top->value > value) return (1); return (0); } int return_value(t_stack *stack, int index) { t_node *curr; if (!stack || !stack->top || index <= 0) return (0); if (index > stack->size) return (0); curr = stack->top; while (index > 1 && curr) { if (!curr->next) return (0); curr = curr->next; index--; } return (curr->value); }