From 81c8c436a2d756be589ae2e315d2e703484bb8da Mon Sep 17 00:00:00 2001 From: Reiya Asuke <70057885+rask24@users.noreply.github.com> Date: Sat, 20 Apr 2024 16:03:05 +0900 Subject: [PATCH] fix/rename stack operation (#53) * rename repeat_stack_operations * rename repeat_dual_stack_operations * define t_operation * refactor --- Makefile | 4 +- include/stack_operations.h | 12 ++-- src/sort/large_sort/greedy_operation.c | 58 +++++++++---------- ...tions.c => repeat_dual_stack_operations.c} | 10 ++-- ...operations.c => repeat_stack_operations.c} | 9 ++- 5 files changed, 45 insertions(+), 48 deletions(-) rename src/stack_operations/{do_double_n_operations.c => repeat_dual_stack_operations.c} (75%) rename src/stack_operations/{do_single_n_operations.c => repeat_stack_operations.c} (77%) diff --git a/Makefile b/Makefile index b66bbde..7aaf03f 100644 --- a/Makefile +++ b/Makefile @@ -49,8 +49,8 @@ SRC = $(SRC_DIR)/main.c \ $(SRC_DIR)/stack_operations/swap.c \ $(SRC_DIR)/stack_operations/rotate.c \ $(SRC_DIR)/stack_operations/reverse_rotate.c \ - $(SRC_DIR)/stack_operations/do_single_n_operations.c \ - $(SRC_DIR)/stack_operations/do_double_n_operations.c \ + $(SRC_DIR)/stack_operations/repeat_stack_operations.c \ + $(SRC_DIR)/stack_operations/repeat_dual_stack_operations.c \ $(SRC_DIR)/utils/get_first_index.c \ $(SRC_DIR)/utils/get_second_index.c \ $(SRC_DIR)/utils/get_third_index.c \ diff --git a/include/stack_operations.h b/include/stack_operations.h index 8c75758..835868d 100644 --- a/include/stack_operations.h +++ b/include/stack_operations.h @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/02/11 12:41:01 by reasuke #+# #+# */ -/* Updated: 2024/02/20 14:16:47 by reasuke ### ########.fr */ +/* Updated: 2024/04/20 15:40:33 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,15 +15,17 @@ # include "push_swap.h" +typedef void t_operation(t_stack **); +typedef void t_dual_operation(t_stack **, t_stack **); + void push_stack(t_stack **p_s1, t_stack **p_s2); void swap_stack(t_stack **p_stack); void rotate_stack(t_stack **p_stack); void reverse_rotate_stack(t_stack **p_stack); -void do_single_n_operations(t_stack **p_st, int n, - void (*operation)(t_stack **)); -void do_double_n_operations(t_stack **p_a, t_stack **p_b, int n, - void (*operation)(t_stack **, t_stack **)); +void repeat_stack_operations(t_stack **p_st, int n, t_operation *op); +void repeat_dual_stack_operations(t_stack **p_a, t_stack **p_b, int n, + t_dual_operation *op); void operate_sa(t_stack **p_a); void operate_sb(t_stack **p_b); diff --git a/src/sort/large_sort/greedy_operation.c b/src/sort/large_sort/greedy_operation.c index 90a3537..9e76f6b 100644 --- a/src/sort/large_sort/greedy_operation.c +++ b/src/sort/large_sort/greedy_operation.c @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/02/10 10:43:16 by reasuke #+# #+# */ -/* Updated: 2024/02/20 14:17:27 by reasuke ### ########.fr */ +/* Updated: 2024/04/20 16:01:25 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,53 +26,49 @@ static t_stack *_find_opt_st_b(t_stack **p_b) static void _do_alined_operation(t_stack **p_a, t_stack **p_b, t_stack *opt_st_b) { - int sf_abs; - int sr_abs; - int if_abs; - int ir_abs; + int n_a; + int n_b; - sf_abs = ft_abs(get_content(opt_st_b)->rb_cost); - sr_abs = ft_abs(get_content(opt_st_b)->rrb_cost); - if_abs = ft_abs(get_content(opt_st_b)->ra_cost); - ir_abs = ft_abs(get_content(opt_st_b)->rra_cost); if (get_content(opt_st_b)->opt_method == RA_RB) { - do_double_n_operations(p_a, p_b, ft_min(sf_abs, if_abs), operate_rr); - if (sf_abs > if_abs) - do_single_n_operations(p_b, sf_abs - if_abs, operate_rb); - else if (sf_abs < if_abs) - do_single_n_operations(p_a, if_abs - sf_abs, operate_ra); + n_b = ft_abs(get_content(opt_st_b)->rb_cost); + n_a = ft_abs(get_content(opt_st_b)->ra_cost); + repeat_dual_stack_operations(p_a, p_b, ft_min(n_b, n_a), operate_rr); + if (n_b > n_a) + repeat_stack_operations(p_b, n_b - n_a, operate_rb); + else if (n_b < n_a) + repeat_stack_operations(p_a, n_a - n_b, operate_ra); } if (get_content(opt_st_b)->opt_method == RRA_RRB) { - do_double_n_operations(p_a, p_b, ft_min(sr_abs, ir_abs), operate_rrr); - if (sr_abs > ir_abs) - do_single_n_operations(p_b, sr_abs - ir_abs, operate_rrb); - else if (sr_abs < ir_abs) - do_single_n_operations(p_a, ir_abs - sr_abs, operate_rra); + n_b = ft_abs(get_content(opt_st_b)->rrb_cost); + n_a = ft_abs(get_content(opt_st_b)->rra_cost); + repeat_dual_stack_operations(p_a, p_b, ft_min(n_b, n_a), operate_rrr); + if (n_b > n_a) + repeat_stack_operations(p_b, n_b - n_a, operate_rrb); + else if (n_b < n_a) + repeat_stack_operations(p_a, n_a - n_b, operate_rra); } } static void _do_mixed_operation(t_stack **p_a, t_stack **p_b, t_stack *opt_st_b) { - int sf_abs; - int sr_abs; - int if_abs; - int ir_abs; + int n_a; + int n_b; - sf_abs = ft_abs(get_content(opt_st_b)->rb_cost); - sr_abs = ft_abs(get_content(opt_st_b)->rrb_cost); - if_abs = ft_abs(get_content(opt_st_b)->ra_cost); - ir_abs = ft_abs(get_content(opt_st_b)->rra_cost); if (get_content(opt_st_b)->opt_method == RRA_RB) { - do_single_n_operations(p_b, sf_abs, operate_rb); - do_single_n_operations(p_a, ir_abs, operate_rra); + n_a = ft_abs(get_content(opt_st_b)->rra_cost); + n_b = ft_abs(get_content(opt_st_b)->rb_cost); + repeat_stack_operations(p_b, n_b, operate_rb); + repeat_stack_operations(p_a, n_a, operate_rra); } if (get_content(opt_st_b)->opt_method == RA_RRB) { - do_single_n_operations(p_b, sr_abs, operate_rrb); - do_single_n_operations(p_a, if_abs, operate_ra); + n_a = ft_abs(get_content(opt_st_b)->ra_cost); + n_b = ft_abs(get_content(opt_st_b)->rrb_cost); + repeat_stack_operations(p_b, n_b, operate_rrb); + repeat_stack_operations(p_a, n_a, operate_ra); } } diff --git a/src/stack_operations/do_double_n_operations.c b/src/stack_operations/repeat_dual_stack_operations.c similarity index 75% rename from src/stack_operations/do_double_n_operations.c rename to src/stack_operations/repeat_dual_stack_operations.c index 2956ba0..3d959bf 100644 --- a/src/stack_operations/do_double_n_operations.c +++ b/src/stack_operations/repeat_dual_stack_operations.c @@ -1,20 +1,20 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* do_double_n_operations.c :+: :+: :+: */ +/* repeat_dual_stack_operations.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/02/10 19:22:50 by reasuke #+# #+# */ -/* Updated: 2024/02/20 14:15:32 by reasuke ### ########.fr */ +/* Updated: 2024/04/20 15:40:46 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ #include "stack_operations.h" -void do_double_n_operations(t_stack **p_a, t_stack **p_b, int n, - void (*operation)(t_stack **, t_stack **)) +void repeat_dual_stack_operations(t_stack **p_a, t_stack **p_b, int n, + t_dual_operation *op) { while (n--) - operation(p_a, p_b); + op(p_a, p_b); } diff --git a/src/stack_operations/do_single_n_operations.c b/src/stack_operations/repeat_stack_operations.c similarity index 77% rename from src/stack_operations/do_single_n_operations.c rename to src/stack_operations/repeat_stack_operations.c index 009266a..ec782f7 100644 --- a/src/stack_operations/do_single_n_operations.c +++ b/src/stack_operations/repeat_stack_operations.c @@ -1,20 +1,19 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* do_single_n_operations.c :+: :+: :+: */ +/* repeat_stack_operations.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/02/10 19:22:26 by reasuke #+# #+# */ -/* Updated: 2024/02/20 14:15:35 by reasuke ### ########.fr */ +/* Updated: 2024/04/20 15:39:53 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ #include "stack_operations.h" -void do_single_n_operations(t_stack **p_st, int n, - void (*operation)(t_stack **)) +void repeat_stack_operations(t_stack **p_st, int n, t_operation *op) { while (n--) - operation(p_st); + op(p_st); }