aboutsummaryrefslogtreecommitdiff
path: root/challenge-335/roger-bell-west/javascript/ch-2.js
blob: a3eda215659fcad077b4109cdb0ffa90af7c7627 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#! /usr/bin/node

"use strict"

function findwinner(a) {
    let board = [ [0, 0, 0], [0, 0, 0], [0, 0, 0] ];
    let player = 1;
    for (let play of a) {
        board[play[0]][play[1]] = player;
        player = 3 - player;
    }
    for (let pattern of [
        [0, 0, 1, 0],
        [0, 1, 1, 0],
        [0, 2, 1, 0],
        [0, 0, 0, 1],
        [1, 0, 0, 1],
        [2, 0, 0, 1],
        [0, 0, 1, 1],
        [0, 2, 1, -1]
    ]) {
        let cellvals = new Set;
        for (let i = 0; i <= 2; i++) {
            const x = pattern[0] + i * pattern[2];
            const y = pattern[1] + i * pattern[3];
            cellvals.add(board[y][x]);
        }
        if (cellvals.size == 1) {
            let winner = [...cellvals][0];
            if (winner == 1) {
                return "A";
            } else if (winner == 2) {
                return "B";
            }
        }
    }
    if (a.length == 9) {
        return "Draw";
    } else {
        return "Pending";
    }
}

if (findwinner([[0, 0], [2, 0], [1, 1], [2, 1], [2, 2]]) == 'A') {
  process.stdout.write("Pass");
} else {
  process.stdout.write("FAIL");
}
process.stdout.write(" ");
if (findwinner([[0, 0], [1, 1], [0, 1], [0, 2], [1, 0], [2, 0]]) == 'B') {
  process.stdout.write("Pass");
} else {
  process.stdout.write("FAIL");
}
process.stdout.write(" ");
if (findwinner([[0, 0], [1, 1], [2, 0], [1, 0], [1, 2], [2, 1], [0, 1], [0, 2], [2, 2]]) == 'Draw') {
  process.stdout.write("Pass");
} else {
  process.stdout.write("FAIL");
}
process.stdout.write(" ");
if (findwinner([[0, 0], [1, 1]]) == 'Pending') {
  process.stdout.write("Pass");
} else {
  process.stdout.write("FAIL");
}
process.stdout.write(" ");
if (findwinner([[1, 1], [0, 0], [2, 2], [0, 1], [1, 0], [0, 2]]) == 'B') {
  process.stdout.write("Pass");
} else {
  process.stdout.write("FAIL");
}
process.stdout.write("\n");