// 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");
}
コード例 #2
0
ファイル: algorithms.cpp プロジェクト: enunes/mazerush
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
}