У меня есть следующий код функции в C ++
bool SolveSudoku(int grid[N][N])
{
int row, col;
if (!FindUnassignedLocation(grid, row, col))
return true;
for (int num = 1; num <= 9; num++)
{
if (isSafe(grid, row, col, num))
{
grid[row][col] = num;
if (SolveSudoku(grid))
return true;
grid[row][col] = UNASSIGNED;
}
}
return false;
}
Проблема, с которой я здесь сталкиваюсь, заключается в том, что в операторе if мне нужно сначала выполнить операцию, а затем вернуть логическое значение. И Ocaml не помогает в этом случае с разными возвращаемыми значениями в одном и том же операторе if.
Взгляните на исходный код OCaml версии судоку:
https://github.com/VictorNicollet/99-Problems-OCaml/blob/master/91-99/p97.ml