小编Min*_*han的帖子

将C++代码翻译成Haskell

我试图将这段c ++代码翻译成haskell但不能真正理解它.这取自http://cs.stanford.edu/people/eroberts/courses/cs106b/chapters/07-backtracking-algorithms.pdf中的nim.cpp .

C++:

const int MAX_MOVE = 3;
const int NO_GOOD_MOVE = -1;

int FindGoodMove(int nCoins) {
    for (int nTaken = 1; nTaken <= MAX_MOVE; nTaken++) {
        if (IsBadPosition(nCoins - nTaken)) return nTaken;
    }
    return NO_GOOD_MOVE;
}

bool IsBadPosition(int nCoins) {
    if (nCoins == 1) return true;
    return FindGoodMove(nCoins) == NO_GOOD_MOVE;
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我在haskell做了:

findGoodMove nCoins = if isBadPosition (nCoins - nTaken) == True
                        then nTaken
                        else -1
                    where nTaken = 1

isBadPosition nCoins = if nCoins == …
Run Code Online (Sandbox Code Playgroud)

c++ haskell

3
推荐指数
1
解决办法
255
查看次数

标签 统计

c++ ×1

haskell ×1