furthered structure.cpp with code segments. edited log class in solve.h
This commit is contained in:
@ -1,30 +1,81 @@
|
||||
|
||||
|
||||
bool next()
|
||||
bool next(vector<LogEntry>& log, vector<PuzzlePiece*>& p_Box, Puzzle& puzzleMat)
|
||||
{
|
||||
//case first log entry empty
|
||||
if(!(log.size())
|
||||
{
|
||||
log.push_back(LogEntry());
|
||||
solve(log, p_Box,puzzleMat);
|
||||
}
|
||||
|
||||
//calculates next move according to log
|
||||
//case puzzle solved
|
||||
else if(!(p_Box.size())
|
||||
return 0;
|
||||
|
||||
//case puzzle solved
|
||||
//return 0;
|
||||
//case last log multiple entries
|
||||
else if(log.back().PieceCollector.size() > 1)
|
||||
{
|
||||
//advance abstraction layer of last log by one and solve()
|
||||
//or pick first if highest level reached
|
||||
if(log.back().abstractionLayer < MAX_ABSTRAX)
|
||||
{
|
||||
log.back().advance();
|
||||
solve(log,p_Box,puzzleMat);
|
||||
}
|
||||
else
|
||||
{
|
||||
setsolution(log,p_Box,puzzleMat);
|
||||
}
|
||||
}
|
||||
|
||||
//case last log empty
|
||||
//backtrack
|
||||
//case last log exactly one solution
|
||||
else if(log.back().PieceCollector.size() == 1)
|
||||
{
|
||||
//create new log, put next coordinates in and go into solve. then git gud
|
||||
log.push_back(LogEntry());
|
||||
log.back().myCoor = getNextCoor(log, p_Box, puzzleMat);
|
||||
solve(log, p_Box,puzzleMat);
|
||||
}
|
||||
|
||||
//case last log exactly one solution
|
||||
//put all remaining puzzle pieces into new log entry
|
||||
//try next piece/place with solve abstraction level 0
|
||||
//case last log empty
|
||||
//backtrack
|
||||
else if(log.back().PieceCollector.size() == 0)
|
||||
{
|
||||
backtrack(log,p_Box,puzzleMat);
|
||||
}
|
||||
|
||||
//case last log multiple entries
|
||||
//advance abstraction layer of last log by one and solve()
|
||||
//or pick first if highest level reached
|
||||
|
||||
//return 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
void solve()
|
||||
|
||||
coor calculateFirstCoor(vector<LogEntry>& log, vector<PuzzlePiece*>& p_Box, Puzzle& puzzleMat)
|
||||
{
|
||||
//case
|
||||
//returns coor of first piece
|
||||
coor firstCoor(0,0);
|
||||
return firstCoor;
|
||||
}
|
||||
|
||||
coor calculateNextCoor(vector<LogEntry>& log, vector<PuzzlePiece*>& p_Box, Puzzle& puzzleMat)
|
||||
{
|
||||
//level 1:
|
||||
//go left to right, then increase current row
|
||||
|
||||
//if
|
||||
|
||||
//return nextCoor;
|
||||
}
|
||||
|
||||
void solve(vector<LogEntry>& log, vector<PuzzlePiece*>& p_Box, Puzzle& puzzleMat)
|
||||
{
|
||||
switch(log.back().abstraction==0)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
if()
|
||||
//abstraction layer = 0
|
||||
//go to abstraction layer 0 solver
|
||||
|
||||
@ -37,19 +88,18 @@ void solve()
|
||||
|
||||
void abstractionlayer0solver()
|
||||
{
|
||||
//throw all remaining puzzle pieces into log
|
||||
//remove all impossible
|
||||
//throw all remaining puzzle pieces into newest log
|
||||
}
|
||||
|
||||
void abstractionlayer1solver()
|
||||
{
|
||||
//remove all impossible according to abstraction layer one
|
||||
//remove all impossible from newest log according to abstraction layer one
|
||||
}
|
||||
|
||||
void setsolution()
|
||||
{
|
||||
//put
|
||||
//set pointer to log into matrix
|
||||
//remove first element in last logelement from box
|
||||
//set pointer to this element into matrix
|
||||
}
|
||||
|
||||
void backtrack()
|
||||
|
Reference in New Issue
Block a user