ボードはint[][]
であり、私はそれがすべて4が対称(回転)だと、この形状ボード(20x20)のパターン/形状一致/認識を行う方法は?
1
1
1
を見つけたいボードから変異体および位置を記録します。例:
...
...
... x x x x x x ...
... x x 1 1 x x ...
... x 1 x x x x ...
... x x x x x x ...
...
...
このような問題に対処するためにF#を使用する方がよいですか?
以下は垂直方向にのみパターンをチェックするための私のC#コードである(水平にチェックするためのコードがsimillarある)
List<Position> GetMatchVertical(int reelID)
{
List<Position> ret = new List<Position>();
var myReel = board[reelID];
var leftReel = reelID - 1 >= 0 ? board[reelID - 1] : null;
var rightReel = reelID + 1 < boardSize ? board[reelID + 1] : null;
int currentColor = myReel[0];
for (int reelPosition = 1; reelPosition < boardSize; reelPosition++)
{
int nextColor = myReel[reelPosition];
if (currentColor == nextColor)
{
if (leftReel!=null)
{
if (reelPosition + 1 < boardSize && leftReel[reelPosition + 1] == currentColor)
{
ret.Add(logPosition(...));
}
}
if (rightReel!=null)
{
if (reelPosition - 2 >= 0 && rightReel[reelPosition - 2] == currentColor)
{
ret.Add(logPosition(...));
}
}
}
else
{
currentColor = nextColor;
}
}
return ret;
}
パズルゲーム用のクリッカーを書いていますか? – Dmytro
確かに機能的な言語のように聞こえますが、よりフィット感があります。 –