728x90
Instructions.
If we were to set up a Tic-Tac-Toe game, we would want to know whether the board's current state is solved, wouldn't we? Our goal is to create a function that will check that for us!
틱택토 게임을 만들었다면, 보드의 현재 상태가 해결됐는지 여부를 알고 싶지 않은가? 우리의 목표는 그것을 확인할 함수를 만들어내는 것이다.
Assume that the board comes in the form of a 3x3 array, where the value is 0 if a spot is empty, 1 if it is an "X", or 2 if it is an "O", like so:
[[0, 0, 1],
[0, 1, 2],
[2, 1, 0]
]
보드가 3X3칸의 폼이라고 가정하고, 값이 비어있을 경우에는 0을, "X"값일 경우에는 1을 "O"값일 때는 2의 값을 갖는다.
We want our function to return:
- -1 : if the board is not yet finished AND no one has won yet(there are empty spot)
- 1 : if "X" won
- 2: if "O" won
- 0 : if it's a cat's game(i.e. a draw)
You may assume that the board passed in is valid in the context of a game of Tic-Tac-Toe.
우리는 함수가 다음과 같이 반환하도록 한다.
- -1 : 승패가 갈리지 않았거나 아직 아무도 이긴 사람이 없을 때(빈 칸이 있을 때)
- 1 : "X"가 이김
- 2 : "O"가 이김
- 0 : 비겼을 때(즉, 무승부)
전달된 보드가 Tic-Tac-Toe 게임의 맥락에서 유효하다고 가정할 수 있다.
Solution.
function isSolved(board) {
if(checkBoard(1, board)) {
return 1;
} else if(checkBoard(2, board)) {
return 2;
} else if(JSON.stringify(board).includes("0")) {
return -1;
} else {
return 0;
}
function checkBoard(value, board) {
if(
(board[0][0] === value && board[0][1] === value && board[0][2] === value) ||
(board[1][0] === value && board[1][1] === value && board[1][2] === value) ||
(board[2][0] === value && board[2][1] === value && board[2][2] === value) ||
(board[0][0] === value && board[1][0] === value && board[2][0] === value) ||
(board[0][1] === value && board[1][1] === value && board[2][1] === value) ||
(board[0][2] === value && board[1][2] === value && board[2][2] === value) ||
(board[0][0] === value && board[1][1] === value && board[2][2] === value) ||
(board[0][2] === value && board[1][1] === value && board[2][0] === value)
) {
return true;
} else {
return false;
}
}
}
Best Solution.
function isSolved(board) {
board = board.join('-').replace(/,/g,'');
if(/222|2...2...2|2....2....2|2..2..2/.test(board)) return 2;
if(/111|1...1...1|1....1....1|1..1..1/.test(board)) return 1;
if(/0/.test(board)) return -1;
return 0;
}
'1Day 1Practice' 카테고리의 다른 글
[codewars] Sum of pairs (0) | 2022.08.05 |
---|---|
[codewars] pick peaks (0) | 2022.08.04 |
[codewars] Simple Pig Latin (0) | 2022.08.02 |
[codewars] Moving Zeros To The End (0) | 2022.07.12 |
[codewars] Count characters in your string (0) | 2022.07.08 |