#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
#include <string.h>

#define MAX_SIZE 32768
#define RANGES 4
#define ALGS 8

//struct Alg_Data{
//uint16_t a[ALGS];
//};

int main(int argc, char **argv){
	//const unsigned char perm_4[4096][4] = {
	//{0,0,0,0},
	//...
	//{0,0,0,0}
	//};
//	uint32_t a, b, c, d;
	uint32_t min_a = 1;
	uint32_t min_b = 2;
	uint32_t min_c = 3;
	uint32_t min_d = 4;
	uint32_t max_a = MAX_SIZE-3;
	uint32_t max_b = MAX_SIZE-2;
	uint32_t max_c = MAX_SIZE-1;
	uint32_t max_d = MAX_SIZE;
	uint32_t combinations = 0;

	struct TEST{
		uint16_t a;
		uint16_t b;
		uint16_t c;
		uint16_t d;
		uint16_t e;
		uint16_t f;
		uint16_t g;
		uint16_t h;
	}a,b;

	(void)memset((void *)&a, '\0', sizeof(struct TEST));
	(void)memset((void *)&b, '\0', sizeof(struct TEST));

	a.a = 1;
	a.b = 2;
	b.b = 1;

	a += b;

	printf("%u %u\n", a.a, a.b);


//for(a=0; a<32768; a++){
//4*8 multiples
//32765*32765*32765 permutations
//}

/*
	for(d=min_d; d<max_d; d++){
		for(c=min_c; c<d ; c++){
			combinations += c-min_b;

//4.1 billion times here
//4116152316		process array[MAX_SIZE][ALGS]

//			combinations += b-min_a;
//			for(a=min_a; a<b ; a++){
//				combinations++;
//			}
		}
	}
	printf("%u\n", combinations);


	for(d=0; d<max_d; d++){
		//count rolling totals
	}
	for(c=min_c; c<max_c; c++){
		//calculate a/b
		for(alg=0; alg<ALGS; alg++){
			a[alg] = totals[b][alg]
		}
		for(a=min_a; a<(c-2); a++){
			//total_b = totals_c - totals_a

		}
		for(b=min_b; b<c; b++){
			//rolling total - b = a

		}
		//calculate c/d
		//rolling total - d = d
		//rolling total leftover = c
	}

*/

/*
        uint16_t wins[RANGES][ALGS];
        uint16_t wins_T[RANGES][ALGS] = {{1,2},{3,4}};

        (void)memset((void *)wins, '\0', sizeof(uint16_t)*RANGES*ALGS);
        //(void)memset((void *)wins_T, '\0', sizeof(uint16_t)*RANGES*ALGS);

	(void)memcpy((void *)&wins[1][0], (const void *)&wins_T[0][0], sizeof(uint16_t)*ALGS);
	for(a=0, d=4, c=4; a<RANGES; a++){
		for(b=0; b<ALGS; b++){
			printf("%u\n", wins[a][b]);
		}
	}
	printf("%u %u\n", c,d);

	printf("const unsigned char perm_4[4096][4] = {\n");
//	for(num1=0; num1<4096; num1++){

	for(a=0; a<8; a++){
		for(b=0; b<8; b++){
			for(c=0; c<8; c++){
				for(d=0; d<8; d++){
					printf("{%u,%u,%u,%u},\n", a, b, c, d);
				}
			}
		}
	}
*/
	return 0;
}
