diff options
| author | Dominik Kaiser | 2024-04-24 14:59:53 +0200 |
|---|---|---|
| committer | Dominik Kaiser | 2024-04-24 14:59:53 +0200 |
| commit | 173279d8e83e81fd1d451adb2153103dc0506ad8 (patch) | |
| tree | bb5a92b58d909cd4b36daffad292e62e1d51926f /sorting.c | |
| parent | a931d6df9fd873607442a70351fbb7e0f32590d0 (diff) | |
| download | push_swap-173279d8e83e81fd1d451adb2153103dc0506ad8.tar.gz push_swap-173279d8e83e81fd1d451adb2153103dc0506ad8.zip | |
Make norminette happy and some more error handling
Diffstat (limited to 'sorting.c')
| -rw-r--r-- | sorting.c | 78 |
1 files changed, 3 insertions, 75 deletions
@@ -6,7 +6,7 @@ /* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/04/13 15:04:19 by dkaiser #+# #+# */ -/* Updated: 2024/04/24 10:58:02 by dkaiser ### ########.fr */ +/* Updated: 2024/04/24 13:48:31 by dkaiser ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,79 +38,6 @@ static void presort(t_psdata *data) } } -static int calculate_score(t_psdata *data, int pos) -{ - int moves_to_top; - int moves_to_spot; - int i; - - if (pos < (data->b->size + 1) / 2) - moves_to_top = pos; - else - moves_to_top = data->b->size - pos; - i = 0; - while (i < data->a->size && data->a->stack[i] > data->b->stack[pos]) - i++; - if (i < (data->a->size + 1) / 2) - moves_to_spot = 2 * i + 1; - else - moves_to_spot = 2 * ((data->a->size - i) + 1); - return (moves_to_top + moves_to_spot); -} - -static void move_to_top(t_psdata *data, int idx) -{ - if (idx < (data->b->size + 1) / 2) - { - while (--idx > 0) - run_command(data, RB); - } - else - { - idx = data->b->size - idx; - while (idx--) - run_command(data, RRB); - } -} - -static void move_to_spot(t_psdata *data, int idx) -{ - int pos; - int i; - - pos = 0; - while (pos < data->a->size && data->b->stack[0] > data->a->stack[pos]) - pos++; - if (pos >= data->a->size) - { - move_to_top(data, idx); - run_command(data, PA); - run_command(data, RA); - } - else if (pos < (data->a->size + 1) / 2) - { - i = pos; - while (i--) - run_command(data, RA); - move_to_top(data, idx); - run_command(data, PA); - i = pos; - while (i--) - run_command(data, RRA); - } - else - { - i = data->a->size - pos; - while (i--) - run_command(data, RRA); - move_to_top(data, idx); - run_command(data, PA); - i = data->a->size - pos; - while (i--) - run_command(data, RA); - } -} - static void scoresort(t_psdata *data) { int *scores; @@ -118,7 +45,8 @@ static void scoresort(t_psdata *data) int min_score; scores = malloc(sizeof(int) * data->b->size); - // Error if allocation fails + if (!scores) + return ; i = 0; while (i < data->b->size) { |
