#124
Analyze Reversi
| Difficulty: | Hard |
| Topics: | game |
Reversi is normally played on an 8 by 8 board. In this problem, a 4 by 4 board is represented as a two-dimensional vector with black, white, and empty pieces represented by 'b, 'w, and 'e, respectively. Create a function that accepts a game board and color as arguments, and returns a map of legal moves for that color. Each key should be the coordinates of a legal move, and its value a set of the coordinates of the pieces flipped by that move.
Board coordinates should be as in calls to get-in. For example, [0 1] is the topmost row, second column from the left.
![]() | (= {[1 3] #{[1 2]}, [0 2] #{[1 2]}, [3 1] #{[2 1]}, [2 0] #{[2 1]}}
(__ '[[e e e e]
[e w b e]
[e b w e]
[e e e e]] 'w)) |
![]() | (= {[3 2] #{[2 2]}, [3 0] #{[2 1]}, [1 0] #{[1 1]}}
(__ '[[e e e e]
[e w b e]
[w w w e]
[e e e e]] 'b)) |
![]() | (= {[0 3] #{[1 2]}, [1 3] #{[1 2]}, [3 3] #{[2 2]}, [2 3] #{[2 2]}}
(__ '[[e e e e]
[e w b e]
[w w b e]
[e e b e]] 'w)) |
![]() | (= {[0 3] #{[2 1] [1 2]}, [1 3] #{[1 2]}, [2 3] #{[2 1] [2 2]}}
(__ '[[e e w e]
[b b w e]
[b w w e]
[b w w w]] 'b))
|

