私はこのプロローグ述語に苦しんでいます: board(Before,_,After)
.
は、'a'、'b'、'c'、または 'd' のいずれかの文字のリストのリストBefore
です (リスト内のリストの長さは同じです)。例えば:
[[c,c,c,c,c],[a,a,a,a,c],[a,b,b,a,c],[b,d,b,a,c],[d,b,b,a,c]]
After を取得するには、まず Before を次のように表します。
ccccc
aaaac
abbac
bdbac
dbbac
実はこれが囲碁の盤面です(この場合は5×5)。「c」と「d」は空きスペースです。'a' は白い石で、'b' は黒い石です。'c' と 'd' は常に 'rr' にマップしてください。生きている場合は「a」を「ar」に、死んでいる場合は「ad」にマッピングします。「b」についても同様です。この場合、
?- board([[c,c,c,c,c],[a,a,a,a,c],[a,b,b,a,c],[b,d,b,a,c],[d,b,b,a,c]],_,After).
After = [[rr,rr,rr,rr,rr],[ar,ar,ar,ar,rr],[ar,br,br,ar,rr],[br,rr,br,ar,rr],[rr,br,br,ar,rr]]
実際、この問題を解決するために DFS を使用しようとしましたが、失敗しました。Prolog と Go のいくつかの基本的なルールを知っている人は、この述語を実装できますか? どうもありがとう!