コード例 #1
0
int			get_next_line(int const fd, char **line)
{
	static char	*rest;
	char		buf[BUFF_SIZE];
	int			rd;

	if (line == NULL || (fd < 0 || BUFF_SIZE < 1))
		return (-1);
	*line = (char *)ft_memalloc(1);
	if ((ft_traiting_value_rest(rest, buf, line)) == 1)
		return (1);
	while (((rd = read(fd, buf, BUFF_SIZE)) > 0) && ((ft_check(buf, 0)) == 0))
		ft_storage_in_line(buf, line, rd, 0);
	if (rd == (-1))
		return (-1);
	if ((rd == 0 && (!rest || rest[0] == '\0')) && *line[0] == '\0')
		return (0);
	if (rest && rest[0] != '\0')
		ft_storage_in_line(rest, line, rd, (ft_check(rest, 0)));
	if ((ft_check(buf, 0)) == 1)
	{
		ft_storage_in_line(buf, line, rd, 1);
		rest = ft_storage_rest(buf, rd);
	}
	if (((ft_check(buf, 0)) == 2) && (rd > 0))
		ft_storage_in_line(buf, line, rd, 0);
	return (1);
}
コード例 #2
0
ファイル: algo.c プロジェクト: Hyllore/push_swap
t_lst	*algo(t_lst *lst_a, t_lst *lst_b, t_lst *tmp, int c)
{
	lst_a = tmp;
	while (ft_check(lst_a, lst_b, tmp) == 0)
	{
		if (ft_check(lst_a = swap(lst_a, tmp, lst_b), lst_b, tmp) == 1)
			return (lst_a);
		c = add(lst_a, tmp, c);
		lst_a = add2(lst_a, lst_b, tmp, c);
		if (lst_a->content == c && ft_check(tmp, lst_b, tmp) == 0)
		{
			lst_a = tmp;
			lst_b = push(lst_b, lst_a, tmp, "pb ");
			lst_a = push2(lst_a, lst_b, tmp);
		}
		if (lst_a == NULL)
			while (lst_b != NULL)
			{
				if (lst_b->next == NULL)
					lst_a = push(lst_a, lst_b, tmp, "pa\n");
				else
					lst_a = push(lst_a, lst_b, tmp, "pa ");
				lst_a = tmp;
				lst_b = push3(lst_b, lst_a, tmp);
			}
	}
	return (lst_a);
}
コード例 #3
0
ファイル: main.c プロジェクト: BenElhadj/Qodvwr-42
int		main(int argc, char **argv)
{
	if (argc > 1)
		while (*++argv != '\0')
		{
			ft_check(ft_openfile(*argv));
		}
	else
		ft_check(ft_read_standard());
	return (0);
}
コード例 #4
0
int			get_next_line(int const fd, char **line)
{
	static t_gnl	tab[1000] = { T_GNL_INIT_100 };
	char 			buf[BUFF_SIZE + 1];
	int 			ret;

	buf[BUFF_SIZE] = '\0';
	while (42)
	{
		if ((ret = read(fd, buf, BUFF_SIZE)) == 0)
			tab[fd].status = END;
		else {
			buf[ret] = '\0';
			tab[fd].data = ft_strjoin(tab[fd].data , buf);
		}
		ft_check(&tab[fd], *line);
		if (tab[fd].status != WORK)
		{
			if (tab[fd].lss == FALSE)
			{
				tab[fd].status = WORK;
				tab[fd].lss = TRUE;
			}
			return (tab[fd].status);
		}
	}
	return(0);
}
コード例 #5
0
ファイル: ft_read.c プロジェクト: pcrosnie/Fdf
t_data	*ft_read(char *entry)
{
	int				i;
	char			**tmp;
	static t_data	*ptr;

	i = -1;
	if (ft_check(entry) == 0)
		return (NULL);
	if (!ptr)
	{
		ptr = (t_data *)malloc(sizeof(t_data));
		ptr->entry = (int **)malloc(sizeof(int *) * 100000);
		ptr->index = 0;
		ptr->width = 0;
	}
	if (!(ptr->entry[ptr->index]))
		ptr->entry[ptr->index] = (int *)malloc(sizeof(int) * 100000);
	tmp = ft_strsplit(entry, ' ');
	while (tmp[++i])
		ptr->entry[ptr->index][i] = ft_atoi(tmp[i]);
	if (ptr->index != 0 && i != ptr->width)
		return (NULL);
	ptr->index++;
	ptr->width = i;
	return (ptr);
}
コード例 #6
0
ファイル: ft_bsq.c プロジェクト: Gary2222/42piscineC
t_square			*ft_bsq(char **map, int nb_lines, char *c)
{
	t_square		*sqr;
	t_square		*tmp;

	sqr = NULL;
	tmp = NULL;
	sqr = ft_init_square(sqr);
	tmp = ft_init_square(tmp);
	while (tmp->y < nb_lines - sqr->size)
	{
		while (tmp->x < ft_strlen(map[tmp->y]) - sqr->size)
		{
			if (map[tmp->y][tmp->x] == c[0])
			{
				tmp->size = ft_check(*tmp, c, map, nb_lines);
				if (tmp->size > sqr->size)
					*sqr = *tmp;
			}
			tmp->x++;
		}
		tmp->x = 0;
		tmp->y++;
	}
	return (sqr);
}
コード例 #7
0
ファイル: ft_algo.c プロジェクト: floklein/42
int		ft_rec(unsigned short map[16], t_tet *tets, t_tet *tet, int size)
{
	int	i;
	int	j;

	if (tet->blocs == 0)
		return (0);
	i = (tet->ident != -1) ? HGH(((tets + tet->ident)->pos) & 0xff) - 1 : -1;
	j = (tet->ident != -1) ? LOW(((tets + tet->ident)->pos) & 0xff) : -1;
	while (++i + HGH(tet->max) < size)
	{
		while (++j + LOW(tet->max) < size)
		{
			if (ft_check(map, tet->blocs + (STK((i << 4) + j))) == 0)
			{
				ft_toggle(map, tet->blocs + (tet->pos = STK((i << 4) + j)));
				if (ft_rec(map, tets, tet + 1, size) == 0)
					return (0);
				ft_toggle(map, tet->pos + tet->blocs);
			}
		}
		j = -1;
	}
	return (-1);
}
コード例 #8
0
ファイル: ft_atoi.c プロジェクト: jwalle/Corewar
int			ft_atoi(const char *str)
{
	char	*cp;
	int		i;
	int		n;

	n = 0;
	i = 0;
	cp = ft_strtrim_extended(str);
	if (ft_check(cp, i) != 1)
		return (0);
	i++;
	while (ft_isdigit(cp[i]) == 1)
		i++;
	cp[i] = '\0';
	if (ft_isdigit(cp[0]) == 1)
		i = 0;
	else
		i = 1;
	while (i < ft_strlen(cp))
		n = 10 * n + (int)cp[i++] - 48;
	if (cp[0] == 45)
		n = -n;
	return (n);
}
コード例 #9
0
ファイル: ft_putll.c プロジェクト: Galathorn/Project
void				ft_putll(long long to_print)
{
	int		boul;
	int		boul2;

	boul2 = 0;
	boul = 0;
	boul2 = ft_check(to_print, boul2);
	if (boul2 == 1)
	{
		if (to_print < 0)
		{
			to_print = to_print * (-1);
			boul++;
		}
		if (boul == 1)
			ft_putchar('-');
		if (to_print >= 10)
		{
			ft_putll(to_print / 10);
			ft_putll(to_print % 10);
		}
		else
			ft_putchar(to_print + '0');
	}
}
コード例 #10
0
int			creat_str(t_pf *ptf, int flag, int dot)
{
	char	*str;
	int		size;

	size = 0;
	(flag & 16 && flag & 1 && ptf->type == '%') ? ptf->flag -= 16 : 0;
	if (ptf->type == 'n' && free_ptf(ptf) < 0)
		return (0);
	if (ptf->type == '%' && ptf->dot && !(ptf->dot = 0))
		ptf->prec = 0;
	if (!ptf->dot && ptf->flag & 16)
	{
		ptf->prec = ptf->width;
		if (ptf->value[0] == '-' || ptf->flag & 2 || ptf->flag & 4)
			ptf->prec--;
	}
	if (dot && !ptf->prec && ptf->value[0] && ft_check(ptf))
		ptf->value[0] = 0;
	if (!(str = makeoptions(ptf)))
		return (-1);
	(ptf->type == 'X') ? upstr(&str) : 0;
	size = p_var(ptf, str);
	free(str);
	str = NULL;
	free_ptf(ptf);
	return (size);
}
コード例 #11
0
ファイル: ft_openreadstock.c プロジェクト: dydou94/newbro
void	ft_check2(char *check)
{
	int octet = 0;
	int dieze = 0;
	int rline = 0;

	if(!ft_check(check))
		return ;
	while (*check)
	{
		if (*check == '#')
			dieze = dieze + 1;
		if (*check == '\n')
			rline = rline + 1;
		if (octet == 21 && dieze != 4 && rline != 5)
			{
				ft_putstr("tetriminos invalide");
				break;
			}
		if (octet == 21 && dieze == 4 && rline == 5)
		{
			octet = 0;
			dieze = 0;
			rline = 0;
		}
		check++;
		octet++;
	}
}
コード例 #12
0
ファイル: ft_bsq.c プロジェクト: MrPandawan/Piscine-C
void	ft_readbsq_file(char *av, t_caract *bsq, t_infos *elem)
{
	bsq->err = 0;
	bsq->fd = ft_open(av, bsq);
	if (bsq->err == 1)
		return ;
	bsq->st_size = ft_size_file(av, bsq->err);
	ft_buff_size(bsq);
	if (bsq->err == 1)
		return ;
	ft_check(bsq, elem);
	if (bsq->err == 1)
		return ;
	ft_position(bsq);
	if (bsq->err == 1)
		return ;
	ft_buff_int(bsq, elem, 0, 0);
	if (bsq->err == 1)
		return ;
	ft_bsq(bsq, elem, bsq->square->x, bsq->square->y);
	if (bsq->err == 1)
		return ;
	ft_print_bsq(bsq->double_buff, bsq);
	if (bsq->err == 1)
		return ;
	ft_free_all(bsq, elem);
}
コード例 #13
0
ファイル: ft_bsq.c プロジェクト: MrPandawan/Piscine-C
void	ft_readbsq_stdin(t_caract *bsq, t_infos *elem)
{
	if ((bsq->simple_buff = ft_buff_size_stdin(bsq)) == 0)
	{
		write(1, "map error\n", 10);
		return ;
	}
	bsq->simple_buff[bsq->st_size] = '\0';
	if (bsq->err == 1)
		return ;
	ft_check(bsq, elem);
	if (bsq->err == 1)
		return ;
	ft_position(bsq);
	if (bsq->err == 1)
		return ;
	ft_buff_int(bsq, elem, 0, 0);
	if (bsq->err == 1)
		return ;
	ft_bsq(bsq, elem, bsq->square->x, bsq->square->y);
	if (bsq->err == 1)
		return ;
	ft_print_bsq(bsq->double_buff, bsq);
	if (bsq->err == 1)
		return ;
	ft_free_all(bsq, elem);
}
コード例 #14
0
ファイル: ft_split.c プロジェクト: nlory-ma/Piscina-Academie
int	ft_strlen_tw(char *str, char *charset)
{
	int i;
	int len;
	
	i = 0;
	len = 0;
	while (str[i])
	{
		while (str[i] && (ft_check(str, charset, i) == 1))
			i = i + ft_strlen(charset);
		while (str[i] && (ft_check(str, charset, i) == 0))
		{
			len++;
			i++;
		}
	}
	return (len);
}
コード例 #15
0
int					ft_get_score(t_ctx *ctx, t_move *move)
{
	int				score;

	if (ft_check(move->grid, move->col, move->row))
		return (1000);
	score = 0;
	score += ft_neighbours(ctx, move, move->grid);
	score += ft_annoy(ctx, move, move->grid);
	return (score);
}
コード例 #16
0
int			ft_printf_part1(t_glob *global, va_list ap, t_list *tmp, int result)
{
	if (ft_check(tmp, 0) < 0)
		exit(EXIT_FAILURE);
	while (global->first->next)
	{
		if (ft_strlen(global->first->txt) > 0)
			result += ft_putstr(global->first->txt);
		result += ft_print_end(ap, global->first, global->first->conv, 0);
		global->first = global->first->next;	
	}
	return (result);
}
コード例 #17
0
ファイル: ft_split.c プロジェクト: nlory-ma/Piscina-Academie
int	ft_strlen_w(char *str, char *charset, int i)
{
	int len;
	int j;

	len = 0;
	j = 0;
	while (str[i] && charset[j] && !ft_check(str, charset, i))
	{
		i++;
		len++;
	}
	return (len);
}
コード例 #18
0
ファイル: main.c プロジェクト: tirrorex/C
int		main(int argc, char **argv)
{
	int **sudoku;

	if (argc == 10)
	{
		if (!ft_check(argv))
			return (write(2, "Erreur\n", 8));
		sudoku = ft_chartoint(argv);
		ft_resolve(sudoku, 0, 1);
		ft_aff(sudoku);
	}
	else
		write(2, "Erreur\n", 8);
	return (0);
}
コード例 #19
0
ファイル: algo.c プロジェクト: Hyllore/push_swap
t_lst	*swap(t_lst *lst_a, t_lst *tmp, t_lst *lst_b)
{
	if (lst_a->next != NULL)
	{
		while (lst_a->next->next != NULL)
			lst_a = lst_a->next;
		if (lst_a->content < lst_a->next->content)
		{
			lst_a = tmp;
			lst_a = swap_ab(lst_a, lst_b, tmp, "sa ");
		}
		lst_a = tmp;
		if (ft_check(lst_a, lst_b, tmp) == 1)
			return (lst_a);
		lst_a = tmp;
	}
	return (lst_a);
}
コード例 #20
0
void	ft_solve(int row, int n)
{
	int	col;

	col = 1;
	while (col <= n)
	{
		if (ft_check(row, col) == 1)
		{
			board[row] = col; /* placing queen b'cos no attacks */
			if ( row == n) /* end of grid */
				ft_print(n); /* print out grid */
			else /* try next position */
				ft_solve(row + 1, n);
		}
		col++;
	}
}
コード例 #21
0
ファイル: ft_mynqueen.c プロジェクト: MocaDD/academyplus
void	ft_queen(int row, int n)	//backtracking function
{
	int	column;
	
	column = 1;
	while (column<=n)
	{
		if (ft_check(row, column))
		{
			board[row] = column;
			if (row == n)
				print(n);
			else
				ft_queen(row+1, n);
		}
		column++;
	}
}
コード例 #22
0
ファイル: ft_find.c プロジェクト: acazuc/42_piscine_c
int			ft_check_at(t_map *map, t_square *square, int x, int y)
{
	int			count_size;
	int			result;

	count_size = square->size;
	if ((result = ft_check(map, x, y, count_size + 1)) == -2)
		while (x + ++count_size <= map->width
				&& y + count_size <= map->height
				&& ft_check_two(map, x, y, count_size))
		{
			square->size = count_size;
			square->x = x;
			square->y = y;
		}
	else
		return (result);
	return (0);
}
コード例 #23
0
ファイル: ft_launch.c プロジェクト: DevRaph/Algorithmie
void				ft_launch(char **av, int ac)
{
	t_stack			*pa;
	t_stack			*pb;
	char			*opt;
	int				a;

	opt = ft_strdup("00000");
	if ((a = ft_check(av, ac, opt)) > 0)
	{
		if ((ac - a + 1) < 1)
			exit (write(1, "\n", 1));
		pa = ft_create_stack(av, ac - a + 1, "stack a", opt);
		pb = ft_create_stack(NULL, ac - a + 1, "stack b", opt);
		ft_exec(*pa, *pb);
	}
	else
		ft_putendl("Error");
	free(opt);
}
コード例 #24
0
static int		ft_fl(const char *format, int *i, int *ret, va_list var)
{
	const char	*s;
	const char	*e;
	char		*fl;
	int			len;

	fl = NULL;
	s = (format + *i + 1);
	e = s;
	len = 0;
	while (ft_check(*e))
		e++;
	len = e - s;
	fl = malloc(sizeof(char) * (len + 1));
	fl = ft_strncpy_printf(fl, s, len);
	*ret += ft_tab(var, fl);
	free(fl);
	*i += len;
	return (*ret);
}
コード例 #25
0
ファイル: algorithm.c プロジェクト: cjacques42/filler
static int		ft_putpcs(t_map *map, t_coord *ret)
{
	int		count;

	count = 0;
	ret->y_b = ret->b_index / map->b_weidth;
	ret->x_b = ret->b_index % map->b_weidth;
	ret->x = ret->x_b;
	ret->y = ret->y_b;
	ret->p_index = 0;
	while (map->pcs[ret->p_index])
	{
		if (map->pcs[ret->p_index] == '*')
		{
			if (ft_check(map, ret, &count) == 1)
				return (1);
		}
		ret->p_index++;
	}
	if (count == 0)
		return (1);
	return (0);
}
コード例 #26
0
static int	ft_traiting_value_rest(char *rest, char *buf, char **line)
{
	int		len;
	int		edl;
	char	*r_tmp;

	if (rest && rest[0] != '\0')
	{
		len = ft_strlen(rest);
		edl = ft_check(rest, len);
		ft_storage_in_line(rest, line, len, edl);
		if (edl == 1)
		{
			r_tmp = ft_strdup(rest);
			ft_strclr(rest);
			ft_strcpy(rest, ft_storage_rest(r_tmp, len));
			free(r_tmp);
			return (1);
		}
		rest[0] = '\0';
	}
	ft_bzero(buf, BUFF_SIZE);
	return (0);
}
コード例 #27
0
ファイル: ft_itoa.c プロジェクト: amorfan/wolf3d
char			*ft_itoa(int n)
{
	char		*str;
	size_t		countn;
	int			i;

	i = 0;
	countn = 0;
	str = NULL;
	if (n == -2147483648)
		return (str = ft_except(str));
	if (n < 0)
	{
		n = n * -1;
		i = 1;
	}
	countn = ft_countn(n) + i;
	if ((str = ft_strnew(countn + 1)) == NULL)
		return (NULL);
	ft_check(str, n, countn);
	if (i == 1)
		str[0] = '-';
	return (str);
}
コード例 #28
0
ファイル: main.c プロジェクト: BenjaminSouchet/Fillit
int				main(int ac, char **av)
{
	int		fd;
	t_file	file;
	char	**tab;

	fd = 0;
	file = ft_init(file);
	tab = NULL;
	if (ac != 2)
		write(1, "usage: ./fillit input_file\n", 27);
	else
	{
		tab = ft_convert(ft_open(av[1], &fd, 0), &file.m, 0, 0);
		if (tab != NULL && ft_check(tab, file) != -1 && close(fd) != -1)
		{
			if (!(ft_resolve(tab, file, NULL)))
				write(1, "error\n", 6);
		}
		else
			write(1, "error\n", 6);
	}
	return (0);
}
コード例 #29
0
ファイル: ft_openreadstock.c プロジェクト: dydou94/42
int main(int argc, char **argv)
{
	if (argc == 2)
		ft_check(ft_stock(argv[1]));
	return (0);
}