performance test (500FPS) + configurable neighbor check
This commit is contained in:
parent
99547bc74c
commit
8fd776182f
11
Makefile
11
Makefile
|
@ -4,17 +4,20 @@ LFLAGS = -lSDL2 -lSDL2_image -lm -lncurses
|
||||||
|
|
||||||
all: bin/back
|
all: bin/back
|
||||||
|
|
||||||
|
test-1: bin/back
|
||||||
|
bin/back templates_lv0.txt 27 0
|
||||||
|
|
||||||
test0: bin/back
|
test0: bin/back
|
||||||
bin/back templates.txt 47
|
bin/back templates.txt 47 1
|
||||||
|
|
||||||
test1: bin/back
|
test1: bin/back
|
||||||
bin/back templates_lv1.txt 14
|
bin/back templates_lv1.txt 14 1
|
||||||
|
|
||||||
test2: bin/back
|
test2: bin/back
|
||||||
bin/back templates_lv2.txt 52
|
bin/back templates_lv2.txt 52 1
|
||||||
|
|
||||||
test3: bin/back
|
test3: bin/back
|
||||||
bin/back templates_lv3.txt 33
|
bin/back templates_lv3.txt 33 1
|
||||||
|
|
||||||
bin/back: obj/main.o obj/generation.o obj/display.o obj/base.o obj/hash.o obj/move.o
|
bin/back: obj/main.o obj/generation.o obj/display.o obj/base.o obj/hash.o obj/move.o
|
||||||
mkdir -p bin
|
mkdir -p bin
|
||||||
|
|
|
@ -146,24 +146,18 @@ void drawChunkToRenderer(SDL_Renderer* renderer, chunk* ch, int xmin, int xmax,
|
||||||
int cuy = 50*(8*ch->chy + i);
|
int cuy = 50*(8*ch->chy + i);
|
||||||
int cux2 = 50*(8*ch->chx + j+1);
|
int cux2 = 50*(8*ch->chx + j+1);
|
||||||
int cuy2 = 50*(8*ch->chy + i+1);
|
int cuy2 = 50*(8*ch->chy + i+1);
|
||||||
if(true) {
|
|
||||||
if(cur%2 == 1) {
|
|
||||||
int nxmin = to_int((to_double(cux) - to_double(xmin)) * to_double(__width__)) / (to_double(xmax) - to_double(xmin)) ;
|
int nxmin = to_int((to_double(cux) - to_double(xmin)) * to_double(__width__)) / (to_double(xmax) - to_double(xmin)) ;
|
||||||
int nymin = to_int((to_double(cuy) - to_double(ymin)) * to_double(__height__)) / (to_double(ymax) - to_double(ymin)) ;
|
int nymin = to_int((to_double(cuy) - to_double(ymin)) * to_double(__height__)) / (to_double(ymax) - to_double(ymin)) ;
|
||||||
int nxmin2 = to_int((to_double(cux2) - to_double(xmin)) * to_double(__width__)) / (to_double(xmax) - to_double(xmin)) ;
|
int nxmin2 = to_int((to_double(cux2) - to_double(xmin)) * to_double(__width__)) / (to_double(xmax) - to_double(xmin)) ;
|
||||||
int nymin2 = to_int((to_double(cuy2) - to_double(ymin)) * to_double(__height__)) / (to_double(ymax) - to_double(ymin)) ;
|
int nymin2 = to_int((to_double(cuy2) - to_double(ymin)) * to_double(__height__)) / (to_double(ymax) - to_double(ymin)) ;
|
||||||
if(abs(ch->chx + ch->chy)%2 == 0) {
|
bool x = abs(ch->chx + ch->chy)%2 == 0 ;
|
||||||
placeRectToRenderer(renderer, nxmin, nymin, nxmin2 - nxmin, nymin2 - nymin, 255, 192, 192, SDL_ALPHA_OPAQUE);
|
placeRectToRenderer(renderer, nxmin, nymin, nxmin2 - nxmin, nymin2 - nymin, 255-64*(1-x), 192, 255-64*x, SDL_ALPHA_OPAQUE/(1+3*(cur%2 == 0)));
|
||||||
} else {
|
|
||||||
placeRectToRenderer(renderer, nxmin, nymin, nxmin2 - nxmin, nymin2 - nymin, 192, 192, 255, SDL_ALPHA_OPAQUE);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
cur = cur / 2 ;
|
cur = cur / 2 ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
// branchless goes brrr
|
||||||
|
|
||||||
void drawHashToRenderer(SDL_Renderer* renderer, int chx, int chy, int xmin, int xmax, int ymin, int ymax, int distx, int disty) {
|
void drawHashToRenderer(SDL_Renderer* renderer, int chx, int chy, int xmin, int xmax, int ymin, int ymax, int distx, int disty) {
|
||||||
if(distx < render_distance && disty < render_distance) {
|
if(distx < render_distance && disty < render_distance) {
|
||||||
|
|
|
@ -209,6 +209,7 @@ void generate_chunk_all(int cx, int cy) {
|
||||||
if(is_compat_with_spins_uno(cx, cy, idx)) {
|
if(is_compat_with_spins_uno(cx, cy, idx)) {
|
||||||
i -= 1;
|
i -= 1;
|
||||||
if(i != 0) {
|
if(i != 0) {
|
||||||
|
rotateTemplateClockWise(idx);
|
||||||
if(k == 3) {
|
if(k == 3) {
|
||||||
idx = (idx+1)%n_configs;
|
idx = (idx+1)%n_configs;
|
||||||
k = 0 ;
|
k = 0 ;
|
||||||
|
@ -230,10 +231,7 @@ void generate_chunk_all(int cx, int cy) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
//printf("generating %d at (%d, %d)...\n", idx, cx, cy);
|
|
||||||
//print_template(idx);
|
|
||||||
int R = rand()%emptyChance;
|
int R = rand()%emptyChance;
|
||||||
//printf("%d/%d\n", R, emptyChance);
|
|
||||||
if(R != 0) {
|
if(R != 0) {
|
||||||
generate_chunk(cx, cy, idx);
|
generate_chunk(cx, cy, idx);
|
||||||
} else {
|
} else {
|
||||||
|
@ -346,7 +344,7 @@ void parse_configs(char* filename, int n_conf) {
|
||||||
configs[i].id = i;
|
configs[i].id = i;
|
||||||
configs[i].eastsig = 0 ;
|
configs[i].eastsig = 0 ;
|
||||||
configs[i].westsig = 0 ;
|
configs[i].westsig = 0 ;
|
||||||
configs[i].checkCompat = true ;
|
configs[i].checkCompat = doCheck ;
|
||||||
configs[i].lines = malloc(sizeof(uint8_t)*8);
|
configs[i].lines = malloc(sizeof(uint8_t)*8);
|
||||||
for(int j = 0; j < 8; j++) {
|
for(int j = 0; j < 8; j++) {
|
||||||
configs[i].lines[j] = 0;
|
configs[i].lines[j] = 0;
|
||||||
|
@ -357,7 +355,18 @@ void parse_configs(char* filename, int n_conf) {
|
||||||
FILE* ptr = fopen(filename, "r");
|
FILE* ptr = fopen(filename, "r");
|
||||||
FILE* ptr2 = fopen(filename, "r");
|
FILE* ptr2 = fopen(filename, "r");
|
||||||
|
|
||||||
|
// one pointer for data
|
||||||
|
// one pointer for counting
|
||||||
|
|
||||||
for(int k = 0; k < n_conf; k++) {
|
for(int k = 0; k < n_conf; k++) {
|
||||||
parse_one(ptr, ptr2, k);
|
parse_one(ptr, ptr2, k);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void change_configs(char* new_filename, int n_conf) {
|
||||||
|
for(int i = 0; i < n_conf; i++) {
|
||||||
|
free(configs[i].lines);
|
||||||
|
}
|
||||||
|
free(configs);
|
||||||
|
parse_configs(new_filename, n_conf);
|
||||||
|
}
|
|
@ -23,4 +23,6 @@ void destroy();
|
||||||
|
|
||||||
void parse_configs(char* filename, int n_conf);
|
void parse_configs(char* filename, int n_conf);
|
||||||
|
|
||||||
|
void change_configs(char* new_filename, int n_conf);
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -18,15 +18,18 @@
|
||||||
#include "generation.h"
|
#include "generation.h"
|
||||||
#include "move.h"
|
#include "move.h"
|
||||||
|
|
||||||
|
bool doCheck ;
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
|
|
||||||
if(argc != 3) {
|
if(argc != 4) {
|
||||||
fprintf(stderr, "usage : bin/back <template_pool> <n_templates>\n");
|
fprintf(stderr, "usage : bin/back <template_pool> <n_templates> <ckeckSideCompat>\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
};
|
};
|
||||||
|
|
||||||
char* filename = argv[1];
|
char* filename = argv[1];
|
||||||
int length = str_to_int(argv[2]);
|
int length = str_to_int(argv[2]);
|
||||||
|
doCheck = (bool)((int)argv[3][0] - 48);
|
||||||
|
|
||||||
srand(time(NULL));
|
srand(time(NULL));
|
||||||
|
|
||||||
|
|
|
@ -174,6 +174,7 @@ void moveControl(bool* halt) {
|
||||||
void moveFunctionMaster(SDL_Renderer* renderer) {
|
void moveFunctionMaster(SDL_Renderer* renderer) {
|
||||||
bool halt = false ;
|
bool halt = false ;
|
||||||
while(!halt) {
|
while(!halt) {
|
||||||
|
//clock_t start = clock();
|
||||||
moveControl(&halt);
|
moveControl(&halt);
|
||||||
resetRenderer(renderer);
|
resetRenderer(renderer);
|
||||||
drawMapToRenderer(renderer, -300 * 250/zoom + to_int(50 * (8*player_cx + player_x + εx)), 300 * 250/zoom + to_int(50 * (8*player_cx + player_x + εx)), -300 * 250/zoom + to_int(50 * (8*player_cy + player_y + εy)), 300 * 250/zoom + to_int(50 * (8*player_cy + player_y + εy)));
|
drawMapToRenderer(renderer, -300 * 250/zoom + to_int(50 * (8*player_cx + player_x + εx)), 300 * 250/zoom + to_int(50 * (8*player_cx + player_x + εx)), -300 * 250/zoom + to_int(50 * (8*player_cy + player_y + εy)), 300 * 250/zoom + to_int(50 * (8*player_cy + player_y + εy)));
|
||||||
|
@ -185,6 +186,8 @@ void moveFunctionMaster(SDL_Renderer* renderer) {
|
||||||
drawNumberToRenderer(renderer, digits, to_int(εy*100), 2 * __width__ / 3, 80, 50, 70, 0);
|
drawNumberToRenderer(renderer, digits, to_int(εy*100), 2 * __width__ / 3, 80, 50, 70, 0);
|
||||||
updateRenderer(renderer);
|
updateRenderer(renderer);
|
||||||
draw_par += 1 ;
|
draw_par += 1 ;
|
||||||
|
//clock_t end = clock();
|
||||||
|
//printf("Time(ms) : %f | FPS : %d\n", 1000.0f * (float)(end - start) / CLOCKS_PER_SEC, (int)(CLOCKS_PER_SEC / (float)(end - start)));
|
||||||
usleep(20000);
|
usleep(20000);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -15,6 +15,8 @@ typedef enum cardinal {NORTH, EAST, SOUTH, WEST} cardinal ;
|
||||||
|
|
||||||
extern Grid map ;
|
extern Grid map ;
|
||||||
|
|
||||||
|
extern bool doCheck ;
|
||||||
|
|
||||||
extern int emptyChance ;
|
extern int emptyChance ;
|
||||||
extern int sizeIncreaseChance ;
|
extern int sizeIncreaseChance ;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,244 @@
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
0 0 0 0 0 0 1 0
|
||||||
|
0 0 0 0 0 0 1 0
|
||||||
|
0 1 1 1 1 1 1 0
|
||||||
|
0 0 0 0 1 0 0 0
|
||||||
|
0 0 0 0 1 0 0 0
|
||||||
|
0 0 0 0 1 0 0 0
|
||||||
|
0 0 0 0 1 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
1 1 1 1 1 1 1 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 1 1 1 1 1 1 1
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 1 1 1 1 1 0
|
||||||
|
0 0 0 0 1 0 0 0
|
||||||
|
0 0 0 0 1 0 0 0
|
||||||
|
0 0 0 0 1 0 0 0
|
||||||
|
0 0 0 1 1 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
0 0 0 0 0 0 1 0
|
||||||
|
0 0 0 0 0 0 1 0
|
||||||
|
0 1 1 1 1 1 1 0
|
||||||
|
0 0 1 0 0 0 0 0
|
||||||
|
0 0 1 0 0 0 0 0
|
||||||
|
0 0 1 0 0 0 0 0
|
||||||
|
0 0 1 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
0 0 0 0 0 0 1 0
|
||||||
|
0 0 0 0 0 0 1 0
|
||||||
|
0 1 1 1 1 1 1 0
|
||||||
|
0 0 0 0 0 0 1 0
|
||||||
|
0 0 0 0 0 0 1 0
|
||||||
|
0 0 0 0 0 0 1 0
|
||||||
|
0 0 1 1 1 1 1 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
0 1 1 1 1 1 1 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 1 1 1 1 1 1 0
|
||||||
|
|
||||||
|
0 1 1 1 1 1 1 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 1 1 1 1 1 1 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
0 1 1 1 1 1 1 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 1 0 0 0 0
|
||||||
|
0 0 0 1 0 0 0 0
|
||||||
|
0 0 0 1 0 0 0 0
|
||||||
|
0 0 0 1 0 0 0 0
|
||||||
|
0 0 0 1 0 0 0 0
|
||||||
|
0 0 0 1 0 0 0 0
|
||||||
|
|
||||||
|
0 1 1 1 1 1 1 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 1 1 1 1 1 1 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 1 0 0
|
||||||
|
0 0 0 0 0 1 0 0
|
||||||
|
0 0 0 0 0 1 0 0
|
||||||
|
0 0 0 0 0 1 0 0
|
||||||
|
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 1 1 1 1 1 1 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 1 0 0 0
|
||||||
|
0 0 0 0 1 0 0 0
|
||||||
|
0 0 0 0 1 0 0 0
|
||||||
|
0 0 0 0 1 0 0 0
|
||||||
|
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 1 1 1 1 1 1 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 1 0 0
|
||||||
|
0 0 0 0 0 1 0 0
|
||||||
|
0 0 0 0 0 1 0 0
|
||||||
|
0 0 0 0 0 1 0 0
|
||||||
|
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 1 1 1 1 1 1 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 1 0 0 0
|
||||||
|
0 0 0 0 1 0 0 0
|
||||||
|
0 0 0 0 1 0 0 0
|
||||||
|
0 1 1 1 1 0 0 0
|
||||||
|
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 1 1 1 1 1 0 0
|
||||||
|
0 0 0 0 0 1 0 0
|
||||||
|
0 0 0 0 0 1 0 0
|
||||||
|
0 0 0 0 0 1 0 0
|
||||||
|
0 0 0 0 0 1 0 0
|
||||||
|
0 0 0 0 0 1 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
1 1 1 1 1 0 0 0
|
||||||
|
0 0 0 0 1 0 0 0
|
||||||
|
0 0 0 0 1 0 0 0
|
||||||
|
0 0 0 0 1 0 0 0
|
||||||
|
0 0 0 0 1 0 0 0
|
||||||
|
0 0 0 0 1 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
1 1 1 1 1 0 0 0
|
||||||
|
0 0 0 0 1 0 0 0
|
||||||
|
0 0 0 0 1 0 0 1
|
||||||
|
0 0 0 0 1 0 0 1
|
||||||
|
0 0 0 0 1 0 0 1
|
||||||
|
0 0 0 0 1 0 0 1
|
||||||
|
0 0 0 0 0 0 0 1
|
||||||
|
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
1 1 1 1 1 0 0 0
|
||||||
|
0 0 0 0 1 0 0 0
|
||||||
|
0 0 0 0 1 0 0 1
|
||||||
|
0 0 0 0 1 0 0 1
|
||||||
|
0 0 0 0 1 0 0 1
|
||||||
|
0 1 1 1 1 0 0 1
|
||||||
|
0 0 0 0 0 0 0 1
|
||||||
|
|
||||||
|
1 1 1 1 1 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 1 1 1 1 1 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 1 1 1 1 1
|
||||||
|
|
||||||
|
1 1 1 1 1 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 1 1 1 1 1 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 1 1 1 1 1 1 1
|
||||||
|
|
||||||
|
1 1 1 1 1 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 1 1 1 1 1 0 0
|
||||||
|
0 0 1 0 0 0 0 0
|
||||||
|
0 0 1 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 1 1 1 1 1
|
||||||
|
|
||||||
|
1 1 1 1 1 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 1 1 1 1 1 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 0 0 1
|
||||||
|
0 0 0 0 0 0 0 1
|
||||||
|
0 1 1 1 1 1 1 1
|
||||||
|
|
||||||
|
1 1 1 1 1 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 0 0 0 0 1 0 0
|
||||||
|
0 0 0 0 0 1 0 0
|
||||||
|
0 0 0 0 0 1 0 0
|
||||||
|
0 0 0 0 0 1 0 0
|
||||||
|
0 0 0 0 0 1 0 0
|
||||||
|
0 0 0 1 1 1 1 1
|
||||||
|
|
||||||
|
1 1 1 1 1 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 1 1 1 1 1
|
||||||
|
|
||||||
|
1 1 1 1 1 1 1 1
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 1 1 1 1 1
|
||||||
|
|
||||||
|
1 1 1 1 1 0 0 0
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 0 1 1 1 1
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 1 1 1 1 1
|
||||||
|
|
||||||
|
1 1 1 1 1 1 1 1
|
||||||
|
0 0 0 0 0 0 0 0
|
||||||
|
0 1 0 0 1 0 0 0
|
||||||
|
0 1 0 0 1 0 0 0
|
||||||
|
0 1 0 0 1 1 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 0 0 0 0 0
|
||||||
|
0 1 0 1 1 1 1 1
|
||||||
|
|
||||||
|
$
|
Loading…
Reference in New Issue