-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.c
79 lines (68 loc) · 1.53 KB
/
main.c
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
#include "lem_in.h"
void make_route_pack(t_lemin **lemin)
{
int i;
i = 1;
sort_routes(lemin, i);
(*lemin)->pack_routes = NULL;
init_pack_routes(lemin);
make_pack_routes(lemin);
}
int read_stdin(t_lemin **lemin, char *line, int fd, int *i)
{
int valid;
if (!line)
ft_error (1);
valid = 0;
if (type_num_ants(line))
valid = valid_ants(lemin, ft_atoi(line), line);
else if (type_room(line))
valid = valid_room(lemin, line, ft_strsplit(line, ' '));
else if (type_start_end(line))
valid = valid_start_end(lemin, line, fd, i);
else if (type_connect(line))
valid = valid_connect(lemin, line, ft_strsplit(line, '-'), NULL);
else if (type_comment(line))
valid = 1;
return (valid ? 1 : 0);
}
void read_and_valid(t_lemin **lemin, char ***std_in)
{
int fd;
int i;
i = -1;
fd = open("/nfs/2016/o/orizhiy/ClionProjects/lem_in/!!!", O_RDONLY);
// fd = 0;
// (*std_in)[0] = NULL;
while (get_next_line(fd, &((*std_in)[++i])))
{
if (!(read_stdin(lemin, (*std_in)[i], fd, &i)))
break ;
*std_in = ft_realloc(&(*std_in), two_dem_strlen(*std_in));
}
free((*std_in)[i]);
(*std_in)[i] = NULL;
need_data_check(lemin);
}
t_room *start_room(t_lemin *lemin)
{
t_room *start_room;
start_room = lemin->room;
while (start_room)
{
if (start_room->start)
break ;
start_room = start_room->next;
}
return (start_room);
}
int main(void)
{
t_lemin *lemin;
init_lemin(&lemin, 0, NULL, NULL);
read_and_valid(&lemin, &lemin->std_in);
dfs(&lemin, start_room(lemin));
make_route_pack(&lemin);
make_a_choice(&lemin);
return (0);
}