66/* By: abarriel <marvin@42.fr> +#+ +:+ +#+ */
77/* +#+#+#+#+#+ +#+ */
88/* Created: 2017/03/07 03:03:25 by abarriel #+# #+# */
9- /* Updated: 2017/03/07 03:03:27 by abarriel ### ########.fr */
9+ /* Updated: 2017/03/08 11:28:02 by abarriel ### ########.fr */
1010/* */
1111/* ************************************************************************** */
1212
1313#include "lemin.h"
1414
15- void one_path (t_path * p , t_ant * a )
15+ void reverse_list (t_path * * list , t_ant * a )
1616{
17- int i ;
18- int ants ;
17+ t_path * p ;
18+ t_path * q ;
19+ t_path * r ;
1920
20- ants = 1 ;
21- i = 0 ;
22- if (p -> start == 1 )
23- p = p -> next ;
24- while (p )
25- {
26- ft_printf ("L%d-%s " ,a -> ant ,p -> name );
27- ants = p -> ants ;
21+ p = * list ;
22+ p -> ants = a -> ant ;
23+ q = NULL ;
24+ while (p )
25+ {
26+ r = q ;
27+ q = p ;
2828 p = p -> next ;
29- if (p )
30- p -> ants += ants ;
29+ q -> next = r ;
3130 }
32- ft_printf ("\n" );
31+ q -> start = 2 ;
32+ * list = q ;
3333}
34+ ft_putstr_fd (RED , fd );
35+ if (color_nfun == 2 )
36+ ft_putstr_fd (GREEN , fd );
37+ if (color_nfun == 3 )
38+ ft_putstr_fd (BLUE , fd );
39+ if (color_nfun == 4 )
40+ ft_putstr_fd (PURPLE , fd );
41+ if (color_nfun == 5 )
42+ ft_putstr_fd (YELLOW , fd );
3443void handles_path (t_path * * p , t_ant * a , int max_path )
3544{
3645 int i ;
3746 int ants ;
47+ int end ;
48+ int start ;
3849
39- ants = 1 ;
50+ t_path * * tmp ;
51+ end = 0 ;
52+ tmp = NULL ;
53+ ants = 0 ;
4054 i = 0 ;
41- ft_printf ("Nb ants = %d\nNb max_chemin = %d\n\n\n" ,a -> ant , max_path );
42- if (max_path == 1 )
43- one_path (* p ,a );
44- }
55+ start = a -> ant ;
56+ tmp = (t_path * * )malloc (sizeof (t_path ) * max_path );
57+ while (i < max_path )
58+ {
59+ reverse_list (& p [i ],a );
60+ tmp [i ] = p [i ];
61+ i ++ ;
62+ }
63+ i = 0 ;
64+ while (end <= a -> ant )
65+ {
66+ ft_printf ("{GRE}%d\n" ,p [i ]-> ants );
67+ while (i < max_path )
68+ {
69+ while (p [i ])
70+ {
71+ if (p [i ]-> start == 2 && p [i ]-> next -> ants > 0 )
72+ {
73+ end ++ ;
74+ p [i ]-> ants = end ;
75+ ft_putstr ("0;[" )
76+ ft_printf ("L%d-%s " ,p [i ]-> ants ,p [i ]-> name );
77+ if (end == a -> ant )
78+ return ;
79+ // if(p[i]->ants == a->ant)
80+ // return;
81+ }
82+ else if (p [i ]-> next && p [i ]-> next -> start == 1 && start > 0 )
83+ {
84+ p [i ]-> next -> ants -- ;
85+ start -- ;
86+ ants ++ ;
87+ p [i ]-> ants = ants ;
88+ ft_printf ("L%d-%s " ,p [i ]-> ants ,p [i ]-> name );
89+ }
90+ else if (p [i ]-> next && p [i ]-> next -> ants > 0 && p [i ]-> next -> start != 1 )
91+ {
92+ p [i ]-> ants = p [i ]-> next -> ants ;
93+ p [i ]-> next -> ants = 0 ;
94+ ft_printf ("L%d-%s " ,p [i ]-> ants ,p [i ]-> name );
95+ }
96+ p [i ] = p [i ]-> next ;
97+ }
98+ p [i ] = tmp [i ];
99+ i ++ ;
100+ }
101+
102+ i = 0 ;
103+ ft_printf ("\n" );
104+ p [i ] = tmp [i ];
105+ // i++;
106+ }
107+ }
0 commit comments