ready to refactor

This commit is contained in:
whaffman 2024-11-19 14:43:14 +01:00
parent 32979952b9
commit fe48b78005
4 changed files with 20 additions and 13 deletions

View File

@ -24,6 +24,7 @@ typedef struct s_state
int merge_to_a(t_state *state);
void sortmore(t_state *state);
void common_rotations(int *shortest_a, int *shortest_b, t_state *state);
void push_all_but_3_b(t_state *state);
int ft_abs(int a);
int ft_max(int a, int b);

View File

@ -15,10 +15,10 @@
// abc
// acb rra sa
// bca rra
// bca (rra)
// bac sa
// cab ra
// cba sa rra
// cab (ra)
// cba sa (rra)
int sort3(t_state *state)
{

View File

@ -19,6 +19,7 @@ int rotate_a_to_top(t_state *state)
return (1);
}
//sort5
int merge_to_a(t_state *state)
{
const int b = *(int *) state->b->content;

View File

@ -58,15 +58,23 @@ void b_merge_a(int idx_b, t_state *state)
shortest_a = shortest_rotate(idx_a, ft_lstsize(state->a));
shortest_b = shortest_rotate(idx_b, ft_lstsize(state->b));
if (shortest_a * shortest_b > 0)
common_rotations(&shortest_a, &shortest_b, state);
rotate_a(shortest_a, state);
rotate_b(shortest_b, state);
pa(state);
}
void common_rotations(int *shortest_a, int *shortest_b, t_state *state)
{
if (shortest_a > 0)
if (*shortest_a * *shortest_b > 0)
{
while (shortest_a > 0 && shortest_b > 0)
if (*shortest_a > 0)
{
while (*shortest_a > 0 && *shortest_b > 0)
{
rr(state);
shortest_a--;
shortest_b--;
(*shortest_a)--;
(*shortest_b)--;
}
}
else
@ -74,14 +82,11 @@ void b_merge_a(int idx_b, t_state *state)
while (shortest_a < 0 && shortest_b < 0)
{
rrr(state);
shortest_a++;
shortest_b++;
(*shortest_a)++;
(*shortest_b)++;
}
}
}
rotate_a(shortest_a, state);
rotate_b(shortest_b, state);
pa(state);
}
void sortmore(t_state *state)