/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/04/13 15:04:19 by dkaiser #+# #+# */
-/* Updated: 2024/04/17 12:20:26 by dkaiser ### ########.fr */
+/* Updated: 2024/04/17 14:17:55 by dkaiser ### ########.fr */
/* */
/* ************************************************************************** */
max = data->a->stack[0];
while (size--)
{
- if (data->a->stack[0] < max)
+ if (data->a->stack[0] > max)
{
run_command(data, PB);
- if (data->b->stack[0] > pivot)
+ if (data->b->stack[0] < pivot)
run_command(data, RB);
}
else
else
moves_to_top = data->b->size - pos;
i = 0;
- while (i < data->a->size && data->a->stack[i] < data->b->stack[pos])
+ 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;
{
if (idx < (data->b->size + 1) / 2)
{
- while (idx--)
+ while (--idx > 0)
run_command(data, RB);
}
else
}
}
-static void move_to_spot(t_psdata *data)
+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])
+ while (pos < data->a->size && data->b->stack[0] > data->a->stack[pos])
pos++;
- if (pos < (data->a->size + 1) / 2)
+ 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--)
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--)
min_score = i;
i++;
}
- move_to_top(data, min_score);
- move_to_spot(data);
+ move_to_spot(data, min_score);
free(scores);
if (data->b->size > 0)