added finished algorithm

merged algorithm from other personnal repo
This commit is contained in:
Tanguy MAZE
2019-04-22 10:13:09 +02:00
parent c6339a00e9
commit a8b2e31701
128 changed files with 5020 additions and 86 deletions

View File

@@ -6,7 +6,7 @@
/* By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/04/06 11:37:56 by tmaze #+# #+# */
/* Updated: 2019/04/12 12:06:51 by tmaze ### ########.fr */
/* Updated: 2019/04/21 16:14:45 by tmaze ### ########.fr */
/* */
/* ************************************************************************** */
@@ -37,8 +37,7 @@ static void clean_ants(t_ants **ants)
}
}
static void print_ants(t_lmdata *data, t_ants **ants, char *has_start
, t_ind **paths)
static void print_ants(t_lmdata *data, t_ants **ants, t_ind **paths)
{
t_ants *it;
@@ -56,43 +55,36 @@ static void print_ants(t_lmdata *data, t_ants **ants, char *has_start
ft_putchar(' ');
else
ft_putchar('\n');
has_start[it->nb_path] = 0;
it = it->next;
}
clean_ants(ants);
}
static void init_ants(t_ants **ants, int *ant_c, char *has_start, int nb_paths)
{
*ants = NULL;
ft_bzero(has_start, nb_paths);
*ant_c = 2;
has_start[0] = 1;
}
int push_ants(t_lmdata *data, t_ind **paths, int nb_paths)
{
t_ants *ants;
int i;
int ant_c;
char has_start[nb_paths];
int i;
init_ants(&ants, &ant_c, has_start, nb_paths);
if (add_ant(&ants, 1, 0, paths) == NULL)
ants = NULL;
i = 0;
ant_c = 2;
while (paths[i] && paths[i]->weight == 0)
i++;
if (add_ant(&ants, 1, i, paths) == NULL)
return (0);
while ((ants || ant_c <= data->nbants) && (i = -1))
while (ants || ant_c <= data->nbants)
{
while (++i < nb_paths)
if (ant_c <= data->nbants && !has_start[i])
if (paths[i]->weight > 0)
{
if (!add_ant(&ants, ant_c, i, paths))
if (!add_ant(&ants, ant_c++, i, paths))
del_ants(&ants);
if (!ants)
return (0);
ant_c++;
has_start[i] = 1;
}
print_ants(data, &ants, has_start, paths);
print_ants(data, &ants, paths);
i = -1;
}
return (1);
}