# The Problem: You receive a (section of) a Conway's Game of Life grid. Your task is to output whether it represents a still-life (subsequent generations are identical to the current grid), a oscillator of period up to 4 (every nth generation is identical to the current grid), or something else. The remainder of the infinite grid consists of dead cells. ## Rules of the Game of Life If a dead cell is next to exactly three living cells, it becomes alive. Otherwise, it remains dead. If a living cell is next to 2 or 3 living cells, it stays alive. Otherwise, it dies. ## Input/Output formats Input and output can be by any reasonable method - list of locations of living cells, array of bools, one or more strings, etc. You cannot assume that dead cells are stripped from the edge of the input grid. Outputs must be any three consistent values ([still-life: 0, oscillator: 1, other: 2], for instance). For oscillators of period 5 or greater, output of "Oscillator" or "Other" are both acceptable. ## Examples (1 is living, 0 is dead) ``` INPUT OUTPUT 0 0 0 0 0 1 1 0 Still-Life 0 1 1 0 0 0 0 0 INPUT OUTPUT 1 1 1 0 Other INPUT OUTPUT 0 0 0 1 1 0 0 0 0 1 0 1 Still-Life 0 0 0 0 1 0 INPUT OUTPUT 0 1 0 0 0 1 Other 0 1 0 INPUT OUTPUT 0 1 0 1 Oscillator (period 2) 0 1 INPUT OUTPUT 1 1 0 0 1 1 0 0 Oscillator (period 2) 0 0 1 1 0 0 1 1 INPUT OUTPUT 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 Oscillator (period 3) 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 INPUT OUTPUT 1 1 0 0 0 1 1 0 1 0 1 0 1 0 0 1 1 0 1 1 0 Oscillator (period 4) 0 1 0 1 0 1 0 1 1 0 0 0 1 1 INPUT OUTPUT 1 1 1 1 0 0 Other (This is a glider - the same shape will repeat, but it will be shifted) 0 1 0 ``` This is [tag:code-golf]- the shortest answer in each language wins.