如何用JavaScript实现3×3井字棋终局胜负判定程序
判断井字棋终局结果的JavaScript实现
问题概述
给定一个3×3的井字棋终局棋盘(仅包含x和o),需要编写程序判断比赛结果:
- 若
x获胜,输出x - 若
o获胜,输出o - 若无胜者,输出
Tie(平局)
输入要求
输入为3行文本,每行包含3个用空格分隔的字符(x或o)。
示例
输入:
x o x o x x o o o
输出:
o
实现代码
const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); let board = []; // 读取输入的3行棋盘数据 rl.on('line', (line) => { board.push(line.trim().split(' ')); if (board.length === 3) { rl.close(); } }).on('close', () => { const result = determineWinner(board); console.log(result); }); // 核心判断函数 function determineWinner(board) { // 检查所有行 for (const row of board) { if (row.every(cell => cell === row[0])) { return row[0]; } } // 检查所有列 for (let col = 0; col < 3; col++) { if (board[0][col] === board[1][col] && board[1][col] === board[2][col]) { return board[0][col]; } } // 检查两条对角线 if (board[0][0] === board[1][1] && board[1][1] === board[2][2]) { return board[0][0]; } if (board[0][2] === board[1][1] && board[1][1] === board[2][0]) { return board[0][2]; } // 无胜者,返回平局 return 'Tie'; }
代码说明
- 输入处理:通过
readline模块逐行读取输入,将每行分割为字符数组,最终构建成3×3的棋盘矩阵。 - 行检查:使用
every方法快速判断一行内的所有字符是否相同,若满足则直接返回该字符作为胜者。 - 列检查:遍历每一列索引,对比该列三个位置的字符是否一致。
- 对角线检查:分别验证两条对角线的字符是否全部相同。
- 结果返回:若上述检查都未找到胜者,返回
Tie表示平局。
内容的提问来源于stack exchange,提问作者Ankit Mandawkar
相关产品推荐
相关产品推荐

