#include #include #include const char * baseSvgFull = "\n\ \n\ \n\ \n\ \n\ \n\ \n\ \n\ \n\ \n\ \n"; const char * baseSvg = "\n\ \n\ \n\ \n\ \n\ \n\ \n\ \n\ \n"; const char * endSvg = ""; const char * lines[] = { " ", " ", " ", " ", " ", " ", " ", // point 1 " ", " ", " ", " ", " ", " ", // point 2 " ", " ", " ", " ", " ", // point 3 " ", " ", " ", " ", // point 4 " ", " ", " ", // point 5 " ", " ", // point 6 " " // point 7 }; const unsigned VERTICES = 8; unsigned int CONNECTIONS; unsigned int POSSIBILITIES; unsigned int connections (unsigned short n); int main(int argc, char *argv[]) { int x, bitop, mask; FILE * fp; char * filename; CONNECTIONS = connections(VERTICES); POSSIBILITIES = (unsigned int) pow(2, CONNECTIONS); for (x = 0; x < POSSIBILITIES; x++) { filename = calloc(32, sizeof(char)); sprintf(filename, "0x%00000008X.svg", x); fp = fopen(filename, "w"); if (fp == NULL) { perror("fopen"); return(EXIT_FAILURE); } fprintf(fp, "%s\n", baseSvgFull); for (bitop = 0; bitop < CONNECTIONS; bitop++) { mask = ((unsigned short) pow(2, bitop)) & x; if (mask > 0) { fprintf(fp, "%s\n", lines[bitop]); } } fprintf(fp, "%s\n\n", endSvg); if (fclose(fp) == EOF) { perror("fclose"); return(EXIT_FAILURE); } } return(EXIT_SUCCESS); } unsigned int connections (unsigned short n) { unsigned int x = 0; while (n > 0) x += --n; return(x); }