-let board_neighbors = (b : Board, origin : GridLocation) : States => {
- let rows = b.length;
- let cols = b[0].length;
- let offsets =
- [ {r: -1, k: -1}, {r: -1, k: 0}, {r: -1, k: 1}
- , {r: 0, k: -1}, {r: 0, k: 1}
- , {r: 1, k: -1}, {r: 1, k: 0}, {r: 1, k: 1}
- ];
- let offset_to_location =
- (offset) => {return {r: origin.r + offset.r, k: origin.k + offset.k}};
- let locations = offsets.map(offset_to_location);
- let is_location_within_bounds =
- ({r, k}) => {
- return r >= 0 && k >= 0 && r < rows && k < cols
+ export const to_string = (t : T) : string => {
+ switch (t)
+ { case "Dead" : return " "
+ ; case "Alive": return "o"
+ ; default : throw new TypeError("Illegal member of Life.State.T: " + t)
+ }