Build Tetris from provided starter code. The hardest requirement: the piece's fall timer normally stops while the player holds left or right, and you must synchronise it so the piece keeps descending instead of hanging in mid-air.
Asked in the onsite build task stage. The poster explains the requirement further in the comments and confirms the starter code provides the basic objects.
Implement advance_tetris_piece(state, elapsed_ms, held_keys, board_width, board_height). The state contains integer x, y, and fall_timer fields. Return a new state after applying one frame of input. Horizontal movement changes x by one cell, while gravity must always consume elapsed_ms, including when horizontal input is held. Use a 500 ms gravity interval and keep the piece inside the board.
def advance_tetris_piece(state, elapsed_ms, held_keys, board_width, board_height):