// generate all sequences of given length, of zeros and ones // E.g. for len = 3: 000, 001, 010, 011, 100, 101, 110, 111 // "" Count=1 // 0 1 Count=2 // 00 01 10 11 Count=4 // 000 001 010 011 100 101 110 11 Count=8 // void generateBinary(int len, string cur = "") // recursion state: integer, string { if(len == 0) { cout<<cur<<"\n"; return; } // At each level, we branch twice...draw this tree generateBinary(len-1, cur + "0"); generateBinary(len-1, cur + "1"); }
void buildMaze(GLMaze &walls, Matrix<Cell> &graphSpace, Matrix<char> &tileSpace, unsigned int tilesize, unsigned int texwall, unsigned int texfloor, unsigned int texceil, ConfigInfo *config) { graphSpace = Matrix<Cell>(config->matrixDimensions); int algorithm = config->algorithm; switch (algorithm) { case PRIM: generatePrim(graphSpace); break; case DFS: generateDFS(graphSpace); break; case DRUNK: generateDrunk(graphSpace); break; case KRUSKAL: generateKruskal(graphSpace); break; case BINARY: generateBinary(graphSpace); break; case OLDEST: generateOldest(graphSpace); break; case SUBDIVISION: generateSubdivision(graphSpace); break; case RANDOM: /* FALLTHROUGH */ default: generateRandom(graphSpace); break; } tileSpace = generateTileSpace(graphSpace); walls.buildAll(tileSpace, tilesize); walls.buildAABB(tileSpace, tilesize); walls.texWall = texwall; walls.texFloor = texfloor; walls.texCeil = texceil; #if defined DEVEL_SHOW_MAZE std::cout << "Generated using [" << AlgorithmTable[algorithm].name << "]" << std::endl << std::endl; std::cout << tileSpace << std::endl; #endif }