-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdo_ops.c
More file actions
110 lines (103 loc) · 2.78 KB
/
do_ops.c
File metadata and controls
110 lines (103 loc) · 2.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/* ************************************************************************** */
/* */
/* :::::::: */
/* do_ops.c :+: :+: */
/* +:+ */
/* By: rcorke <rcorke@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2019/08/12 12:38:29 by rcorke #+# #+# */
/* Updated: 2019/08/22 16:56:11 by rcorke ######## odam.nl */
/* */
/* ************************************************************************** */
#include "push_swap.h"
void print_arrays(t_ps *ps)
{
int x;
x = 0;
ft_printf("\n\033[1;34mSTACK A[%d]:\t", ps->len_a);
while (x < ps->len_a)
{
ft_printf(" \033[0m\033[1;34m%d\033[0m\t", ps->a[x]);
x++;
}
x = 0;
ft_printf("\n\n\033[01;33mSTACK B[%d]:\t", ps->len_b);
while (x < ps->len_b)
{
ft_printf(" \033[01;33m%d\033[0m\t", ps->b[x]);
x++;
}
x = 0;
ft_printf("\033[0m\n");
ft_printf("A_VALUE: %d (DONE %d)\n", ps->a_value, ps->a_done);
}
int rotate_both(t_ps *ps)
{
if (ps->len_a > 1 && ps->len_b > 1)
{
ps->temp = ps->a[0];
ft_rev_int_mem_move(&ps->a[0], &ps->a[1], ps->len_a, \
ps->temp);
ps->temp = ps->b[0];
ft_rev_int_mem_move(&ps->b[0], &ps->b[1], ps->len_b, \
ps->temp);
ps->ret++;
if (ps->check == 0)
add_to_command_list(ps, "rr");
if (ps->print_stacks == 1)
print_arrays(ps);
}
return (1);
}
int reverse_a(t_ps *ps)
{
if (ps->len_a > 1)
{
ps->temp = ps->a[ps->len_a - 1];
ft_rev_int_mem_move(&ps->a[1], &ps->a[0], ps->len_a, \
ps->temp);
ps->a[0] = ps->temp;
ps->ret++;
if (ps->check == 0)
add_to_command_list(ps, "rra");
if (ps->print_stacks == 1)
print_arrays(ps);
}
return (1);
}
int reverse_b(t_ps *ps)
{
if (ps->len_b > 1)
{
ps->temp = ps->b[ps->len_b - 1];
ft_rev_int_mem_move(&ps->b[1], &ps->b[0], ps->len_b, \
ps->temp);
ps->b[0] = ps->temp;
ps->ret++;
if (ps->check == 0)
add_to_command_list(ps, "rrb");
if (ps->print_stacks == 1)
print_arrays(ps);
}
return (1);
}
int reverse_both(t_ps *ps)
{
if (ps->len_a > 1 && ps->len_b > 1)
{
ps->temp = ps->a[ps->len_a - 1];
ft_rev_int_mem_move(&ps->a[1], &ps->a[0], ps->len_a, \
ps->temp);
ps->a[0] = ps->temp;
ps->temp = ps->b[ps->len_b - 1];
ft_rev_int_mem_move(&ps->b[1], &ps->b[0], ps->len_b, \
ps->temp);
ps->b[0] = ps->temp;
ps->ret++;
if (ps->check == 0)
add_to_command_list(ps, "rrr");
if (ps->print_stacks == 1)
print_arrays(ps);
}
return (1);
}