标准规则:
一方出数字, 一方猜. 数字不重复. 出数者需根据猜的人给的数字给出几个A几个B.
A 代表位置且数字都正确
B 代表数字正确但位置不正确
例如: 出 4057
- 猜
1234, 则输出0A1B - 猜
5678, 则输出0A2B - 猜
3490, 则输出0A2B - 猜
1290, 则输出0A1B - 猜
0345, 则输出0A3B - 猜
4056, 则输出3A0B - 猜
4057, 则输出4A0B
标准规则:
一方出数字, 一方猜. 数字不重复. 出数者需根据猜的人给的数字给出几个A几个B.
A 代表位置且数字都正确
B 代表数字正确但位置不正确
例如: 出 4057
1234, 则输出 0A1B5678, 则输出 0A2B3490, 则输出 0A2B1290, 则输出 0A1B0345, 则输出 0A3B4056, 则输出 3A0B4057, 则输出 4A0B| export function generateTarget() { | |
| let digits = [] | |
| while(digits.length < 4) { | |
| let digit = Math.floor(Math.random() * 10).toString() | |
| if (!digits.includes(digit)) { | |
| digits.push(digit) | |
| } | |
| } | |
| return digits.join(''); | |
| } | |
| export function evaluateGuess(target, guess) { | |
| let A = 0 | |
| let B = 0 | |
| let targetArr = target.join('') | |
| let guessArr = guess.join('') | |
| for (let i = 0; i < 4; i++) { | |
| if (guessArr[i] === targetArr[i]) { | |
| A++ | |
| guessArr[i] = targetArr[i] = null | |
| } | |
| } | |
| for (let i = 0; i < 4; i++) { | |
| if (guessArr[i] !== null) { | |
| let index = targetArr.findIndex(t => t === guessArr[i]) | |
| if (index > -1) { | |
| B++ | |
| targetArr[i] = null | |
| } | |
| } | |
| } | |
| return A === 4 ? `Congratulations! You guessed it!` : `${A}A${B}B` | |
| } | |
| // ========== test =========== | |
| const target = generateTarget() | |
| const guess = `1234` | |
| evaluateGuess(target, guess) // output: |