Build a Tetris console app from given starter code.
Implement the game engine for a rectangular board. Each move provides a tetromino type, rotation index, and starting column. Drop the piece until it contacts the floor or existing blocks, place it, remove every completed row, and return the final board.
Use . for empty cells and # for occupied cells. The function accepts board, a list of equal-length strings, and moves, a list of objects with type, rotation, and column; it returns the resulting board as a list of strings. Assume every move can be placed without game over.
Example: a 6x6 empty board with one O piece at column 2 returns two rows containing ..##.. at the bottom.
. or #I, O, T, J, L, S, or Zdef play_tetris(board, moves):