3x3 Tic tac toeゲームで勝者を見つける最良の最適な方法は、ボードが行列で表されるゲームですか?提案してくださいtic tac toeの勝者を見つけるアルゴリズム
答えて
Booleans
の二次元配列を使用しているとします。ブール値は3つの値(null、true、false)を持つことができるためです。常に2人のプレイヤーしかプレイできないので、3つの値が必要です。未定義のプレーヤー1とプレーヤー2
Boolean
の配列は、1
以上のサイズであれば動作します。 の場合はtrue
、false
の場合はfalse
、勝者がいない場合はnull
が返されます。
public static Boolean getWinner(Boolean[][] grid) {
if (grid == null)
return null;
int size = grid.length;
if (size == 0)
return null;
if (size == 1 && (grid[0][0] != null)) {
return grid[0][0];
}
boolean flag = true;
// checks horizontal
for (int index = 0; index <= size - 1; index++) {
flag = true;
for (int i = 1; i <= size - 1; i++) {
if (grid[index][i] != grid[index][i - 1]) {
flag = false;
break;
}
}
if (flag)
return grid[index][0];
}
// checks vertical
for (int index = 0; index <= size - 1; index++) {
flag = true;
for (int i = 1; i <= size - 1; i++) {
if (grid[i][index] != grid[i - 1][index]) {
flag = false;
break;
}
}
if (flag)
return grid[0][index];
}
// checks diagonal
flag = true;
for (int index = 1; index <= size - 1; index++) {
if (grid[index][index] != grid[index - 1][index - 1]) {
flag = false;
break;
}
}
if (flag)
return grid[0][0];
flag = true;
for (int index = 1; index <= size - 1; index++) {
if (grid[size - index - 1][index] != grid[size - index][index - 1]) {
flag = false;
break;
}
}
if (flag)
return grid[size - 1][0];
return null;
}
追記: あなたがEnum
代わりのBoolean
を使用している場合は、あなただけのequals
ありがとう私はそれを正常に実装! –
これらの機能はそれを行う必要があります。私はチックタックつま先を作ったときに文字配列を使いました。
int rowcheck(char ch[3][3])
{
int i;
char ans;
for(i=0;i<3;i++)
{
if(ch[i][0]==ch[i][1] && ch[i][1]==ch[i][2])
{
ans=ch[i][0];
break;
}
}
if(ans=='O')
return 1;
else if(ans=='X')
return 2;
else
return 0;
}
int colcheck(char ch[3][3])
{
int i;
char ans;
for(i=0;i<3;i++)
{
if(ch[0][i]==ch[1][i] && ch[1][i]==ch[2][i])
{
ans=ch[0][i];
break;
}
}
if(ans=='O')
return 1;
else if(ans=='X')
return 2;
else
return 0;
}
int diagcheck(char ch[3][3])
{
char ans;
if(ch[0][0]==ch[1][1] && ch[1][1]==ch[2][2])
ans=ch[0][0];
if(ch[0][2]==ch[1][1] && ch[1][1]==ch[2][0])
ans=ch[0][2];
if(ans=='O')
return 1;
else if(ans=='X')
return 2;
else
return 0;
}
プレーヤー1が返された場合は勝者2が勝ちます。詳細は、このリンクをチェックアウト :
https://keepkoding.wordpress.com/2015/12/12/everybody-knows-tic-tac-toe/
心にあなたを、このリンクはCである++が、ロジックが理解するのは簡単です。
はい私は論理感謝を理解しました! –
しかし、時間の複雑さが少ないなど、より良い方法はありますか? –
平等をチェックする必要がある場合は、これよりも良い方法はありません。また、Tic Tac Toeをプレイしていると考えると、時間の複雑さを減らす理由はありません。しかし、もし必要ならば、最も簡単な方法は、少なくとも6回の移動が完了するまで、そのようなチェックを行わないことです。わずか9回の移動しか行えないと考えると、これは時間の2/3以上を短縮します。あなたが私の答えが好きだったら、それをupvoteしてください。 –
- 1. Tic Tac Toe- Reactで勝者を見つける
- 2. 拡張Tic-Tac-Toe、勝者(Java)をチェックする際のトラブル
- 3. tic-tac-toeの勝者を確認する - NumPy/Python
- 4. Tic-Tac-Toeが勝者を確認する
- 5. Tic Tac Toeプログラムが勝者を特定していない
- 6. Tic Tac Toeプレーヤーが勝者でない場合は?
- 7. Tic Tac Toeのminimaxアルゴリズムの可能な動きを見つける
- 8. Tic Tac ToeのMinimaxアルゴリズムのバグ
- 9. javascript tic tac toe
- 10. Minmax tic-tac-toe
- 11. Tic-Tac-Toeプログラミング
- 12. Tic-tac-toe prog
- 13. Tic Tac Toe Program
- 14. Tic Tac Toe Score
- 15. Tic-tac-toeゲームグラフデザイン?
- 16. tic tac toe app
- 17. Tic tac toeアルゴリズム5x5テーブル4列
- 18. MinimaxアルゴリズムTic Tac Toe中間状態
- 19. tic-tac-toeのミニマム
- 20. tic-tac-toeのニューラルネットワーク
- 21. JAVA Tic-Tac-Toe Minimaxアルゴリズムは例外をスローし続ける
- 22. C++ Tic-Tac-Toeプログラム
- 23. React Tic Tac Toeチュートリアル
- 24. TIC TAC TOE GAME - python
- 25. Tic Tac Toe Board - Java
- 26. Tic Tac Toe WinCheck Def
- 27. C++ Tic Tac Toe Game
- 28. tic-tac-toe whileと||
- 29. TIC-tac-toe in VHDL
- 30. Java Tic Tac Toe Networking
とIFSの束を最初の行とすべての
==
上の2つのBooleans
を変更する必要があります... – user1121883[Tic Tac Toe java](http://stackoverflow.com/questions/10961749/tic-tac-toe-java)の可能な複製 –