本文整理汇总了C++中Sudoku::GetBox方法的典型用法代码示例。如果您正苦于以下问题:C++ Sudoku::GetBox方法的具体用法?C++ Sudoku::GetBox怎么用?C++ Sudoku::GetBox使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Sudoku
的用法示例。
在下文中一共展示了Sudoku::GetBox方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LockedCandidates
bool LockedCandidates(Sudoku &sudoku)
{
Log(Trace, "searching for locked candidates in line/box intersections\n");
// these locals are for logging purposes only
std::vector<Index_t> cellsChanged;
Index_t valChanged;
for (Index_t i = 0; i < 9; ++i) {
House line = sudoku.GetRow(i);
for (Index_t j = 0; j < 3; ++j)
{
Index_t boxIndex = BoxIndex(i, j*3);
House box = sudoku.GetBox(boxIndex);
if (IntersectionOfHouses(line, box, CommonCellsRowBox(i, boxIndex),
cellsChanged, valChanged)) {
std::ostringstream sstr;
for (Index_t k = 0; k < cellsChanged.size(); ++k) {
if (k != 0)
sstr << ", ";
sstr << 'r' << i+1 << 'c' << cellsChanged[k]+1 << '#'
<< valChanged;
}
Log(Info, "row %d intersection with box %d ==> %s\n",
i+1, boxIndex+1, sstr.str().c_str());
sudoku.SetRow(line, i);
return true;
}
if (IntersectionOfHouses(box, line, CommonCellsBoxRow(boxIndex, i),
cellsChanged, valChanged)) {
std::ostringstream sstr;
for (Index_t k = 0; k < cellsChanged.size(); ++k) {
if (k != 0)
sstr << ", ";
sstr << 'r' << i+1 << 'c'
<< ColForCellInBox(boxIndex, cellsChanged[k])+1 << '#'
<< valChanged;
}
Log(Info, "box %d intersection with row %d ==> %s\n",
boxIndex+1, i+1, sstr.str().c_str());
sudoku.SetBox(box, boxIndex);
return true;
}
}
line = sudoku.GetCol(i);
for (Index_t j = 0; j < 3; ++j)
{
Index_t boxIndex = BoxIndex(j*3, i);
House box = sudoku.GetBox(boxIndex);
if (IntersectionOfHouses(line, box, CommonCellsColBox(i, boxIndex),
cellsChanged, valChanged)) {
std::ostringstream sstr;
for (Index_t k = 0; k < cellsChanged.size(); ++k) {
if (k != 0)
sstr << ", ";
sstr << 'r' << cellsChanged[k]+1 << 'c' << i+1 << '#'
<< valChanged;
}
Log(Info, "column %d intersection with box %d ==> %s\n",
i+1, boxIndex+1, sstr.str().c_str());
sudoku.SetCol(line, i);
return true;
}
if (IntersectionOfHouses(box, line, CommonCellsBoxCol(boxIndex, i),
cellsChanged, valChanged)) {
std::ostringstream sstr;
for (Index_t k = 0; k < cellsChanged.size(); ++k) {
if (k != 0)
sstr << ", ";
sstr << 'r' << RowForCellInBox(boxIndex, cellsChanged[k])+1
<< 'c' << i+1 << '#' << valChanged;
}
Log(Info, "box %d intersection with column %d ==> %s\n",
boxIndex+1, i+1, sstr.str().c_str());
sudoku.SetBox(box, boxIndex);
return true;
}
}
}
return false;
}