Grisha start
This commit is contained in:
parent
1a0d9c6a5e
commit
346e386d8d
1 changed files with 365 additions and 0 deletions
365
main.c
Normal file
365
main.c
Normal file
|
@ -0,0 +1,365 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* main.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2016/12/10 16:07:25 by gtertysh #+# #+# */
|
||||
/* Updated: 2016/12/10 21:35:59 by gtertysh ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "libft.h"
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#define BUF_S 8192
|
||||
|
||||
typedef struct s_tetrominoes
|
||||
{
|
||||
char figure[17];
|
||||
} t_ttr;
|
||||
|
||||
t_ttr ttr_tamplates[19] =
|
||||
{
|
||||
{ "#..."
|
||||
"#..."
|
||||
"#..."
|
||||
"#..." },
|
||||
|
||||
{ "####"
|
||||
"...."
|
||||
"...."
|
||||
"...." },
|
||||
|
||||
{ "#..."
|
||||
"#..."
|
||||
"##.."
|
||||
"...." },
|
||||
|
||||
{ "..#."
|
||||
"###."
|
||||
"...."
|
||||
"...." },
|
||||
|
||||
{ "##.."
|
||||
".#.."
|
||||
".#.."
|
||||
"...." },
|
||||
|
||||
{ "###."
|
||||
"#..."
|
||||
"...."
|
||||
"...." },
|
||||
|
||||
{ ".#.."
|
||||
".#.."
|
||||
"##.."
|
||||
"...." },
|
||||
|
||||
{ "###."
|
||||
"..#."
|
||||
"...."
|
||||
"...." },
|
||||
|
||||
{ "##.."
|
||||
"#..."
|
||||
"#..."
|
||||
"...." },
|
||||
|
||||
{ "#..."
|
||||
"###."
|
||||
"...."
|
||||
"...." },
|
||||
|
||||
{ "###."
|
||||
".#.."
|
||||
"...."
|
||||
"...." },
|
||||
|
||||
{ "#..."
|
||||
"##.."
|
||||
"#..."
|
||||
"...." },
|
||||
|
||||
{ ".#.."
|
||||
"###."
|
||||
"...."
|
||||
"...." },
|
||||
|
||||
{ ".#.."
|
||||
"##.."
|
||||
".#.."
|
||||
"...." },
|
||||
|
||||
{ "##.."
|
||||
"##.."
|
||||
"...."
|
||||
"...." },
|
||||
|
||||
{ "##.."
|
||||
".##."
|
||||
"...."
|
||||
"...." },
|
||||
|
||||
{ ".#.."
|
||||
"##.."
|
||||
"#..."
|
||||
"...." },
|
||||
|
||||
{ ".##."
|
||||
"##.."
|
||||
"...."
|
||||
"...." },
|
||||
|
||||
{ "#..."
|
||||
"##.."
|
||||
".#.."
|
||||
"...." }
|
||||
};
|
||||
|
||||
char *read_file(char *path)
|
||||
{
|
||||
int fd;
|
||||
int readed;
|
||||
int old_size;
|
||||
char buf[BUF_S + 1];
|
||||
char *string;
|
||||
|
||||
readed = 0;
|
||||
string = 0;
|
||||
old_size = 0;
|
||||
if (!(fd = open(path, O_RDONLY)))
|
||||
{
|
||||
ft_putstr("error\n");
|
||||
return (0);
|
||||
}
|
||||
string = ft_memalloc(sizeof(char) * BUF_S);
|
||||
while ((readed = read(fd, buf, BUF_S)))
|
||||
{
|
||||
buf[BUF_S] = '\0';
|
||||
old_size = ft_strlen(string);
|
||||
string = ft_realloc(string, old_size + readed, old_size);
|
||||
ft_strcat(string, buf);
|
||||
}
|
||||
return (string);
|
||||
}
|
||||
|
||||
char **to_table(char *string)
|
||||
{
|
||||
char **table;
|
||||
|
||||
table = ft_strsplit(string, '\n');
|
||||
free(string);
|
||||
string = NULL;
|
||||
return (table);
|
||||
}
|
||||
|
||||
void print_table(char **table)
|
||||
{
|
||||
int i;
|
||||
|
||||
i = 0;
|
||||
while (table[i])
|
||||
{
|
||||
ft_putstr(table[i]);
|
||||
ft_putstr("\n");
|
||||
if ((i + 1) % 4 == 0)
|
||||
ft_putchar('\n');
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
void print_one_string(char **glued)
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
|
||||
i = 0;
|
||||
while (glued[i])
|
||||
{
|
||||
j = 0;
|
||||
while (glued[i][j])
|
||||
{
|
||||
ft_putchar(glued[i][j]);
|
||||
if ((j + 1) % 4 == 0)
|
||||
ft_putchar('\n');
|
||||
j++;
|
||||
}
|
||||
ft_putstr("\n");
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
char **glue_figure(char **table)
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
int size;
|
||||
char **ttr_table;
|
||||
|
||||
size = 0;
|
||||
i = 0;
|
||||
j = 0;
|
||||
while(table[size])
|
||||
size++;
|
||||
ttr_table = ft_memalloc(sizeof(char *) * (size / 4 + 1));
|
||||
while (i < size / 4)
|
||||
ttr_table[i++] = ft_memalloc(sizeof(char) * 17);
|
||||
ttr_table[i] = 0;
|
||||
i = 0;
|
||||
while (i < size / 4)
|
||||
{
|
||||
ft_strcat(ttr_table[i], table[j]);
|
||||
j++;
|
||||
if (j % 4 == 0)
|
||||
i++;
|
||||
}
|
||||
i = 0;
|
||||
while(table[i])
|
||||
free(table[i++]);
|
||||
free(table);
|
||||
return (ttr_table);
|
||||
}
|
||||
|
||||
void move_up_left(char **table)
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
int k;
|
||||
char tmp[17];
|
||||
|
||||
i = 0;
|
||||
while (table[i])
|
||||
{
|
||||
ft_memcpy(tmp, table[i], 17);
|
||||
j = 0;
|
||||
while(table[i][j] != '#')
|
||||
j++;
|
||||
ft_memmove(tmp, table[i] + j, 17 - j);
|
||||
k = 0;
|
||||
while ( (tmp[3] == '#' && tmp[4] == '#') ||
|
||||
(tmp[7] == '#' && tmp[8] == '#') ||
|
||||
(tmp[11] == '#' && tmp[12] == '#'))
|
||||
{
|
||||
ft_memmove((tmp + k + 1), (tmp + k), 17 - j);
|
||||
*(tmp + k) = '.';
|
||||
j--;
|
||||
k++;
|
||||
}
|
||||
k = 15;
|
||||
while (j--)
|
||||
{
|
||||
*(tmp + k--) = '.';
|
||||
}
|
||||
ft_memcpy(table[i], tmp, 17);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
void to_letters(char **ttr)
|
||||
{
|
||||
char ch;
|
||||
int i;
|
||||
int j;
|
||||
|
||||
i = 0;
|
||||
ch = 'A';
|
||||
while(ttr[i])
|
||||
{
|
||||
j = 0;
|
||||
while(ttr[i][j])
|
||||
{
|
||||
if(ttr[i][j] == '#')
|
||||
ttr[i][j] = ch;
|
||||
j++;
|
||||
}
|
||||
i++;
|
||||
ch++;
|
||||
}
|
||||
}
|
||||
|
||||
void test_check(char **ttr, t_ttr *tamplates)
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
|
||||
i = 0;
|
||||
while (ttr[i])
|
||||
{
|
||||
j = 0;
|
||||
while(j < 19)
|
||||
{
|
||||
printf("\n\ninput:\n");
|
||||
printf("%s\n", ttr[i]);
|
||||
printf("\n\ntemplate:\n");
|
||||
printf("%s\n", tamplates[j].figure);
|
||||
if ((ft_memcmp(ttr[i], tamplates[j].figure, 17) == 0))
|
||||
printf(" match!\n");
|
||||
j++;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
int ft_dumb_sqrt(int nb)
|
||||
{
|
||||
int i;
|
||||
|
||||
i = 0;
|
||||
while (i * i < nb)
|
||||
i++;
|
||||
return (i);
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
char *string;
|
||||
char **table;
|
||||
char **ttr;
|
||||
int i;
|
||||
|
||||
i = 0;
|
||||
if (argc != 2)
|
||||
{
|
||||
ft_putstr("error\n");
|
||||
return (1);
|
||||
}
|
||||
string = read_file(argv[1]);
|
||||
if (!(string = read_file(argv[1])))
|
||||
{
|
||||
ft_putstr("error\n");
|
||||
return (1);
|
||||
}
|
||||
printf("string:\n\n\n%s\n", string);
|
||||
table = to_table(string);
|
||||
// set null to free :)
|
||||
printf("print_table:\n\n\n");
|
||||
print_table(table);
|
||||
ttr = glue_figure(table);
|
||||
printf("glued figures:\n\n\n");
|
||||
print_one_string(ttr);
|
||||
move_up_left(ttr);
|
||||
printf("move to up left:\n\n\n");
|
||||
print_one_string(ttr);
|
||||
//printf("test check:\n\n");
|
||||
//test_check(ttr, ttr_tamplates);
|
||||
to_letters(ttr);
|
||||
printf("to latters:\n\n");
|
||||
print_one_string(ttr);
|
||||
printf("%d\n", ft_dumb_sqrt(4));
|
||||
//while (i < 19)
|
||||
//{
|
||||
// ft_putstr(ttr[i++].figure);
|
||||
// ft_putstr("\n");
|
||||
//}
|
||||
//if (check(string))
|
||||
//{
|
||||
// ft_putstr("error\n");
|
||||
// return (1);
|
||||
//}
|
||||
return (0);
|
||||
}
|
Loading…
Reference in a new issue