void GemPuzzleState::MakeBoard(const char* str){
    
    _size = ParseToState(str);
    //TODO what is the right way of using assert here
    //assert(!(size == 17 || size == 25)&&"The state is not valid!\n");
    _dim = sqrt(_size);

    for(int i=0;i<_size;i++){
        vector<int> list;
        _edges.push_back(list);
    }
        
    for (int i = 0; i < _dim; i++) {   
        for (int j = 0; j < _dim; j++) {
            MakeEdges(i,j,_edges[POS(i,j,_dim)]);
        }
    }
        
}
Beispiel #2
0
int main(int argc, char **argv)
{
	FILE *fp = fileOpen(c_getOutFile("IsJChar_Java.txt"), "wb");
	int chr;
	uint index;

	MakeEdges();

	for(index = 0; index < getCount(Edges); index += 2)
	{
		int bgn = (int)getElement(Edges, index);
		int end = (int)getElement(Edges, index + 1);

		writeLine_x(fp, xcout("this.add(0x%04x, 0x%04x);", bgn, end));
	}
	fileClose(fp);

	openOutDir();
}
	void PluginTreeBuilder::Calculate ()
	{
		Graph_.clear ();
		Object2Vertex_.clear ();
		Result_.clear ();

		CreateGraph ();
		QMap<Edge_t, QPair<Vertex_t, Vertex_t> > edge2vert = MakeEdges ();

		QMap<Vertex_t, QList<Vertex_t> > reachable;
		QPair<Vertex_t, Vertex_t> pair;
		Q_FOREACH (pair, edge2vert)
			reachable [pair.first] << pair.second;

		QList<Edge_t> backEdges;
		CycleDetector<Edge_t> cd (backEdges);
		boost::depth_first_search (Graph_, boost::visitor (cd));

		QList<Vertex_t> backVertices;
		Q_FOREACH (const Edge_t& backEdge, backEdges)
			backVertices << edge2vert [backEdge].first;

		FulfillableChecker<Graph_t, Vertex_t> checker (Graph_, backVertices, reachable);
		boost::depth_first_search (Graph_, boost::visitor (checker));

		typedef boost::filtered_graph<Graph_t, boost::keep_all, VertexPredicate<Graph_t> > fg_t;
		fg_t fg = fg_t (Graph_,
				boost::keep_all (),
				VertexPredicate<Graph_t> (Graph_));

		QList<Vertex_t> vertices;
		boost::topological_sort (fg,
				std::back_inserter (vertices));
		Q_FOREACH (const Vertex_t& vertex, vertices)
			Result_ << fg [vertex].Object_;
	}