tests
This commit is contained in:
parent
337c227fd7
commit
fb456880a7
16 changed files with 616 additions and 0 deletions
92
CMakeLists.txt
Normal file
92
CMakeLists.txt
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
cmake_minimum_required(VERSION 3.5.2)
|
||||||
|
project(fillit)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
|
|
||||||
|
include_directories(inc)
|
||||||
|
include_directories(libft)
|
||||||
|
|
||||||
|
set(SOURCE_FILES
|
||||||
|
libft/ft_atoi.c
|
||||||
|
libft/ft_bzero.c
|
||||||
|
libft/ft_isalnum.c
|
||||||
|
libft/ft_isalpha.c
|
||||||
|
libft/ft_isascii.c
|
||||||
|
libft/ft_isdigit.c
|
||||||
|
libft/ft_isprint.c
|
||||||
|
libft/ft_itoa.c
|
||||||
|
libft/ft_lst_at.c
|
||||||
|
libft/ft_lstadd.c
|
||||||
|
libft/ft_lstadd_back.c
|
||||||
|
libft/ft_lstdel.c
|
||||||
|
libft/ft_lstdelone.c
|
||||||
|
libft/ft_lstfind.c
|
||||||
|
libft/ft_lstiter.c
|
||||||
|
libft/ft_lstmap.c
|
||||||
|
libft/ft_lstnew.c
|
||||||
|
libft/ft_lststrsplit.c
|
||||||
|
libft/ft_memalloc.c
|
||||||
|
libft/ft_memccpy.c
|
||||||
|
libft/ft_memchr.c
|
||||||
|
libft/ft_memcmp.c
|
||||||
|
libft/ft_memcpy.c
|
||||||
|
libft/ft_memdel.c
|
||||||
|
libft/ft_memmove.c
|
||||||
|
libft/ft_memset.c
|
||||||
|
libft/ft_putchar.c
|
||||||
|
libft/ft_putchar_fd.c
|
||||||
|
libft/ft_putendl.c
|
||||||
|
libft/ft_putendl_fd.c
|
||||||
|
libft/ft_putnbr.c
|
||||||
|
libft/ft_putnbr_fd.c
|
||||||
|
libft/ft_putstr.c
|
||||||
|
libft/ft_putstr_fd.c
|
||||||
|
libft/ft_realloc.c
|
||||||
|
libft/ft_strcat.c
|
||||||
|
libft/ft_strchr.c
|
||||||
|
libft/ft_strclr.c
|
||||||
|
libft/ft_strcmp.c
|
||||||
|
libft/ft_strcpy.c
|
||||||
|
libft/ft_strdel.c
|
||||||
|
libft/ft_strdup.c
|
||||||
|
libft/ft_strequ.c
|
||||||
|
libft/ft_striter.c
|
||||||
|
libft/ft_striteri.c
|
||||||
|
libft/ft_strjoin.c
|
||||||
|
libft/ft_strlcat.c
|
||||||
|
libft/ft_strlen.c
|
||||||
|
libft/ft_strmap.c
|
||||||
|
libft/ft_strmapi.c
|
||||||
|
libft/ft_strncat.c
|
||||||
|
libft/ft_strncmp.c
|
||||||
|
libft/ft_strncpy.c
|
||||||
|
libft/ft_strnequ.c
|
||||||
|
libft/ft_strnew.c
|
||||||
|
libft/ft_strnstr.c
|
||||||
|
libft/ft_strrchr.c
|
||||||
|
libft/ft_strsplit.c
|
||||||
|
libft/ft_strstr.c
|
||||||
|
libft/ft_strsub.c
|
||||||
|
libft/ft_strtrim.c
|
||||||
|
libft/ft_tolower.c
|
||||||
|
libft/ft_toupper.c
|
||||||
|
libft/ft_lstpop.c
|
||||||
|
libft/libft.h
|
||||||
|
src/check_raw_string.c
|
||||||
|
src/dancing_links.c
|
||||||
|
src/fillit.c
|
||||||
|
src/get_types.c
|
||||||
|
src/glue_figure.c
|
||||||
|
src/main.c
|
||||||
|
src/move_up_left.c
|
||||||
|
src/read_file.c
|
||||||
|
src/string_to_table.c
|
||||||
|
src/test!_check.c
|
||||||
|
src/test!_print_one_string.c
|
||||||
|
src/test!_print_table.c
|
||||||
|
src/to_letters.c
|
||||||
|
src/get_amount.c
|
||||||
|
tests/sample.fillit
|
||||||
|
tests/sample1.fillit)
|
||||||
|
|
||||||
|
add_executable(fillit ${SOURCE_FILES})
|
34
src/check_raw_string.c
Normal file
34
src/check_raw_string.c
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* check_raw_string.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/15 18:32:54 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/15 18:32:58 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
int check_raw_string(char *raw_string)
|
||||||
|
{
|
||||||
|
int n_count;
|
||||||
|
|
||||||
|
n_count = 0;
|
||||||
|
if (*raw_string == 0 || *raw_string == '\n')
|
||||||
|
return (1);
|
||||||
|
while(*raw_string)
|
||||||
|
{
|
||||||
|
if (*raw_string == '\n')
|
||||||
|
n_count++;
|
||||||
|
if ((n_count + 1) % 4 == 0)
|
||||||
|
if (*(raw_string + 1) != '\0')
|
||||||
|
if (*(raw_string + 1) != '\n' && !(*(raw_string + 2) == '.' || *(raw_string + 2) == '#'))
|
||||||
|
return (1);
|
||||||
|
raw_string++;
|
||||||
|
|
||||||
|
}
|
||||||
|
if (n_count < 3)
|
||||||
|
return (1);
|
||||||
|
return (0);
|
||||||
|
}
|
11
src/fillit.c
Normal file
11
src/fillit.c
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#include "fillit.h"
|
||||||
|
|
||||||
|
unsigned int ft_sqrt_ceil(unsigned int num)
|
||||||
|
{
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
i = 1;
|
||||||
|
while (i * i < num)
|
||||||
|
i++;
|
||||||
|
return (i);
|
||||||
|
}
|
38
src/test!_check.c
Normal file
38
src/test!_check.c
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* test!_check.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/14 17:26:13 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/20 19:02:34 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "../inc/fillit.h"
|
||||||
|
|
||||||
|
// Test func. Compare figures from file
|
||||||
|
// with templates
|
||||||
|
void test_check(char **ttr, t_ttrmn *templates)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int j;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (ttr[i])
|
||||||
|
{
|
||||||
|
j = 0;
|
||||||
|
while(j < 19)
|
||||||
|
{
|
||||||
|
if ((ft_memcmp(ttr[i], templates[j].t, 17) == 0))
|
||||||
|
{
|
||||||
|
printf(" match!\n");
|
||||||
|
print_one_string(templates[j]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
31
src/test!_print_one_string.c
Normal file
31
src/test!_print_one_string.c
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* test!_print_one_string.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/14 17:09:23 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/14 17:09:24 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "../inc/fillit.h"
|
||||||
|
|
||||||
|
// Test func. Print table but one string contain whole figure.
|
||||||
|
void print_one_string(t_ttrmn ttr)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (ttr.t[i])
|
||||||
|
{
|
||||||
|
ft_putchar(ttr.t[i]);
|
||||||
|
if ((i + 1) % 4 == 0)
|
||||||
|
ft_putchar('\n');
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
printf("x = %d, y = %d\n", ttr.width, ttr.height);
|
||||||
|
printf("x1[%d] y1[%d]\nx2[%d] y2[%d]\nx3[%d] y3[%d]\nx4[%d] y4[%d]\n", ttr.c[0].x, ttr.c[0].y, ttr.c[1].x, ttr.c[1].y, ttr.c[2].x, ttr.c[2].y, ttr.c[3].x, ttr.c[3].y);
|
||||||
|
ft_putstr("\n");
|
||||||
|
}
|
30
src/test!_print_table.c
Normal file
30
src/test!_print_table.c
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* test!_print_table.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/14 17:07:19 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/14 17:07:22 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "../inc/fillit.h"
|
||||||
|
|
||||||
|
// Test func. Print string table,
|
||||||
|
// each line - line of tetromino figure.
|
||||||
|
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++;
|
||||||
|
}
|
||||||
|
}
|
37
src/to_letters.c
Normal file
37
src/to_letters.c
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* to_letters.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/14 17:21:37 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/14 17:21:39 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "../inc/fillit.h"
|
||||||
|
|
||||||
|
// convert "#" symbols to letters
|
||||||
|
// rewrite for new method with structures
|
||||||
|
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++;
|
||||||
|
}
|
||||||
|
}
|
42
tests/color_letters.c
Normal file
42
tests/color_letters.c
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* color_letters.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: kyork <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/10/04 16:44:50 by kyork #+# #+# */
|
||||||
|
/* Updated: 2016/10/05 15:41:53 by kyork ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#define CSI "\033["
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
int g_colors[] = {1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14,
|
||||||
|
16 + 5, 16 + 12, 16 + 23, 16 + 30, 52 + 0, 52 + 5, 52 + 6, 52 + 12, 52 + 20,
|
||||||
|
88 + 1, 88 + 6, 88 + 12, 160 + 12, 196 + 30, 160 + 21};
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
char c;
|
||||||
|
ssize_t read_size;
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
read_size = read(0, &c, 1);
|
||||||
|
if (read_size == 0)
|
||||||
|
break ;
|
||||||
|
if ('A' <= c && c <= 'Z')
|
||||||
|
{
|
||||||
|
printf("%s48;5;%dm%c", CSI, g_colors[c - 'A'], c);
|
||||||
|
}
|
||||||
|
else if (c == '.')
|
||||||
|
printf("%sm%c", CSI, c);
|
||||||
|
else if (c == '\n')
|
||||||
|
printf("%sm%c", CSI, c);
|
||||||
|
else
|
||||||
|
printf("%c", c);
|
||||||
|
}
|
||||||
|
}
|
46
tests/rand_test.py
Executable file
46
tests/rand_test.py
Executable file
|
@ -0,0 +1,46 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
|
tet_shapes = [
|
||||||
|
'####\n....\n....\n....\n',
|
||||||
|
'#...\n#...\n#...\n#...\n',
|
||||||
|
'#...\n###.\n....\n....\n',
|
||||||
|
'##..\n#...\n#...\n....\n',
|
||||||
|
'###.\n..#.\n....\n....\n',
|
||||||
|
'.#..\n.#..\n##..\n....\n',
|
||||||
|
'..#.\n###.\n....\n....\n',
|
||||||
|
'#...\n#...\n##..\n....\n',
|
||||||
|
'###.\n#...\n....\n....\n',
|
||||||
|
'##..\n.#..\n.#..\n....\n',
|
||||||
|
'##..\n##..\n....\n....\n',
|
||||||
|
'.##.\n##..\n....\n....\n',
|
||||||
|
'#...\n##..\n.#..\n....\n',
|
||||||
|
'.#..\n###.\n....\n....\n',
|
||||||
|
'#...\n##..\n#...\n....\n',
|
||||||
|
'###.\n.#..\n....\n....\n',
|
||||||
|
'.#..\n##..\n.#..\n....\n',
|
||||||
|
'##..\n.##.\n....\n....\n',
|
||||||
|
'.#..\n##..\n#...\n....\n',
|
||||||
|
]
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import random
|
||||||
|
import os
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(description="Generate random fillit problems")
|
||||||
|
parser.add_argument('count', metavar="count", type=int, default=10, nargs='?',
|
||||||
|
help="number of tetrominoes to output")
|
||||||
|
parser.add_argument('--seed', type=int, default=None,
|
||||||
|
help="mt_rand seed (to reproduce problems)")
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
seed = args.seed
|
||||||
|
if seed is None:
|
||||||
|
seed = random.SystemRandom().randint(0, 2**19937-1)
|
||||||
|
|
||||||
|
random.seed(seed)
|
||||||
|
|
||||||
|
tets = [tet_shapes[random.randrange(len(tet_shapes))] for x in range(args.count)]
|
||||||
|
|
||||||
|
[print(x, end=("" if i == len(tets) - 1 else "\n")) for i, x in enumerate(tets)]
|
21
tests/sample.fillit
Normal file
21
tests/sample.fillit
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
....
|
||||||
|
##..
|
||||||
|
.#..
|
||||||
|
.#..
|
||||||
|
|
||||||
|
....
|
||||||
|
####
|
||||||
|
....
|
||||||
|
....
|
||||||
|
|
||||||
|
#...
|
||||||
|
###.
|
||||||
|
....
|
||||||
|
....
|
||||||
|
|
||||||
|
....
|
||||||
|
##..
|
||||||
|
.##.
|
||||||
|
....
|
||||||
|
|
||||||
|
|
19
tests/sample1.fillit
Normal file
19
tests/sample1.fillit
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
....
|
||||||
|
##..
|
||||||
|
.#..
|
||||||
|
.#..
|
||||||
|
|
||||||
|
..#.
|
||||||
|
###.
|
||||||
|
....
|
||||||
|
....
|
||||||
|
|
||||||
|
....
|
||||||
|
##..
|
||||||
|
##..
|
||||||
|
....
|
||||||
|
|
||||||
|
####
|
||||||
|
....
|
||||||
|
....
|
||||||
|
....
|
34
tests/sample2.fillit
Normal file
34
tests/sample2.fillit
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
####
|
||||||
|
....
|
||||||
|
....
|
||||||
|
....
|
||||||
|
|
||||||
|
####
|
||||||
|
....
|
||||||
|
....
|
||||||
|
....
|
||||||
|
|
||||||
|
####
|
||||||
|
....
|
||||||
|
....
|
||||||
|
....
|
||||||
|
|
||||||
|
####
|
||||||
|
....
|
||||||
|
....
|
||||||
|
....
|
||||||
|
|
||||||
|
####
|
||||||
|
....
|
||||||
|
....
|
||||||
|
....
|
||||||
|
|
||||||
|
####
|
||||||
|
....
|
||||||
|
....
|
||||||
|
....
|
||||||
|
|
||||||
|
####
|
||||||
|
....
|
||||||
|
....
|
||||||
|
....
|
19
tests/sample3.fillit
Normal file
19
tests/sample3.fillit
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
....
|
||||||
|
##..
|
||||||
|
.#..
|
||||||
|
.#..
|
||||||
|
|
||||||
|
....
|
||||||
|
####
|
||||||
|
....
|
||||||
|
....
|
||||||
|
|
||||||
|
#...
|
||||||
|
###.
|
||||||
|
....
|
||||||
|
....
|
||||||
|
|
||||||
|
....
|
||||||
|
##..
|
||||||
|
.##.
|
||||||
|
....
|
39
tests/sample4.fillit
Normal file
39
tests/sample4.fillit
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
...#
|
||||||
|
...#
|
||||||
|
...#
|
||||||
|
...#
|
||||||
|
|
||||||
|
....
|
||||||
|
....
|
||||||
|
....
|
||||||
|
####
|
||||||
|
|
||||||
|
.###
|
||||||
|
...#
|
||||||
|
....
|
||||||
|
....
|
||||||
|
|
||||||
|
....
|
||||||
|
..##
|
||||||
|
.##.
|
||||||
|
....
|
||||||
|
|
||||||
|
....
|
||||||
|
.##.
|
||||||
|
.##.
|
||||||
|
....
|
||||||
|
|
||||||
|
....
|
||||||
|
....
|
||||||
|
##..
|
||||||
|
.##.
|
||||||
|
|
||||||
|
##..
|
||||||
|
.#..
|
||||||
|
.#..
|
||||||
|
....
|
||||||
|
|
||||||
|
....
|
||||||
|
###.
|
||||||
|
.#..
|
||||||
|
....
|
4
tests/sample5.fillit
Normal file
4
tests/sample5.fillit
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
....
|
||||||
|
..##
|
||||||
|
.##.
|
||||||
|
....
|
119
tests/sample6.fillit
Normal file
119
tests/sample6.fillit
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
...#
|
||||||
|
...#
|
||||||
|
...#
|
||||||
|
...#
|
||||||
|
|
||||||
|
....
|
||||||
|
....
|
||||||
|
....
|
||||||
|
####
|
||||||
|
|
||||||
|
.###
|
||||||
|
...#
|
||||||
|
....
|
||||||
|
....
|
||||||
|
|
||||||
|
....
|
||||||
|
..##
|
||||||
|
.##.
|
||||||
|
....
|
||||||
|
|
||||||
|
....
|
||||||
|
.##.
|
||||||
|
.##.
|
||||||
|
....
|
||||||
|
|
||||||
|
....
|
||||||
|
....
|
||||||
|
##..
|
||||||
|
.##.
|
||||||
|
|
||||||
|
##..
|
||||||
|
.#..
|
||||||
|
.#..
|
||||||
|
....
|
||||||
|
|
||||||
|
....
|
||||||
|
###.
|
||||||
|
.#..
|
||||||
|
....
|
||||||
|
|
||||||
|
...#
|
||||||
|
...#
|
||||||
|
...#
|
||||||
|
...#
|
||||||
|
|
||||||
|
....
|
||||||
|
....
|
||||||
|
....
|
||||||
|
####
|
||||||
|
|
||||||
|
.###
|
||||||
|
...#
|
||||||
|
....
|
||||||
|
....
|
||||||
|
|
||||||
|
....
|
||||||
|
..##
|
||||||
|
.##.
|
||||||
|
....
|
||||||
|
|
||||||
|
....
|
||||||
|
.##.
|
||||||
|
.##.
|
||||||
|
....
|
||||||
|
|
||||||
|
....
|
||||||
|
....
|
||||||
|
##..
|
||||||
|
.##.
|
||||||
|
|
||||||
|
##..
|
||||||
|
.#..
|
||||||
|
.#..
|
||||||
|
....
|
||||||
|
|
||||||
|
....
|
||||||
|
###.
|
||||||
|
.#..
|
||||||
|
....
|
||||||
|
|
||||||
|
...#
|
||||||
|
...#
|
||||||
|
...#
|
||||||
|
...#
|
||||||
|
|
||||||
|
....
|
||||||
|
....
|
||||||
|
....
|
||||||
|
####
|
||||||
|
|
||||||
|
.###
|
||||||
|
...#
|
||||||
|
....
|
||||||
|
....
|
||||||
|
|
||||||
|
....
|
||||||
|
..##
|
||||||
|
.##.
|
||||||
|
....
|
||||||
|
|
||||||
|
....
|
||||||
|
.##.
|
||||||
|
.##.
|
||||||
|
....
|
||||||
|
|
||||||
|
....
|
||||||
|
....
|
||||||
|
##..
|
||||||
|
.##.
|
||||||
|
|
||||||
|
##..
|
||||||
|
.#..
|
||||||
|
.#..
|
||||||
|
....
|
||||||
|
|
||||||
|
....
|
||||||
|
###.
|
||||||
|
.#..
|
||||||
|
....
|
Loading…
Reference in a new issue