練習四:判斷圈圈叉叉勝負
Opened this issue · 0 comments
Ponchimeow commented
請寫出一個 function winner,接收一個代表圈圈叉叉的陣列,並回傳贏的是 O 還是 X,如果平手或還沒下完,請回傳 draw。
winner([
['O', 'O', 'X'],
['O', 'X', 'X'],
['O', 'X', 'O']
]) 預期回傳值:O
winner([
['O', 'O', 'X'],
['O', 'X', 'X'],
['X', 'X', 'O']
]) 預期回傳值:X
winner([
['O', 'O', 'X'],
['O', 'O', 'X'],
['X', 'X', '']
]) 預期回傳值:draw
// [0][0] [0][1] [0][2]
// [1][0] [1][1] [1][2]
// [2][0] [2][1] [2][2]
// 直線
function straight(arr) {
let a, b;
for (let i = 0; i < 3; i += 1) {
if (arr[i][0] === arr[i][1] && arr[i][1] === arr[i][2]) {
return arr[i][0];
}
if (arr[0][i] === arr[1][i] && arr[1][i] === arr[2][i]) {
return arr[0][i];
}
}
return false
}
// 斜線
function slash(arr) {
if (arr[0][0] === arr[1][1] && arr[1][1] === arr[2][2]) {
return arr[1][1];
} else if (arr[0][2] === arr[1][1] && arr[1][1] === arr[2][0]) {
return arr[1][1];
} else return false;
}
function winner(arr) {
if (straight(arr) != false) return straight(arr);
if (slash(arr) != false) return slash(arr);
else return 'draw';
}