Puzzle Pattern Reasoning