Ponchimeow/Practice

練習四:判斷圈圈叉叉勝負

Opened this issue · 0 comments

請寫出一個 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';
}